Displaying 2 results from an estimated 2 matches for "label_case3".
Did you mean:
label_case2
2013 Dec 20
3
[LLVMdev] Switch instruction optimization
...E int2e(long i) {
switch(i) {
case 0: return A;
case 1: return B;
case 2: return C;
default: return A;
}
}
It is compiled to this IR with O3 optimization:
define i64 @int2e(i64 %i_arg) #0 {
entry:
switch i64 %i_arg, label %label_case1 [
i64 2, label %label_case3
i64 1, label %label_case2
]
label_case1: ; preds = %entry,
%label_case3, %label_case2
%merge = phi i64 [ %i_arg, %label_case2 ], [ %i_arg, %label_case3 ], [ 0,
%entry ]
ret i64 %merge
label_case2: ; preds = %entry...
2013 Dec 20
0
[LLVMdev] Switch instruction optimization
...t's a guess. I'm
reading the code for the first time.) I'd suggest filling a bug with all
of the options you're running with. We really should catch this case.
Well, really there's two missed optimization cases here. Even without
the case value forwarding, label_case2 and label_case3 are redundant.
Philip
On 12/20/13 6:33 AM, Pawe? Bylica wrote:
> Hello there,
>
> I have a high level code which would look like that in C++:
>
> enum E { A, B, C };
>
> E int2e(long i) {
> switch(i) {
> case 0: return A;
> case 1: return B;
>...