1*9880d681SAndroid Build Coastguard Worker; RUN: opt -S -simplifycfg < %s | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Worker; Don't remove invokes of nounwind functions if the personality handles async 4*9880d681SAndroid Build Coastguard Worker; exceptions. The @div function in this test can fault, even though it can't 5*9880d681SAndroid Build Coastguard Worker; throw a synchronous exception. 6*9880d681SAndroid Build Coastguard Worker 7*9880d681SAndroid Build Coastguard Workerdefine i32 @div(i32 %n, i32 %d) nounwind { 8*9880d681SAndroid Build Coastguard Workerentry: 9*9880d681SAndroid Build Coastguard Worker %div = sdiv i32 %n, %d 10*9880d681SAndroid Build Coastguard Worker ret i32 %div 11*9880d681SAndroid Build Coastguard Worker} 12*9880d681SAndroid Build Coastguard Worker 13*9880d681SAndroid Build Coastguard Workerdefine i32 @main() nounwind personality i8* bitcast (i32 (...)* @__C_specific_handler to i8*) { 14*9880d681SAndroid Build Coastguard Workerentry: 15*9880d681SAndroid Build Coastguard Worker %call = invoke i32 @div(i32 10, i32 0) 16*9880d681SAndroid Build Coastguard Worker to label %__try.cont unwind label %lpad 17*9880d681SAndroid Build Coastguard Worker 18*9880d681SAndroid Build Coastguard Workerlpad: 19*9880d681SAndroid Build Coastguard Worker %0 = landingpad { i8*, i32 } 20*9880d681SAndroid Build Coastguard Worker catch i8* null 21*9880d681SAndroid Build Coastguard Worker br label %__try.cont 22*9880d681SAndroid Build Coastguard Worker 23*9880d681SAndroid Build Coastguard Worker__try.cont: 24*9880d681SAndroid Build Coastguard Worker %retval.0 = phi i32 [ %call, %entry ], [ 0, %lpad ] 25*9880d681SAndroid Build Coastguard Worker ret i32 %retval.0 26*9880d681SAndroid Build Coastguard Worker} 27*9880d681SAndroid Build Coastguard Worker 28*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: define i32 @main() 29*9880d681SAndroid Build Coastguard Worker; CHECK: invoke i32 @div(i32 10, i32 0) 30*9880d681SAndroid Build Coastguard Worker 31*9880d681SAndroid Build Coastguard Workerdeclare i32 @__C_specific_handler(...) 32