1*9880d681SAndroid Build Coastguard Worker; RUN: llc -o - < %s | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Workertarget datalayout = "e-m:o-i64:64-i128:128-n32:64-S128" 4*9880d681SAndroid Build Coastguard Workertarget triple = "x86_64-apple-macosx" 5*9880d681SAndroid Build Coastguard Worker 6*9880d681SAndroid Build Coastguard Worker; Even if the target supports shrink-wrapping, the prologue and epilogue 7*9880d681SAndroid Build Coastguard Worker; must not move because a crash can happen anywhere and sanitizers need 8*9880d681SAndroid Build Coastguard Worker; to be able to unwind from the PC of the crash. 9*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: sanitize: 10*9880d681SAndroid Build Coastguard Worker; CHECK: pushq 11*9880d681SAndroid Build Coastguard Worker; CHECK: incl 40 12*9880d681SAndroid Build Coastguard Worker; CHECK: popq 13*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 14*9880d681SAndroid Build Coastguard Worker; CHECK: movl $40, %edi 15*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT callq ___asan_report_load4 16*9880d681SAndroid Build Coastguard Workerdefine void @sanitize() #0 { 17*9880d681SAndroid Build Coastguard Workerentry: 18*9880d681SAndroid Build Coastguard Worker %tmp = load i8, i8* inttoptr (i64 17592186044421 to i8*) 19*9880d681SAndroid Build Coastguard Worker %tmp1 = icmp ne i8 %tmp, 0 20*9880d681SAndroid Build Coastguard Worker br i1 %tmp1, label %if.then, label %else 21*9880d681SAndroid Build Coastguard Worker 22*9880d681SAndroid Build Coastguard Workerif.then: 23*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp sge i8 3, %tmp 24*9880d681SAndroid Build Coastguard Worker br i1 %tmp3, label %else, label %end 25*9880d681SAndroid Build Coastguard Worker 26*9880d681SAndroid Build Coastguard Workerelse: 27*9880d681SAndroid Build Coastguard Worker call void @__asan_report_load4(i64 40) 28*9880d681SAndroid Build Coastguard Worker call void asm sideeffect "", ""() 29*9880d681SAndroid Build Coastguard Worker unreachable 30*9880d681SAndroid Build Coastguard Worker 31*9880d681SAndroid Build Coastguard Workerend: 32*9880d681SAndroid Build Coastguard Worker %tmp6 = load i32, i32* inttoptr (i64 40 to i32*), align 8 33*9880d681SAndroid Build Coastguard Worker %inc = add nsw i32 %tmp6, 1 34*9880d681SAndroid Build Coastguard Worker store i32 %inc, i32* inttoptr (i64 40 to i32*), align 8 35*9880d681SAndroid Build Coastguard Worker ret void 36*9880d681SAndroid Build Coastguard Worker} 37*9880d681SAndroid Build Coastguard Worker 38*9880d681SAndroid Build Coastguard Workerattributes #0 = { sanitize_address nounwind "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" } 39*9880d681SAndroid Build Coastguard Worker 40*9880d681SAndroid Build Coastguard Workerdeclare void @__asan_report_load4(i64) 41