30 lines · plain
1; RUN: sed -e "s/ATTR//" %s | llc -mtriple=x86_64-linux -safestack-use-pointer-address | FileCheck --check-prefix=INLINE %s2; RUN: sed -e "s/ATTR/noinline/" %s | llc -mtriple=x86_64-linux -safestack-use-pointer-address | FileCheck --check-prefix=CALL %s3 4@p = external thread_local global ptr, align 85 6define nonnull ptr @__safestack_pointer_address() local_unnamed_addr ATTR {7entry:8 ret ptr @p9}10 11define void @_Z1fv() safestack {12entry:13 %x = alloca i32, align 414 call void @_Z7CapturePi(ptr nonnull %x)15 ret void16}17 18declare void @_Z7CapturePi(ptr)19 20; INLINE: movq p@GOTTPOFF(%rip), %[[A:.*]]21; INLINE: movq %fs:(%[[A]]), %[[B:.*]]22; INLINE: leaq -16(%[[B]]), %[[C:.*]]23; INLINE: movq %[[C]], %fs:(%[[A]])24 25; CALL: callq __safestack_pointer_address26; CALL: movq %rax, %[[A:.*]]27; CALL: movq (%rax), %[[B:.*]]28; CALL: leaq -16(%[[B]]), %[[C:.*]]29; CALL: movq %[[C]], (%[[A]])30