Daniel Dunbar | 0ffb125 | 2008-08-04 16:51:22 +0000 | [diff] [blame] | 1 | // RUN: clang -emit-llvm-bc -o - %s | opt -std-compile-opts | llvm-dis > %t && |
2 | // RUN: grep "ret i32" %t | count 1 && | ||||
3 | // RUN: grep "ret i32 210" %t | count 1 | ||||
4 | |||||
5 | static int foo(unsigned i) { | ||||
6 | const void *addrs[] = { &&L1, &&L2, &&L3, &&L4, &&L5 }; | ||||
7 | int res = 1; | ||||
8 | |||||
9 | goto *addrs[i]; | ||||
10 | L5: res *= 11; | ||||
11 | L4: res *= 7; | ||||
12 | L3: res *= 5; | ||||
13 | L2: res *= 3; | ||||
14 | L1: res *= 2; | ||||
15 | return res; | ||||
16 | } | ||||
17 | |||||
18 | int bar() { | ||||
19 | return foo(3); | ||||
20 | } |