|  | ; RUN: opt < %s -gvn -enable-load-pre -disable-output | 
|  |  | 
|  | %struct.VEC_rtx_base = type { i32, i32, [1 x %struct.rtx_def*] } | 
|  | %struct.VEC_rtx_gc = type { %struct.VEC_rtx_base } | 
|  | %struct.block_symbol = type { [3 x %struct.cgraph_rtl_info], %struct.object_block*, i64 } | 
|  | %struct.cgraph_rtl_info = type { i32 } | 
|  | %struct.object_block = type { %struct.section*, i32, i64, %struct.VEC_rtx_gc*, %struct.VEC_rtx_gc* } | 
|  | %struct.rtvec_def = type { i32, [1 x %struct.rtx_def*] } | 
|  | %struct.rtx_def = type { i16, i8, i8, %struct.u } | 
|  | %struct.section = type { %struct.unnamed_section } | 
|  | %struct.u = type { %struct.block_symbol } | 
|  | %struct.unnamed_section = type { %struct.cgraph_rtl_info, void (i8*)*, i8*, %struct.section* } | 
|  |  | 
|  | declare %struct.rtvec_def* @gen_rtvec(i32, ...) | 
|  |  | 
|  | declare %struct.rtx_def* @plus_constant(%struct.rtx_def*, i64) | 
|  |  | 
|  | declare %struct.rtx_def* @gen_rtx_fmt_Ei(i32, i32, %struct.rtvec_def*, i32) | 
|  |  | 
|  | declare i32 @local_symbolic_operand(%struct.rtx_def*, i32) | 
|  |  | 
|  | define %struct.rtx_def* @legitimize_pic_address(%struct.rtx_def* %orig, %struct.rtx_def* %reg) nounwind { | 
|  | entry: | 
|  | %addr = alloca %struct.rtx_def*		; <%struct.rtx_def**> [#uses=5] | 
|  | %iftmp.1532 = alloca %struct.rtx_def*		; <%struct.rtx_def**> [#uses=3] | 
|  | store %struct.rtx_def* %orig, %struct.rtx_def** null | 
|  | %0 = load %struct.rtx_def** null, align 4		; <%struct.rtx_def*> [#uses=0] | 
|  | br i1 false, label %bb96, label %bb59 | 
|  |  | 
|  | bb59:		; preds = %entry | 
|  | %1 = load %struct.rtx_def** %addr, align 4		; <%struct.rtx_def*> [#uses=1] | 
|  | %2 = call i32 @local_symbolic_operand(%struct.rtx_def* %1, i32 0) nounwind		; <i32> [#uses=0] | 
|  | br i1 false, label %bb96, label %bb63 | 
|  |  | 
|  | bb63:		; preds = %bb59 | 
|  | br i1 false, label %bb64, label %bb74 | 
|  |  | 
|  | bb64:		; preds = %bb63 | 
|  | br i1 false, label %bb72, label %bb65 | 
|  |  | 
|  | bb65:		; preds = %bb64 | 
|  | br label %bb72 | 
|  |  | 
|  | bb72:		; preds = %bb65, %bb64 | 
|  | br label %bb74 | 
|  |  | 
|  | bb74:		; preds = %bb72, %bb63 | 
|  | br i1 false, label %bb75, label %bb76 | 
|  |  | 
|  | bb75:		; preds = %bb74 | 
|  | br label %bb76 | 
|  |  | 
|  | bb76:		; preds = %bb75, %bb74 | 
|  | br i1 false, label %bb77, label %bb84 | 
|  |  | 
|  | bb77:		; preds = %bb76 | 
|  | %3 = getelementptr [1 x %struct.cgraph_rtl_info]* null, i32 0, i32 0		; <%struct.cgraph_rtl_info*> [#uses=0] | 
|  | unreachable | 
|  |  | 
|  | bb84:		; preds = %bb76 | 
|  | br i1 false, label %bb85, label %bb86 | 
|  |  | 
|  | bb85:		; preds = %bb84 | 
|  | br label %bb87 | 
|  |  | 
|  | bb86:		; preds = %bb84 | 
|  | br label %bb87 | 
|  |  | 
|  | bb87:		; preds = %bb86, %bb85 | 
|  | %4 = call %struct.rtx_def* @gen_rtx_fmt_Ei(i32 16, i32 0, %struct.rtvec_def* null, i32 1) nounwind		; <%struct.rtx_def*> [#uses=0] | 
|  | br i1 false, label %bb89, label %bb90 | 
|  |  | 
|  | bb89:		; preds = %bb87 | 
|  | br label %bb91 | 
|  |  | 
|  | bb90:		; preds = %bb87 | 
|  | br label %bb91 | 
|  |  | 
|  | bb91:		; preds = %bb90, %bb89 | 
|  | br i1 false, label %bb92, label %bb93 | 
|  |  | 
|  | bb92:		; preds = %bb91 | 
|  | br label %bb94 | 
|  |  | 
|  | bb93:		; preds = %bb91 | 
|  | br label %bb94 | 
|  |  | 
|  | bb94:		; preds = %bb93, %bb92 | 
|  | unreachable | 
|  |  | 
|  | bb96:		; preds = %bb59, %entry | 
|  | %5 = load %struct.rtx_def** %addr, align 4		; <%struct.rtx_def*> [#uses=1] | 
|  | %6 = getelementptr %struct.rtx_def* %5, i32 0, i32 0		; <i16*> [#uses=1] | 
|  | %7 = load i16* %6, align 2		; <i16> [#uses=0] | 
|  | br i1 false, label %bb147, label %bb97 | 
|  |  | 
|  | bb97:		; preds = %bb96 | 
|  | %8 = load %struct.rtx_def** %addr, align 4		; <%struct.rtx_def*> [#uses=0] | 
|  | br i1 false, label %bb147, label %bb99 | 
|  |  | 
|  | bb99:		; preds = %bb97 | 
|  | unreachable | 
|  |  | 
|  | bb147:		; preds = %bb97, %bb96 | 
|  | %9 = load %struct.rtx_def** %addr, align 4		; <%struct.rtx_def*> [#uses=1] | 
|  | %10 = getelementptr %struct.rtx_def* %9, i32 0, i32 0		; <i16*> [#uses=1] | 
|  | %11 = load i16* %10, align 2		; <i16> [#uses=0] | 
|  | br i1 false, label %bb164, label %bb148 | 
|  |  | 
|  | bb148:		; preds = %bb147 | 
|  | br i1 false, label %bb164, label %bb149 | 
|  |  | 
|  | bb149:		; preds = %bb148 | 
|  | br i1 false, label %bb150, label %bb152 | 
|  |  | 
|  | bb150:		; preds = %bb149 | 
|  | unreachable | 
|  |  | 
|  | bb152:		; preds = %bb149 | 
|  | br label %bb164 | 
|  |  | 
|  | bb164:		; preds = %bb152, %bb148, %bb147 | 
|  | %12 = getelementptr [1 x %struct.cgraph_rtl_info]* null, i32 0, i32 1		; <%struct.cgraph_rtl_info*> [#uses=0] | 
|  | br i1 false, label %bb165, label %bb166 | 
|  |  | 
|  | bb165:		; preds = %bb164 | 
|  | br label %bb167 | 
|  |  | 
|  | bb166:		; preds = %bb164 | 
|  | br label %bb167 | 
|  |  | 
|  | bb167:		; preds = %bb166, %bb165 | 
|  | br i1 false, label %bb211, label %bb168 | 
|  |  | 
|  | bb168:		; preds = %bb167 | 
|  | br i1 false, label %bb211, label %bb170 | 
|  |  | 
|  | bb170:		; preds = %bb168 | 
|  | br i1 false, label %bb172, label %bb181 | 
|  |  | 
|  | bb172:		; preds = %bb170 | 
|  | br i1 false, label %bb179, label %bb174 | 
|  |  | 
|  | bb174:		; preds = %bb172 | 
|  | br i1 false, label %bb177, label %bb175 | 
|  |  | 
|  | bb175:		; preds = %bb174 | 
|  | br i1 false, label %bb177, label %bb176 | 
|  |  | 
|  | bb176:		; preds = %bb175 | 
|  | br label %bb178 | 
|  |  | 
|  | bb177:		; preds = %bb175, %bb174 | 
|  | br label %bb178 | 
|  |  | 
|  | bb178:		; preds = %bb177, %bb176 | 
|  | br label %bb180 | 
|  |  | 
|  | bb179:		; preds = %bb172 | 
|  | br label %bb180 | 
|  |  | 
|  | bb180:		; preds = %bb179, %bb178 | 
|  | br label %bb181 | 
|  |  | 
|  | bb181:		; preds = %bb180, %bb170 | 
|  | %13 = call %struct.rtvec_def* (i32, ...)* @gen_rtvec(i32 1, %struct.rtx_def* null) nounwind		; <%struct.rtvec_def*> [#uses=0] | 
|  | unreachable | 
|  |  | 
|  | bb211:		; preds = %bb168, %bb167 | 
|  | %14 = load %struct.rtx_def** %addr, align 4		; <%struct.rtx_def*> [#uses=0] | 
|  | %15 = getelementptr [1 x %struct.cgraph_rtl_info]* null, i32 0, i32 0		; <%struct.cgraph_rtl_info*> [#uses=0] | 
|  | store %struct.rtx_def* null, %struct.rtx_def** null, align 4 | 
|  | br i1 false, label %bb212, label %bb213 | 
|  |  | 
|  | bb212:		; preds = %bb211 | 
|  | store %struct.rtx_def* null, %struct.rtx_def** %iftmp.1532, align 4 | 
|  | br label %bb214 | 
|  |  | 
|  | bb213:		; preds = %bb211 | 
|  | store %struct.rtx_def* null, %struct.rtx_def** %iftmp.1532, align 4 | 
|  | br label %bb214 | 
|  |  | 
|  | bb214:		; preds = %bb213, %bb212 | 
|  | %16 = bitcast %struct.block_symbol* null to [1 x %struct.cgraph_rtl_info]*		; <[1 x %struct.cgraph_rtl_info]*> [#uses=1] | 
|  | %17 = getelementptr [1 x %struct.cgraph_rtl_info]* %16, i32 0, i32 1		; <%struct.cgraph_rtl_info*> [#uses=0] | 
|  | %18 = load %struct.rtx_def** %iftmp.1532, align 4		; <%struct.rtx_def*> [#uses=0] | 
|  | %19 = getelementptr %struct.rtx_def* null, i32 0, i32 3		; <%struct.u*> [#uses=1] | 
|  | %20 = getelementptr %struct.u* %19, i32 0, i32 0		; <%struct.block_symbol*> [#uses=1] | 
|  | %21 = bitcast %struct.block_symbol* %20 to [1 x i64]*		; <[1 x i64]*> [#uses=1] | 
|  | %22 = getelementptr [1 x i64]* %21, i32 0, i32 0		; <i64*> [#uses=0] | 
|  | %23 = call %struct.rtx_def* @plus_constant(%struct.rtx_def* null, i64 0) nounwind		; <%struct.rtx_def*> [#uses=0] | 
|  | unreachable | 
|  | } |