diff options
author | Chris Lattner <sabre@nondot.org> | 2005-05-20 22:19:34 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2005-05-20 22:19:34 +0000 |
commit | 07b5c9d68f5b9759fcca63aec9c6e298bad90ec3 (patch) | |
tree | a58d7d8f8fc76e969afa533ea0838aee4ea7ca17 /test/Transforms | |
parent | be13634907a2d6be42b328f7475e189e947d7930 (diff) | |
download | external_llvm-07b5c9d68f5b9759fcca63aec9c6e298bad90ec3.zip external_llvm-07b5c9d68f5b9759fcca63aec9c6e298bad90ec3.tar.gz external_llvm-07b5c9d68f5b9759fcca63aec9c6e298bad90ec3.tar.bz2 |
New testcase that crashes simplifycfg, identified accidentally by JohnMC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22157 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/Transforms')
-rw-r--r-- | test/Transforms/SimplifyCFG/switch-simplify-crash.ll | 153 |
1 files changed, 153 insertions, 0 deletions
diff --git a/test/Transforms/SimplifyCFG/switch-simplify-crash.ll b/test/Transforms/SimplifyCFG/switch-simplify-crash.ll new file mode 100644 index 0000000..0f94104 --- /dev/null +++ b/test/Transforms/SimplifyCFG/switch-simplify-crash.ll @@ -0,0 +1,153 @@ +; RUN: llvm-as < %s | opt -simplifycfg -disable-output + + +void %NewExtractNames() { +entry: + br bool false, label %endif.0, label %then.0 + +then.0: ; preds = %entry + br bool false, label %shortcirc_next.i, label %shortcirc_done.i + +shortcirc_next.i: ; preds = %then.0 + br label %shortcirc_done.i + +shortcirc_done.i: ; preds = %shortcirc_next.i, %then.0 + br bool false, label %then.0.i, label %else.0.i + +then.0.i: ; preds = %shortcirc_done.i + br label %NewBase.exit + +else.0.i: ; preds = %shortcirc_done.i + br bool false, label %endif.0.i, label %else.1.i + +else.1.i: ; preds = %else.0.i + br bool false, label %endif.0.i, label %else.2.i + +else.2.i: ; preds = %else.1.i + br label %NewBase.exit + +endif.0.i: ; preds = %else.1.i, %else.0.i + br label %NewBase.exit + +NewBase.exit: ; preds = %endif.0.i, %else.2.i, %then.0.i + br label %endif.0 + +endif.0: ; preds = %NewBase.exit, %entry + %tmp.32.mask = and uint 0, 31 ; <uint> [#uses=1] + switch uint %tmp.32.mask, label %label.9 [ + uint 16, label %loopentry.2 + uint 15, label %loopentry.2 + uint 14, label %loopentry.2 + uint 13, label %loopentry.2 + uint 10, label %loopentry.2 + uint 20, label %loopentry.1 + uint 19, label %loopentry.1 + uint 2, label %loopentry.0 + uint 0, label %switchexit + ] + +loopentry.0: ; preds = %endif.1, %endif.0 + br bool false, label %no_exit.0, label %switchexit + +no_exit.0: ; preds = %loopentry.0 + br bool false, label %then.1, label %else.1 + +then.1: ; preds = %no_exit.0 + br label %endif.1 + +else.1: ; preds = %no_exit.0 + br bool false, label %shortcirc_next.0, label %shortcirc_done.0 + +shortcirc_next.0: ; preds = %else.1 + br label %shortcirc_done.0 + +shortcirc_done.0: ; preds = %shortcirc_next.0, %else.1 + br bool false, label %then.2, label %endif.2 + +then.2: ; preds = %shortcirc_done.0 + br label %endif.2 + +endif.2: ; preds = %then.2, %shortcirc_done.0 + br label %endif.1 + +endif.1: ; preds = %endif.2, %then.1 + br label %loopentry.0 + +loopentry.1: ; preds = %endif.3, %endif.0, %endif.0 + br bool false, label %no_exit.1, label %switchexit + +no_exit.1: ; preds = %loopentry.1 + br bool false, label %then.3, label %else.2 + +then.3: ; preds = %no_exit.1 + br label %endif.3 + +else.2: ; preds = %no_exit.1 + br bool false, label %shortcirc_next.1, label %shortcirc_done.1 + +shortcirc_next.1: ; preds = %else.2 + br label %shortcirc_done.1 + +shortcirc_done.1: ; preds = %shortcirc_next.1, %else.2 + br bool false, label %then.4, label %endif.4 + +then.4: ; preds = %shortcirc_done.1 + br label %endif.4 + +endif.4: ; preds = %then.4, %shortcirc_done.1 + br label %endif.3 + +endif.3: ; preds = %endif.4, %then.3 + br label %loopentry.1 + +loopentry.2: ; preds = %endif.5, %endif.0, %endif.0, %endif.0, %endif.0, %endif.0 + %i.3 = phi int [ 0, %endif.5 ], [ 0, %endif.0 ], [ 0, %endif.0 ], [ 0, %endif.0 ], [ 0, %endif.0 ], [ 0, %endif.0 ] ; <int> [#uses=1] + %tmp.158 = setlt int %i.3, 0 ; <bool> [#uses=1] + br bool %tmp.158, label %no_exit.2, label %switchexit + +no_exit.2: ; preds = %loopentry.2 + br bool false, label %shortcirc_next.2, label %shortcirc_done.2 + +shortcirc_next.2: ; preds = %no_exit.2 + br label %shortcirc_done.2 + +shortcirc_done.2: ; preds = %shortcirc_next.2, %no_exit.2 + br bool false, label %then.5, label %endif.5 + +then.5: ; preds = %shortcirc_done.2 + br label %endif.5 + +endif.5: ; preds = %then.5, %shortcirc_done.2 + br label %loopentry.2 + +label.9: ; preds = %endif.0 + br bool false, label %then.6, label %endif.6 + +then.6: ; preds = %label.9 + br label %endif.6 + +endif.6: ; preds = %then.6, %label.9 + store int 0, int* null + br label %switchexit + +switchexit: ; preds = %endif.6, %loopentry.2, %loopentry.1, %loopentry.0, %endif.0 + br bool false, label %endif.7, label %then.7 + +then.7: ; preds = %switchexit + br bool false, label %shortcirc_next.3, label %shortcirc_done.3 + +shortcirc_next.3: ; preds = %then.7 + br label %shortcirc_done.3 + +shortcirc_done.3: ; preds = %shortcirc_next.3, %then.7 + br bool false, label %then.8, label %endif.8 + +then.8: ; preds = %shortcirc_done.3 + br label %endif.8 + +endif.8: ; preds = %then.8, %shortcirc_done.3 + br label %endif.7 + +endif.7: ; preds = %endif.8, %switchexit + ret void +} |