1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 4 2; RUN: opt -o - -S %s -passes=instcombine | FileCheck %s 3 4@tlsvar_a4 = thread_local global i32 4, align 4 5 6define void @func_increase_alignment() { 7; CHECK-LABEL: define void @func_increase_alignment() { 8; CHECK-NEXT: [[P:%.*]] = call align 4 ptr @llvm.threadlocal.address.p0(ptr @tlsvar_a4) 9; CHECK-NEXT: store i32 42, ptr [[P]], align 2 10; CHECK-NEXT: ret void 11; 12 %p = call align 2 ptr @llvm.threadlocal.address(ptr @tlsvar_a4) 13 store i32 42, ptr %p, align 2 14 ret void 15} 16 17@tlsvar_a32 = thread_local global i32 5, align 32 18 19define i1 @func_add_alignment() { 20; CHECK-LABEL: define i1 @func_add_alignment() { 21; CHECK-NEXT: ret i1 true 22; 23 %p = call ptr @llvm.threadlocal.address(ptr @tlsvar_a32) 24 %p_int = ptrtoint ptr %p to i32 25 %lowbits = and i32 %p_int, 31 26 %zero = icmp eq i32 %lowbits, 0 27 ret i1 %zero 28} 29 30@tlsvar_a1 = thread_local global i8 6, align 1 31 32define i1 @func_dont_reduce_alignment() { 33; CHECK-LABEL: define i1 @func_dont_reduce_alignment() { 34; CHECK-NEXT: ret i1 true 35; 36 %p = call align 4 ptr @llvm.threadlocal.address(ptr @tlsvar_a1) 37 %p_int = ptrtoint ptr %p to i32 38 %lowbits = and i32 %p_int, 3 39 %zero = icmp eq i32 %lowbits, 0 40 ret i1 %zero 41} 42