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