1*9880d681SAndroid Build Coastguard Worker; RUN: llc -O3 < %s 2*9880d681SAndroid Build Coastguard Worker; This test fails with: 3*9880d681SAndroid Build Coastguard Worker; Assertion failed: (!B && "UpdateTerminators requires analyzable predecessors!"), function updateTerminator, MachineBasicBlock.cpp, line 255. 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Workertarget datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64" 6*9880d681SAndroid Build Coastguard Workertarget triple = "x86_64-apple-darwin10.2" 7*9880d681SAndroid Build Coastguard Worker 8*9880d681SAndroid Build Coastguard Worker%"struct.llvm::InlineAsm::ConstraintInfo" = type { i32, i8, i8, i8, i8, %"struct.std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >,std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >" } 9*9880d681SAndroid Build Coastguard Worker%"struct.std::_Vector_base<llvm::InlineAsm::ConstraintInfo,std::allocator<llvm::InlineAsm::ConstraintInfo> >" = type { %"struct.std::_Vector_base<llvm::InlineAsm::ConstraintInfo,std::allocator<llvm::InlineAsm::ConstraintInfo> >::_Vector_impl" } 10*9880d681SAndroid Build Coastguard Worker%"struct.std::_Vector_base<llvm::InlineAsm::ConstraintInfo,std::allocator<llvm::InlineAsm::ConstraintInfo> >::_Vector_impl" = type { %"struct.llvm::InlineAsm::ConstraintInfo"*, %"struct.llvm::InlineAsm::ConstraintInfo"*, %"struct.llvm::InlineAsm::ConstraintInfo"* } 11*9880d681SAndroid Build Coastguard Worker%"struct.std::_Vector_base<std::basic_string<char, std::char_traits<char>, std::allocator<char> >,std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >" = type { %"struct.std::_Vector_base<std::basic_string<char, std::char_traits<char>, std::allocator<char> >,std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::_Vector_impl" } 12*9880d681SAndroid Build Coastguard Worker%"struct.std::_Vector_base<std::basic_string<char, std::char_traits<char>, std::allocator<char> >,std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::_Vector_impl" = type { %"struct.std::string"*, %"struct.std::string"*, %"struct.std::string"* } 13*9880d681SAndroid Build Coastguard Worker%"struct.std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Alloc_hider" = type { i8* } 14*9880d681SAndroid Build Coastguard Worker%"struct.std::string" = type { %"struct.std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Alloc_hider" } 15*9880d681SAndroid Build Coastguard Worker%"struct.std::vector<llvm::InlineAsm::ConstraintInfo,std::allocator<llvm::InlineAsm::ConstraintInfo> >" = type { %"struct.std::_Vector_base<llvm::InlineAsm::ConstraintInfo,std::allocator<llvm::InlineAsm::ConstraintInfo> >" } 16*9880d681SAndroid Build Coastguard Worker%"struct.std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >,std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >" = type { %"struct.std::_Vector_base<std::basic_string<char, std::char_traits<char>, std::allocator<char> >,std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >" } 17*9880d681SAndroid Build Coastguard Worker 18*9880d681SAndroid Build Coastguard Workerdefine zeroext i8 @_ZN4llvm9InlineAsm14ConstraintInfo5ParseENS_9StringRefERSt6vectorIS1_SaIS1_EE(%"struct.llvm::InlineAsm::ConstraintInfo"* nocapture %this, i64 %Str.0, i64 %Str.1, %"struct.std::vector<llvm::InlineAsm::ConstraintInfo,std::allocator<llvm::InlineAsm::ConstraintInfo> >"* nocapture %ConstraintsSoFar) nounwind ssp align 2 { 19*9880d681SAndroid Build Coastguard Workerentry: 20*9880d681SAndroid Build Coastguard Worker br i1 undef, label %bb56, label %bb27.outer 21*9880d681SAndroid Build Coastguard Worker 22*9880d681SAndroid Build Coastguard Workerbb8: ; preds = %bb27.outer108, %bb13 23*9880d681SAndroid Build Coastguard Worker switch i8 undef, label %bb27.outer [ 24*9880d681SAndroid Build Coastguard Worker i8 35, label %bb56 25*9880d681SAndroid Build Coastguard Worker i8 37, label %bb14 26*9880d681SAndroid Build Coastguard Worker i8 38, label %bb10 27*9880d681SAndroid Build Coastguard Worker i8 42, label %bb56 28*9880d681SAndroid Build Coastguard Worker ] 29*9880d681SAndroid Build Coastguard Worker 30*9880d681SAndroid Build Coastguard Workerbb27.outer: ; preds = %bb8, %entry 31*9880d681SAndroid Build Coastguard Worker %I.2.ph = phi i8* [ undef, %entry ], [ %I.2.ph109, %bb8 ] ; <i8*> [#uses=2] 32*9880d681SAndroid Build Coastguard Worker br label %bb27.outer108 33*9880d681SAndroid Build Coastguard Worker 34*9880d681SAndroid Build Coastguard Workerbb10: ; preds = %bb8 35*9880d681SAndroid Build Coastguard Worker %toBool = icmp eq i8 0, 0 ; <i1> [#uses=1] 36*9880d681SAndroid Build Coastguard Worker %or.cond = and i1 undef, %toBool ; <i1> [#uses=1] 37*9880d681SAndroid Build Coastguard Worker br i1 %or.cond, label %bb13, label %bb56 38*9880d681SAndroid Build Coastguard Worker 39*9880d681SAndroid Build Coastguard Workerbb13: ; preds = %bb10 40*9880d681SAndroid Build Coastguard Worker br i1 undef, label %bb27.outer108, label %bb8 41*9880d681SAndroid Build Coastguard Worker 42*9880d681SAndroid Build Coastguard Workerbb14: ; preds = %bb8 43*9880d681SAndroid Build Coastguard Worker ret i8 1 44*9880d681SAndroid Build Coastguard Worker 45*9880d681SAndroid Build Coastguard Workerbb27.outer108: ; preds = %bb13, %bb27.outer 46*9880d681SAndroid Build Coastguard Worker %I.2.ph109 = getelementptr i8, i8* %I.2.ph, i64 undef ; <i8*> [#uses=1] 47*9880d681SAndroid Build Coastguard Worker %scevgep = getelementptr i8, i8* %I.2.ph, i64 undef ; <i8*> [#uses=0] 48*9880d681SAndroid Build Coastguard Worker br label %bb8 49*9880d681SAndroid Build Coastguard Worker 50*9880d681SAndroid Build Coastguard Workerbb56: ; preds = %bb10, %bb8, %bb8, %entry 51*9880d681SAndroid Build Coastguard Worker ret i8 1 52*9880d681SAndroid Build Coastguard Worker} 53