forked from OSchip/llvm-project
New testcase to ensure that switch folding happens correctly
llvm-svn: 7922
This commit is contained in:
parent
031340a551
commit
26dc7b6224
|
@ -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
|
||||
}
|
Loading…
Reference in New Issue