1a11d129aa8ad9fa123e72d0663c327d5578d2602Eric Christopher// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
2a11d129aa8ad9fa123e72d0663c327d5578d2602Eric Christopher
3a11d129aa8ad9fa123e72d0663c327d5578d2602Eric Christopherint code[]={0,0,0,0,1};
4a11d129aa8ad9fa123e72d0663c327d5578d2602Eric Christophervoid foo(int x) {
5a11d129aa8ad9fa123e72d0663c327d5578d2602Eric Christopher  volatile int b;
6a11d129aa8ad9fa123e72d0663c327d5578d2602Eric Christopher  b = 0xffffffff;
7a11d129aa8ad9fa123e72d0663c327d5578d2602Eric Christopher}
8a11d129aa8ad9fa123e72d0663c327d5578d2602Eric Christophervoid bar(int *pc) {
9a11d129aa8ad9fa123e72d0663c327d5578d2602Eric Christopher  static const void *l[] = {&&lab0, &&end};
10a11d129aa8ad9fa123e72d0663c327d5578d2602Eric Christopher
11a11d129aa8ad9fa123e72d0663c327d5578d2602Eric Christopher  foo(0);
12a11d129aa8ad9fa123e72d0663c327d5578d2602Eric Christopher  goto *l[*pc];
13a11d129aa8ad9fa123e72d0663c327d5578d2602Eric Christopher lab0:
14a11d129aa8ad9fa123e72d0663c327d5578d2602Eric Christopher  foo(0);
15a11d129aa8ad9fa123e72d0663c327d5578d2602Eric Christopher  pc++;
16a11d129aa8ad9fa123e72d0663c327d5578d2602Eric Christopher  goto *l[*pc];
17a11d129aa8ad9fa123e72d0663c327d5578d2602Eric Christopher end:
18a11d129aa8ad9fa123e72d0663c327d5578d2602Eric Christopher  return;
19a11d129aa8ad9fa123e72d0663c327d5578d2602Eric Christopher}
20a11d129aa8ad9fa123e72d0663c327d5578d2602Eric Christopherint main() {
21a11d129aa8ad9fa123e72d0663c327d5578d2602Eric Christopher  bar(code);
22a11d129aa8ad9fa123e72d0663c327d5578d2602Eric Christopher  return 0;
23a11d129aa8ad9fa123e72d0663c327d5578d2602Eric Christopher}
24