diff options
author | Shih-wei Liao <sliao@google.com> | 2010-02-10 11:10:31 -0800 |
---|---|---|
committer | Shih-wei Liao <sliao@google.com> | 2010-02-10 11:10:31 -0800 |
commit | e264f62ca09a8f65c87a46d562a4d0f9ec5d457e (patch) | |
tree | 59e3d57ef656cef79afa708ae0a3daf25cd91fcf /test/Transforms/GVN/2009-02-17-LoadPRECrash.ll | |
download | external_llvm-e264f62ca09a8f65c87a46d562a4d0f9ec5d457e.zip external_llvm-e264f62ca09a8f65c87a46d562a4d0f9ec5d457e.tar.gz external_llvm-e264f62ca09a8f65c87a46d562a4d0f9ec5d457e.tar.bz2 |
Check in LLVM r95781.
Diffstat (limited to 'test/Transforms/GVN/2009-02-17-LoadPRECrash.ll')
-rw-r--r-- | test/Transforms/GVN/2009-02-17-LoadPRECrash.ll | 193 |
1 files changed, 193 insertions, 0 deletions
diff --git a/test/Transforms/GVN/2009-02-17-LoadPRECrash.ll b/test/Transforms/GVN/2009-02-17-LoadPRECrash.ll new file mode 100644 index 0000000..c2d57a1 --- /dev/null +++ b/test/Transforms/GVN/2009-02-17-LoadPRECrash.ll @@ -0,0 +1,193 @@ +; 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 +} |