// RUN: %clang_cc1 -triple i386-unknown-unknown -O3 %s -emit-llvm -o - | FileCheck %s | |
int foo(int i) { | |
int j = 0; | |
switch (i) { | |
case -1: | |
j = 1; break; | |
case 1 : | |
j = 2; break; | |
case 2: | |
j = 3; break; | |
default: | |
j = 42; break; | |
} | |
j = j + 1; | |
return j; | |
} | |
int foo2(int i) { | |
int j = 0; | |
switch (i) { | |
case 1 : | |
j = 2; break; | |
case 2 ... 10: | |
j = 3; break; | |
default: | |
j = 42; break; | |
} | |
j = j + 1; | |
return j; | |
} | |
int foo3(int i) { | |
int j = 0; | |
switch (i) { | |
default: | |
j = 42; break; | |
case 111: | |
j = 111; break; | |
case 0 ... 100: | |
j = 1; break; | |
case 222: | |
j = 222; break; | |
} | |
return j; | |
} | |
static int foo4(int i) { | |
int j = 0; | |
switch (i) { | |
case 111: | |
j = 111; break; | |
case 0 ... 100: | |
j = 1; break; | |
case 222: | |
j = 222; break; | |
default: | |
j = 42; break; | |
case 501 ... 600: | |
j = 5; break; | |
} | |
return j; | |
} | |
// CHECK: define i32 @foo4t() | |
// CHECK: ret i32 376 | |
// CHECK: } | |
int foo4t() { | |
// 111 + 1 + 222 + 42 = 376 | |
return foo4(111) + foo4(99) + foo4(222) + foo4(601); | |
} | |
// CHECK: define void @foo5() | |
// CHECK-NOT: switch | |
// CHECK: } | |
void foo5(){ | |
switch(0){ | |
default: | |
if (0) { | |
} | |
} | |
} | |
// CHECK: define void @foo6() | |
// CHECK-NOT: switch | |
// CHECK: } | |
void foo6(){ | |
switch(0){ | |
} | |
} | |
// CHECK: define void @foo7() | |
// CHECK-NOT: switch | |
// CHECK: } | |
void foo7(){ | |
switch(0){ | |
foo7(); | |
} | |
} | |