1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s 2*9880d681SAndroid Build Coastguard Worker; Infinite loop in the dag combiner, reduced from 176.gcc. 3*9880d681SAndroid Build Coastguard Worker%struct._obstack_chunk = type { i8*, %struct._obstack_chunk*, [4 x i8] } 4*9880d681SAndroid Build Coastguard Worker %struct.anon = type { i32 } 5*9880d681SAndroid Build Coastguard Worker %struct.lang_decl = type opaque 6*9880d681SAndroid Build Coastguard Worker %struct.lang_type = type { i32, [1 x %struct.tree_node*] } 7*9880d681SAndroid Build Coastguard Worker %struct.obstack = type { i32, %struct._obstack_chunk*, i8*, i8*, i8*, i32, i32, %struct._obstack_chunk* (...)*, void (...)*, i8*, i8 } 8*9880d681SAndroid Build Coastguard Worker %struct.rtx_def = type { i16, i8, i8, [1 x %struct.anon] } 9*9880d681SAndroid Build Coastguard Worker %struct.tree_common = type { %struct.tree_node*, %struct.tree_node*, i8, i8, i8, i8 } 10*9880d681SAndroid Build Coastguard Worker %struct.tree_decl = type { [12 x i8], i8*, i32, %struct.tree_node*, i32, i8, i8, i8, i8, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.rtx_def*, %struct.anon, { %struct.rtx_def* }, %struct.tree_node*, %struct.lang_decl* } 11*9880d681SAndroid Build Coastguard Worker %struct.tree_list = type { [12 x i8], %struct.tree_node*, %struct.tree_node* } 12*9880d681SAndroid Build Coastguard Worker %struct.tree_node = type { %struct.tree_decl } 13*9880d681SAndroid Build Coastguard Worker %struct.tree_type = type { [12 x i8], %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, i32, i8, i8, i8, i8, i32, %struct.tree_node*, %struct.tree_node*, %struct.anon, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.obstack*, %struct.lang_type* } 14*9880d681SAndroid Build Coastguard Worker@void_type_node = external global %struct.tree_node* ; <%struct.tree_node**> [#uses=1] 15*9880d681SAndroid Build Coastguard Worker@char_type_node = external global %struct.tree_node* ; <%struct.tree_node**> [#uses=1] 16*9880d681SAndroid Build Coastguard Worker@short_integer_type_node = external global %struct.tree_node* ; <%struct.tree_node**> [#uses=1] 17*9880d681SAndroid Build Coastguard Worker@short_unsigned_type_node = external global %struct.tree_node* ; <%struct.tree_node**> [#uses=1] 18*9880d681SAndroid Build Coastguard Worker@float_type_node = external global %struct.tree_node* ; <%struct.tree_node**> [#uses=1] 19*9880d681SAndroid Build Coastguard Worker@signed_char_type_node = external global %struct.tree_node* ; <%struct.tree_node**> [#uses=1] 20*9880d681SAndroid Build Coastguard Worker@unsigned_char_type_node = external global %struct.tree_node* ; <%struct.tree_node**> [#uses=1] 21*9880d681SAndroid Build Coastguard Worker 22*9880d681SAndroid Build Coastguard Workerdefine fastcc i32 @self_promoting_args_p(%struct.tree_node* %parms) { 23*9880d681SAndroid Build Coastguard Workerentry: 24*9880d681SAndroid Build Coastguard Worker %tmp915 = icmp eq %struct.tree_node* %parms, null ; <i1> [#uses=1] 25*9880d681SAndroid Build Coastguard Worker br i1 %tmp915, label %return, label %cond_true92.preheader 26*9880d681SAndroid Build Coastguard Worker 27*9880d681SAndroid Build Coastguard Workercond_true: ; preds = %cond_true92 28*9880d681SAndroid Build Coastguard Worker %tmp9.not = icmp ne %struct.tree_node* %tmp2, %tmp7 ; <i1> [#uses=1] 29*9880d681SAndroid Build Coastguard Worker %tmp14 = icmp eq %struct.tree_node* %tmp2, null ; <i1> [#uses=1] 30*9880d681SAndroid Build Coastguard Worker %bothcond = or i1 %tmp9.not, %tmp14 ; <i1> [#uses=1] 31*9880d681SAndroid Build Coastguard Worker br i1 %bothcond, label %return, label %cond_next18 32*9880d681SAndroid Build Coastguard Worker 33*9880d681SAndroid Build Coastguard Workercond_next12: ; preds = %cond_true92 34*9880d681SAndroid Build Coastguard Worker %tmp14.old = icmp eq %struct.tree_node* %tmp2, null ; <i1> [#uses=1] 35*9880d681SAndroid Build Coastguard Worker br i1 %tmp14.old, label %return, label %cond_next18 36*9880d681SAndroid Build Coastguard Worker 37*9880d681SAndroid Build Coastguard Workercond_next18: ; preds = %cond_next12, %cond_true 38*9880d681SAndroid Build Coastguard Worker %tmp20 = bitcast %struct.tree_node* %tmp2 to %struct.tree_type* ; <%struct.tree_type*> [#uses=1] 39*9880d681SAndroid Build Coastguard Worker %tmp21 = getelementptr %struct.tree_type, %struct.tree_type* %tmp20, i32 0, i32 17 ; <%struct.tree_node**> [#uses=1] 40*9880d681SAndroid Build Coastguard Worker %tmp22 = load %struct.tree_node*, %struct.tree_node** %tmp21 ; <%struct.tree_node*> [#uses=6] 41*9880d681SAndroid Build Coastguard Worker %tmp24 = icmp eq %struct.tree_node* %tmp22, %tmp23 ; <i1> [#uses=1] 42*9880d681SAndroid Build Coastguard Worker br i1 %tmp24, label %return, label %cond_next28 43*9880d681SAndroid Build Coastguard Worker 44*9880d681SAndroid Build Coastguard Workercond_next28: ; preds = %cond_next18 45*9880d681SAndroid Build Coastguard Worker %tmp30 = bitcast %struct.tree_node* %tmp2 to %struct.tree_common* ; <%struct.tree_common*> [#uses=1] 46*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr %struct.tree_common, %struct.tree_common* %tmp30, i32 0, i32 2 ; <i8*> [#uses=1] 47*9880d681SAndroid Build Coastguard Worker %tmp.upgrd.1 = bitcast i8* %tmp to i32* ; <i32*> [#uses=1] 48*9880d681SAndroid Build Coastguard Worker %tmp.upgrd.2 = load i32, i32* %tmp.upgrd.1 ; <i32> [#uses=1] 49*9880d681SAndroid Build Coastguard Worker %tmp32 = trunc i32 %tmp.upgrd.2 to i8 ; <i8> [#uses=1] 50*9880d681SAndroid Build Coastguard Worker %tmp33 = icmp eq i8 %tmp32, 7 ; <i1> [#uses=1] 51*9880d681SAndroid Build Coastguard Worker br i1 %tmp33, label %cond_true34, label %cond_next84 52*9880d681SAndroid Build Coastguard Worker 53*9880d681SAndroid Build Coastguard Workercond_true34: ; preds = %cond_next28 54*9880d681SAndroid Build Coastguard Worker %tmp40 = icmp eq %struct.tree_node* %tmp22, %tmp39 ; <i1> [#uses=1] 55*9880d681SAndroid Build Coastguard Worker %tmp49 = icmp eq %struct.tree_node* %tmp22, %tmp48 ; <i1> [#uses=1] 56*9880d681SAndroid Build Coastguard Worker %bothcond6 = or i1 %tmp40, %tmp49 ; <i1> [#uses=1] 57*9880d681SAndroid Build Coastguard Worker %tmp58 = icmp eq %struct.tree_node* %tmp22, %tmp57 ; <i1> [#uses=1] 58*9880d681SAndroid Build Coastguard Worker %bothcond7 = or i1 %bothcond6, %tmp58 ; <i1> [#uses=1] 59*9880d681SAndroid Build Coastguard Worker %tmp67 = icmp eq %struct.tree_node* %tmp22, %tmp66 ; <i1> [#uses=1] 60*9880d681SAndroid Build Coastguard Worker %bothcond8 = or i1 %bothcond7, %tmp67 ; <i1> [#uses=1] 61*9880d681SAndroid Build Coastguard Worker %tmp76 = icmp eq %struct.tree_node* %tmp22, %tmp75 ; <i1> [#uses=1] 62*9880d681SAndroid Build Coastguard Worker %bothcond9 = or i1 %bothcond8, %tmp76 ; <i1> [#uses=2] 63*9880d681SAndroid Build Coastguard Worker %brmerge = or i1 %bothcond9, %tmp.upgrd.6 ; <i1> [#uses=1] 64*9880d681SAndroid Build Coastguard Worker %bothcond9.upgrd.3 = zext i1 %bothcond9 to i32 ; <i32> [#uses=1] 65*9880d681SAndroid Build Coastguard Worker %.mux = xor i32 %bothcond9.upgrd.3, 1 ; <i32> [#uses=1] 66*9880d681SAndroid Build Coastguard Worker br i1 %brmerge, label %return, label %cond_true92 67*9880d681SAndroid Build Coastguard Worker 68*9880d681SAndroid Build Coastguard Workercond_next84: ; preds = %cond_next28 69*9880d681SAndroid Build Coastguard Worker br i1 %tmp.upgrd.6, label %return, label %cond_true92 70*9880d681SAndroid Build Coastguard Worker 71*9880d681SAndroid Build Coastguard Workercond_true92.preheader: ; preds = %entry 72*9880d681SAndroid Build Coastguard Worker %tmp7 = load %struct.tree_node*, %struct.tree_node** @void_type_node ; <%struct.tree_node*> [#uses=1] 73*9880d681SAndroid Build Coastguard Worker %tmp23 = load %struct.tree_node*, %struct.tree_node** @float_type_node ; <%struct.tree_node*> [#uses=1] 74*9880d681SAndroid Build Coastguard Worker %tmp39 = load %struct.tree_node*, %struct.tree_node** @char_type_node ; <%struct.tree_node*> [#uses=1] 75*9880d681SAndroid Build Coastguard Worker %tmp48 = load %struct.tree_node*, %struct.tree_node** @signed_char_type_node ; <%struct.tree_node*> [#uses=1] 76*9880d681SAndroid Build Coastguard Worker %tmp57 = load %struct.tree_node*, %struct.tree_node** @unsigned_char_type_node ; <%struct.tree_node*> [#uses=1] 77*9880d681SAndroid Build Coastguard Worker %tmp66 = load %struct.tree_node*, %struct.tree_node** @short_integer_type_node ; <%struct.tree_node*> [#uses=1] 78*9880d681SAndroid Build Coastguard Worker %tmp75 = load %struct.tree_node*, %struct.tree_node** @short_unsigned_type_node ; <%struct.tree_node*> [#uses=1] 79*9880d681SAndroid Build Coastguard Worker br label %cond_true92 80*9880d681SAndroid Build Coastguard Worker 81*9880d681SAndroid Build Coastguard Workercond_true92: ; preds = %cond_true92.preheader, %cond_next84, %cond_true34 82*9880d681SAndroid Build Coastguard Worker %t.0.0 = phi %struct.tree_node* [ %parms, %cond_true92.preheader ], [ %tmp6, %cond_true34 ], [ %tmp6, %cond_next84 ] ; <%struct.tree_node*> [#uses=2] 83*9880d681SAndroid Build Coastguard Worker %tmp.upgrd.4 = bitcast %struct.tree_node* %t.0.0 to %struct.tree_list* ; <%struct.tree_list*> [#uses=1] 84*9880d681SAndroid Build Coastguard Worker %tmp.upgrd.5 = getelementptr %struct.tree_list, %struct.tree_list* %tmp.upgrd.4, i32 0, i32 2 ; <%struct.tree_node**> [#uses=1] 85*9880d681SAndroid Build Coastguard Worker %tmp2 = load %struct.tree_node*, %struct.tree_node** %tmp.upgrd.5 ; <%struct.tree_node*> [#uses=5] 86*9880d681SAndroid Build Coastguard Worker %tmp4 = bitcast %struct.tree_node* %t.0.0 to %struct.tree_common* ; <%struct.tree_common*> [#uses=1] 87*9880d681SAndroid Build Coastguard Worker %tmp5 = getelementptr %struct.tree_common, %struct.tree_common* %tmp4, i32 0, i32 0 ; <%struct.tree_node**> [#uses=1] 88*9880d681SAndroid Build Coastguard Worker %tmp6 = load %struct.tree_node*, %struct.tree_node** %tmp5 ; <%struct.tree_node*> [#uses=3] 89*9880d681SAndroid Build Coastguard Worker %tmp.upgrd.6 = icmp eq %struct.tree_node* %tmp6, null ; <i1> [#uses=3] 90*9880d681SAndroid Build Coastguard Worker br i1 %tmp.upgrd.6, label %cond_true, label %cond_next12 91*9880d681SAndroid Build Coastguard Worker 92*9880d681SAndroid Build Coastguard Workerreturn: ; preds = %cond_next84, %cond_true34, %cond_next18, %cond_next12, %cond_true, %entry 93*9880d681SAndroid Build Coastguard Worker %retval.0 = phi i32 [ 1, %entry ], [ 1, %cond_next84 ], [ %.mux, %cond_true34 ], [ 0, %cond_next18 ], [ 0, %cond_next12 ], [ 0, %cond_true ] ; <i32> [#uses=1] 94*9880d681SAndroid Build Coastguard Worker ret i32 %retval.0 95*9880d681SAndroid Build Coastguard Worker} 96