brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1022 B · 8da5f35 Raw
37 lines · plain
1; Test stack pointer restore after setjmp() with the function-call safestack ABI.2; RUN: opt -safe-stack -S -mtriple=arm-linux-androideabi < %s -o - | FileCheck %s3; RUN: opt -passes=safe-stack -S -mtriple=arm-linux-androideabi < %s -o - | FileCheck %s4 5@env = global [64 x i32] zeroinitializer, align 46 7define void @f(i32 %b) safestack {8entry:9; CHECK: %[[SPA:.*]] = call ptr @__safestack_pointer_address()10; CHECK: %[[USP:.*]] = load ptr, ptr %[[SPA]]11; CHECK: %[[USDP:.*]] = alloca ptr12; CHECK: store ptr %[[USP]], ptr %[[USDP]]13; CHECK: call i32 @setjmp14 15  %call = call i32 @setjmp(ptr @env) returns_twice16 17; CHECK: %[[USP2:.*]] = load ptr, ptr %[[USDP]]18; CHECK: store ptr %[[USP2]], ptr %[[SPA]]19 20  %tobool = icmp eq i32 %b, 021  br i1 %tobool, label %if.end, label %if.then22 23if.then:24  %0 = alloca [42 x i8], align 125  call void @_Z7CapturePv(ptr %0)26  br label %if.end27 28if.end:29; CHECK: store ptr %[[USP:.*]], ptr %[[SPA:.*]]30 31  ret void32}33 34declare i32 @setjmp(ptr) returns_twice35 36declare void @_Z7CapturePv(ptr)37