void t20() {
  int w0 = 0;
  int w1 = 0;
  int w2 = 0;
  int w3 = 0;
  int w4 = 0;
  int w5 = 0;
  int w6 = 0;
  int w7 = 0;
  int i;
#pragma acc parallel copy(w0, w1, w2, w3, w4, w5, w6, w7) num_gangs(1)         \
    num_workers(8)
  {
    int internal = 100;
#pragma acc loop worker
    for (i = 0; i < 8; i++) {
      switch (i) {
      case 0:
        w0 = internal;
        break;
      case 1:
        w1 = internal;
        break;
      case 2:
        w2 = internal;
        break;
      case 3:
        w3 = internal;
        break;
      case 4:
        w4 = internal;
        break;
      case 5:
        w5 = internal;
        break;
      case 6:
        w6 = internal;
        break;
      case 7:
        w7 = internal;
        break;
      default:
        break;
      }
    }
  }
  if (w0 != 100 || w1 != 100 || w2 != 100 || w3 != 100 || w4 != 100 ||
      w5 != 100 || w6 != 100 || w7 != 100)
    __builtin_abort();
}


x86 assembly (clang, -O0):
<t20>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%rsp
movl   $0x0,-0x4(%rbp)
movl   $0x0,-0x8(%rbp)
movl   $0x0,-0xc(%rbp)
movl   $0x0,-0x10(%rbp)
movl   $0x0,-0x14(%rbp)
movl   $0x0,-0x18(%rbp)
movl   $0x0,-0x1c(%rbp)
movl   $0x0,-0x20(%rbp)
movl   $0x64,-0x28(%rbp)
movl   $0x0,-0x24(%rbp)
cmpl   $0x8,-0x24(%rbp)
jge    11fd <t20+0xed>
mov    -0x24(%rbp),%eax
mov    %rax,-0x30(%rbp)
sub    $0x7,%rax
ja     11e5 <t20+0xd5>
mov    -0x30(%rbp),%rax
lea    0xe7c(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
mov    -0x28(%rbp),%eax
mov    %eax,-0x4(%rbp)
jmp    11ea <t20+0xda>
mov    -0x28(%rbp),%eax
mov    %eax,-0x8(%rbp)
jmp    11ea <t20+0xda>
mov    -0x28(%rbp),%eax
mov    %eax,-0xc(%rbp)
jmp    11ea <t20+0xda>
mov    -0x28(%rbp),%eax
mov    %eax,-0x10(%rbp)
jmp    11ea <t20+0xda>
mov    -0x28(%rbp),%eax
mov    %eax,-0x14(%rbp)
jmp    11ea <t20+0xda>
mov    -0x28(%rbp),%eax
mov    %eax,-0x18(%rbp)
jmp    11ea <t20+0xda>
mov    -0x28(%rbp),%eax
mov    %eax,-0x1c(%rbp)
jmp    11ea <t20+0xda>
mov    -0x28(%rbp),%eax
mov    %eax,-0x20(%rbp)
jmp    11ea <t20+0xda>
jmp    11ea <t20+0xda>
jmp    11ef <t20+0xdf>
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    115e <t20+0x4e>
cmpl   $0x64,-0x4(%rbp)
jne    124d <t20+0x13d>
cmpl   $0x64,-0x8(%rbp)
jne    124d <t20+0x13d>
cmpl   $0x64,-0xc(%rbp)
jne    124d <t20+0x13d>
cmpl   $0x64,-0x10(%rbp)
jne    124d <t20+0x13d>
cmpl   $0x64,-0x14(%rbp)
jne    124d <t20+0x13d>
cmpl   $0x64,-0x18(%rbp)
jne    124d <t20+0x13d>
cmpl   $0x64,-0x1c(%rbp)
jne    124d <t20+0x13d>
cmpl   $0x64,-0x20(%rbp)
je     1252 <t20+0x142>
call   1030 <abort@plt>
add    $0x30,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<t20>:
ret

LLVM IR (-O0):
define void @t20() {
%1 = alloca i32
%2 = alloca i32
%3 = alloca i32
%4 = alloca i32
%5 = alloca i32
%6 = alloca i32
%7 = alloca i32
%8 = alloca i32
%9 = alloca i32
%10 = alloca i32
store i32 0, i32* %1
store i32 0, i32* %2
store i32 0, i32* %3
store i32 0, i32* %4
store i32 0, i32* %5
store i32 0, i32* %6
store i32 0, i32* %7
store i32 0, i32* %8
store i32 100, i32* %10
store i32 0, i32* %9
br label %11
11: ; preds = %34, %0
%12 = load i32, i32* %9
%13 = icmp slt i32 %12, 8
br i1 %13, label %14, label %37
14: ; preds = %11
%15 = load i32, i32* %9
switch i32 %15, label %32 [
i32 0, label %16
i32 1, label %18
i32 2, label %20
i32 3, label %22
i32 4, label %24
i32 5, label %26
i32 6, label %28
i32 7, label %30
]
16: ; preds = %14
%17 = load i32, i32* %10
store i32 %17, i32* %1
br label %33
18: ; preds = %14
%19 = load i32, i32* %10
store i32 %19, i32* %2
br label %33
20: ; preds = %14
%21 = load i32, i32* %10
store i32 %21, i32* %3
br label %33
22: ; preds = %14
%23 = load i32, i32* %10
store i32 %23, i32* %4
br label %33
24: ; preds = %14
%25 = load i32, i32* %10
store i32 %25, i32* %5
br label %33
26: ; preds = %14
%27 = load i32, i32* %10
store i32 %27, i32* %6
br label %33
28: ; preds = %14
%29 = load i32, i32* %10
store i32 %29, i32* %7
br label %33
30: ; preds = %14
%31 = load i32, i32* %10
store i32 %31, i32* %8
br label %33
32: ; preds = %14
br label %33
33: ; preds = %32, %30, %28, %26, %24, %22, %20, %18, %16
br label %34
34: ; preds = %33
%35 = load i32, i32* %9
%36 = add nsw i32 %35, 1
store i32 %36, i32* %9
br label %11
37: ; preds = %11
%38 = load i32, i32* %1
%39 = icmp ne i32 %38, 100
br i1 %39, label %61, label %40
40: ; preds = %37
%41 = load i32, i32* %2
%42 = icmp ne i32 %41, 100
br i1 %42, label %61, label %43
43: ; preds = %40
%44 = load i32, i32* %3
%45 = icmp ne i32 %44, 100
br i1 %45, label %61, label %46
46: ; preds = %43
%47 = load i32, i32* %4
%48 = icmp ne i32 %47, 100
br i1 %48, label %61, label %49
49: ; preds = %46
%50 = load i32, i32* %5
%51 = icmp ne i32 %50, 100
br i1 %51, label %61, label %52
52: ; preds = %49
%53 = load i32, i32* %6
%54 = icmp ne i32 %53, 100
br i1 %54, label %61, label %55
55: ; preds = %52
%56 = load i32, i32* %7
%57 = icmp ne i32 %56, 100
br i1 %57, label %61, label %58
58: ; preds = %55
%59 = load i32, i32* %8
%60 = icmp ne i32 %59, 100
br i1 %60, label %61, label %62
61: ; preds = %58, %55, %52, %49, %46, %43, %40, %37
unreachable
62: ; preds = %58
ret void
}

LLVM IR (-O2):
define void @t20() {
ret void
}