1*9880d681SAndroid Build Coastguard Worker; RUN: opt -S -globalopt < %s | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker; rdar://11022897 3*9880d681SAndroid Build Coastguard Worker 4*9880d681SAndroid Build Coastguard Worker; Globalopt should be able to evaluate an invoke. 5*9880d681SAndroid Build Coastguard Worker; CHECK: @tmp = local_unnamed_addr global i32 1 6*9880d681SAndroid Build Coastguard Worker 7*9880d681SAndroid Build Coastguard Worker@llvm.global_ctors = appending global [1 x { i32, void ()* }] [{ i32, void ()* } { i32 65535, void ()* @_GLOBAL__I_a }] 8*9880d681SAndroid Build Coastguard Worker@tmp = global i32 0 9*9880d681SAndroid Build Coastguard Worker 10*9880d681SAndroid Build Coastguard Workerdefine i32 @one() { 11*9880d681SAndroid Build Coastguard Worker ret i32 1 12*9880d681SAndroid Build Coastguard Worker} 13*9880d681SAndroid Build Coastguard Worker 14*9880d681SAndroid Build Coastguard Workerdefine void @_GLOBAL__I_a() personality i8* undef { 15*9880d681SAndroid Build Coastguard Workerbb: 16*9880d681SAndroid Build Coastguard Worker %tmp1 = invoke i32 @one() 17*9880d681SAndroid Build Coastguard Worker to label %bb2 unwind label %bb4 18*9880d681SAndroid Build Coastguard Worker 19*9880d681SAndroid Build Coastguard Workerbb2: ; preds = %bb 20*9880d681SAndroid Build Coastguard Worker store i32 %tmp1, i32* @tmp 21*9880d681SAndroid Build Coastguard Worker ret void 22*9880d681SAndroid Build Coastguard Worker 23*9880d681SAndroid Build Coastguard Workerbb4: ; preds = %bb 24*9880d681SAndroid Build Coastguard Worker %tmp5 = landingpad { i8*, i32 } 25*9880d681SAndroid Build Coastguard Worker filter [0 x i8*] zeroinitializer 26*9880d681SAndroid Build Coastguard Worker unreachable 27*9880d681SAndroid Build Coastguard Worker} 28