brintos

brintos / llvm-project-archived public Read only

0
0
Text · 883 B · 87e7f51 Raw
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