diff options
-rw-r--r-- | test/Transforms/SimplifyCFG/2003-08-17-FoldSwitch.ll | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/test/Transforms/SimplifyCFG/2003-08-17-FoldSwitch.ll b/test/Transforms/SimplifyCFG/2003-08-17-FoldSwitch.ll new file mode 100644 index 0000000000..79b55a4c61 --- /dev/null +++ b/test/Transforms/SimplifyCFG/2003-08-17-FoldSwitch.ll @@ -0,0 +1,49 @@ +; RUN: as < %s | opt -simplifycfg | dis | not grep switch + +int %test1() { ; Test normal folding + switch uint 5, label %Default [ + uint 0, label %Foo + uint 1, label %Bar + uint 2, label %Baz + uint 5, label %TheDest + ] +Default:ret int -1 +Foo: ret int -2 +Bar: ret int -3 +Baz: ret int -4 +TheDest:ret int 1234 +} + +int %test2() { ; Test folding to default dest + switch uint 3, label %Default [ + uint 0, label %Foo + uint 1, label %Bar + uint 2, label %Baz + uint 5, label %TheDest + ] +Default:ret int 1234 +Foo: ret int -2 +Bar: ret int -5 +Baz: ret int -6 +TheDest:ret int -8 +} + +int %test3(bool %C) { ; Test folding all to same dest + br bool %C, label %Start, label %TheDest +Start: + switch uint 3, label %TheDest [ + uint 0, label %TheDest + uint 1, label %TheDest + uint 2, label %TheDest + uint 5, label %TheDest + ] +TheDest: ret int 1234 +} + +int %test4(uint %C) { ; Test folding switch -> branch + switch uint %C, label %L1 [ + uint 0, label %L2 + ] +L1: ret int 0 +L2: ret int 1 +} |