192 lines · plain
1; RUN: opt < %s -passes=gvn -enable-load-pre -disable-output2 3 %struct.VEC_rtx_base = type { i32, i32, [1 x ptr] }4 %struct.VEC_rtx_gc = type { %struct.VEC_rtx_base }5 %struct.block_symbol = type { [3 x %struct.cgraph_rtl_info], ptr, i64 }6 %struct.cgraph_rtl_info = type { i32 }7 %struct.object_block = type { ptr, i32, i64, ptr, ptr }8 %struct.rtvec_def = type { i32, [1 x ptr] }9 %struct.rtx_def = type { i16, i8, i8, %struct.u }10 %struct.section = type { %struct.unnamed_section }11 %struct.u = type { %struct.block_symbol }12 %struct.unnamed_section = type { %struct.cgraph_rtl_info, ptr, ptr, ptr }13 14declare ptr @gen_rtvec(i32, ...)15 16declare ptr @plus_constant(ptr, i64)17 18declare ptr @gen_rtx_fmt_Ei(i32, i32, ptr, i32)19 20declare i32 @local_symbolic_operand(ptr, i32)21 22define ptr @legitimize_pic_address(ptr %orig, ptr %reg) nounwind {23entry:24 %addr = alloca ptr ; <ptr> [#uses=5]25 %iftmp.1532 = alloca ptr ; <ptr> [#uses=3]26 store ptr %orig, ptr null27 %0 = load ptr, ptr null, align 4 ; <ptr> [#uses=0]28 br i1 false, label %bb96, label %bb5929 30bb59: ; preds = %entry31 %1 = load ptr, ptr %addr, align 4 ; <ptr> [#uses=1]32 %2 = call i32 @local_symbolic_operand(ptr %1, i32 0) nounwind ; <i32> [#uses=0]33 br i1 false, label %bb96, label %bb6334 35bb63: ; preds = %bb5936 br i1 false, label %bb64, label %bb7437 38bb64: ; preds = %bb6339 br i1 false, label %bb72, label %bb6540 41bb65: ; preds = %bb6442 br label %bb7243 44bb72: ; preds = %bb65, %bb6445 br label %bb7446 47bb74: ; preds = %bb72, %bb6348 br i1 false, label %bb75, label %bb7649 50bb75: ; preds = %bb7451 br label %bb7652 53bb76: ; preds = %bb75, %bb7454 br i1 false, label %bb77, label %bb8455 56bb77: ; preds = %bb7657 %3 = getelementptr [1 x %struct.cgraph_rtl_info], ptr null, i32 0, i32 0 ; <ptr> [#uses=0]58 unreachable59 60bb84: ; preds = %bb7661 br i1 false, label %bb85, label %bb8662 63bb85: ; preds = %bb8464 br label %bb8765 66bb86: ; preds = %bb8467 br label %bb8768 69bb87: ; preds = %bb86, %bb8570 %4 = call ptr @gen_rtx_fmt_Ei(i32 16, i32 0, ptr null, i32 1) nounwind ; <ptr> [#uses=0]71 br i1 false, label %bb89, label %bb9072 73bb89: ; preds = %bb8774 br label %bb9175 76bb90: ; preds = %bb8777 br label %bb9178 79bb91: ; preds = %bb90, %bb8980 br i1 false, label %bb92, label %bb9381 82bb92: ; preds = %bb9183 br label %bb9484 85bb93: ; preds = %bb9186 br label %bb9487 88bb94: ; preds = %bb93, %bb9289 unreachable90 91bb96: ; preds = %bb59, %entry92 %5 = load ptr, ptr %addr, align 4 ; <ptr> [#uses=1]93 %6 = getelementptr %struct.rtx_def, ptr %5, i32 0, i32 0 ; <ptr> [#uses=1]94 %7 = load i16, ptr %6, align 2 ; <i16> [#uses=0]95 br i1 false, label %bb147, label %bb9796 97bb97: ; preds = %bb9698 %8 = load ptr, ptr %addr, align 4 ; <ptr> [#uses=0]99 br i1 false, label %bb147, label %bb99100 101bb99: ; preds = %bb97102 unreachable103 104bb147: ; preds = %bb97, %bb96105 %9 = load ptr, ptr %addr, align 4 ; <ptr> [#uses=1]106 %10 = getelementptr %struct.rtx_def, ptr %9, i32 0, i32 0 ; <ptr> [#uses=1]107 %11 = load i16, ptr %10, align 2 ; <i16> [#uses=0]108 br i1 false, label %bb164, label %bb148109 110bb148: ; preds = %bb147111 br i1 false, label %bb164, label %bb149112 113bb149: ; preds = %bb148114 br i1 false, label %bb150, label %bb152115 116bb150: ; preds = %bb149117 unreachable118 119bb152: ; preds = %bb149120 br label %bb164121 122bb164: ; preds = %bb152, %bb148, %bb147123 %12 = getelementptr [1 x %struct.cgraph_rtl_info], ptr null, i32 0, i32 1 ; <ptr> [#uses=0]124 br i1 false, label %bb165, label %bb166125 126bb165: ; preds = %bb164127 br label %bb167128 129bb166: ; preds = %bb164130 br label %bb167131 132bb167: ; preds = %bb166, %bb165133 br i1 false, label %bb211, label %bb168134 135bb168: ; preds = %bb167136 br i1 false, label %bb211, label %bb170137 138bb170: ; preds = %bb168139 br i1 false, label %bb172, label %bb181140 141bb172: ; preds = %bb170142 br i1 false, label %bb179, label %bb174143 144bb174: ; preds = %bb172145 br i1 false, label %bb177, label %bb175146 147bb175: ; preds = %bb174148 br i1 false, label %bb177, label %bb176149 150bb176: ; preds = %bb175151 br label %bb178152 153bb177: ; preds = %bb175, %bb174154 br label %bb178155 156bb178: ; preds = %bb177, %bb176157 br label %bb180158 159bb179: ; preds = %bb172160 br label %bb180161 162bb180: ; preds = %bb179, %bb178163 br label %bb181164 165bb181: ; preds = %bb180, %bb170166 %13 = call ptr (i32, ...) @gen_rtvec(i32 1, ptr null) nounwind ; <ptr> [#uses=0]167 unreachable168 169bb211: ; preds = %bb168, %bb167170 %14 = load ptr, ptr %addr, align 4 ; <ptr> [#uses=0]171 %15 = getelementptr [1 x %struct.cgraph_rtl_info], ptr null, i32 0, i32 0 ; <ptr> [#uses=0]172 store ptr null, ptr null, align 4173 br i1 false, label %bb212, label %bb213174 175bb212: ; preds = %bb211176 store ptr null, ptr %iftmp.1532, align 4177 br label %bb214178 179bb213: ; preds = %bb211180 store ptr null, ptr %iftmp.1532, align 4181 br label %bb214182 183bb214: ; preds = %bb213, %bb212184 %16 = getelementptr [1 x %struct.cgraph_rtl_info], ptr null, i32 0, i32 1 ; <ptr> [#uses=0]185 %17 = load ptr, ptr %iftmp.1532, align 4 ; <ptr> [#uses=0]186 %18 = getelementptr %struct.rtx_def, ptr null, i32 0, i32 3 ; <ptr> [#uses=1]187 %19 = getelementptr %struct.u, ptr %18, i32 0, i32 0 ; <ptr> [#uses=1]188 %20 = getelementptr [1 x i64], ptr %19, i32 0, i32 0 ; <ptr> [#uses=0]189 %21 = call ptr @plus_constant(ptr null, i64 0) nounwind ; <ptr> [#uses=0]190 unreachable191}192