1*67e74705SXin Li // RUN: %clang_cc1 -triple x86_64-unknown-unknown -O3 -emit-llvm -o - %s | grep "ret i32 2520" 2*67e74705SXin Li foo(unsigned i)3*67e74705SXin Listatic int foo(unsigned i) { 4*67e74705SXin Li void *addrs[] = { &&L1, &&L2, &&L3, &&L4, &&L5 }; 5*67e74705SXin Li int res = 1; 6*67e74705SXin Li 7*67e74705SXin Li goto *addrs[i]; 8*67e74705SXin Li L5: res *= 11; 9*67e74705SXin Li L4: res *= 7; 10*67e74705SXin Li L3: res *= 5; 11*67e74705SXin Li L2: res *= 3; 12*67e74705SXin Li L1: res *= 2; 13*67e74705SXin Li return res; 14*67e74705SXin Li } 15*67e74705SXin Li foo2(unsigned i)16*67e74705SXin Listatic int foo2(unsigned i) { 17*67e74705SXin Li static const void *addrs[] = { &&L1, &&L2, &&L3, &&L4, &&L5 }; 18*67e74705SXin Li int res = 1; 19*67e74705SXin Li 20*67e74705SXin Li goto *addrs[i]; 21*67e74705SXin Li L5: res *= 11; 22*67e74705SXin Li L4: res *= 7; 23*67e74705SXin Li L3: res *= 5; 24*67e74705SXin Li L2: res *= 3; 25*67e74705SXin Li L1: res *= 2; 26*67e74705SXin Li return res; 27*67e74705SXin Li } 28*67e74705SXin Li main()29*67e74705SXin Liint main() { 30*67e74705SXin Li return foo(3)+foo2(4); 31*67e74705SXin Li } 32