int test1() {
  int i, j, k, b[10];
  int a[30];
  double d;
  float r;
  i = 0;
#pragma acc loop
  while (1) {
    if (i > 0)
      break;
    i = i + 1;
  }
  i = 0;
#pragma acc loop
  for (;;) {
    if (i > 0)
      break;
    i = i + 1;
  }
  i = 0;
#pragma acc loop
  do {
    i = i + 1;
  } while (i < 4);
#pragma acc loop
  while (i < 8) {
    i = i + 1;
  }
#pragma acc loop
  for (d = 1; d < 30; d += 6) {
    i = d;
    a[i] = 1;
  }
#pragma acc loop
  for (i = 1; i < 30; i++)
    if (i == 16)
      break;
#pragma acc loop
  for (i = 1; i < 10; i++) {
  }
#pragma acc loop
  for (i = 1; i < 10; i += 2) {
    a[i] = i;
  }
#pragma acc loop
  a[1] = 1;
  for (i = 1; i < 10; i++)
    ;
#pragma acc parallel loop
  for (i = 1; i < 10; i++) {
  }
#pragma acc kernels loop
  for (i = 1; i < 10; i++) {
  }
  return 0;
}


x86 assembly (clang, -O0):
<test1>:
push   %rbp
mov    %rsp,%rbp
sub    $0x50,%rsp
movl   $0x0,-0x4(%rbp)
cmpl   $0x0,-0x4(%rbp)
jle    111e <test1+0x1e>
jmp    112c <test1+0x2c>
mov    -0x4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4(%rbp)
jmp    110f <test1+0xf>
movl   $0x0,-0x4(%rbp)
cmpl   $0x0,-0x4(%rbp)
jle    1142 <test1+0x42>
jmp    1150 <test1+0x50>
mov    -0x4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4(%rbp)
jmp    1133 <test1+0x33>
movl   $0x0,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4(%rbp)
cmpl   $0x4,-0x4(%rbp)
jl     1157 <test1+0x57>
jmp    116f <test1+0x6f>
cmpl   $0x8,-0x4(%rbp)
jge    1187 <test1+0x87>
mov    -0x4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4(%rbp)
jmp    116f <test1+0x6f>
movsd  0xe71(%rip),%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  0xe69(%rip),%xmm0
ucomisd -0xc8(%rbp),%xmm0
ff
jbe    11e4 <test1+0xe4>
cvttsd2si -0xc8(%rbp),%eax
ff
mov    %eax,-0x4(%rbp)
movslq -0x4(%rbp),%rax
movl   $0x1,-0xc0(%rbp,%rax,4)
movsd  0xe41(%rip),%xmm0
addsd  -0xc8(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
jmp    1197 <test1+0x97>
movl   $0x1,-0x4(%rbp)
cmpl   $0x1e,-0x4(%rbp)
jge    1217 <test1+0x117>
cmpl   $0x10,-0x4(%rbp)
jne    1204 <test1+0x104>
jmp    1217 <test1+0x117>
jmp    1209 <test1+0x109>
mov    -0x4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4(%rbp)
jmp    11eb <test1+0xeb>
movl   $0x1,-0x4(%rbp)
cmpl   $0xa,-0x4(%rbp)
jge    123b <test1+0x13b>
jmp    122d <test1+0x12d>
mov    -0x4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4(%rbp)
jmp    121e <test1+0x11e>
movl   $0x1,-0x4(%rbp)
cmpl   $0xa,-0x4(%rbp)
jge    1268 <test1+0x168>
mov    -0x4(%rbp),%ecx
movslq -0x4(%rbp),%rax
mov    %ecx,-0xc0(%rbp,%rax,4)
mov    -0x4(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x4(%rbp)
jmp    1242 <test1+0x142>
movl   $0x1,-0xbc(%rbp)
movl   $0x1,-0x4(%rbp)
cmpl   $0xa,-0x4(%rbp)
jge    1296 <test1+0x196>
jmp    1288 <test1+0x188>
mov    -0x4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4(%rbp)
jmp    1279 <test1+0x179>
movl   $0x1,-0x4(%rbp)
cmpl   $0xa,-0x4(%rbp)
jge    12ba <test1+0x1ba>
jmp    12ac <test1+0x1ac>
mov    -0x4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4(%rbp)
jmp    129d <test1+0x19d>
movl   $0x1,-0x4(%rbp)
cmpl   $0xa,-0x4(%rbp)
jge    12de <test1+0x1de>
jmp    12d0 <test1+0x1d0>
mov    -0x4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4(%rbp)
jmp    12c1 <test1+0x1c1>
xor    %eax,%eax
add    $0x50,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<test1>:
xor    %eax,%eax
ret

LLVM IR (-O0):
define i32 @test1() {
%1 = alloca i32
%2 = alloca i32
%3 = alloca i32
%4 = alloca [10 x i32]
%5 = alloca [30 x i32]
%6 = alloca double
%7 = alloca float
store i32 0, i32* %1
br label %8
8: ; preds = %0, %12
%9 = load i32, i32* %1
%10 = icmp sgt i32 %9, 0
br i1 %10, label %11, label %12
11: ; preds = %8
br label %15
12: ; preds = %8
%13 = load i32, i32* %1
%14 = add nsw i32 %13, 1
store i32 %14, i32* %1
br label %8
15: ; preds = %11
store i32 0, i32* %1
br label %16
16: ; preds = %20, %15
%17 = load i32, i32* %1
%18 = icmp sgt i32 %17, 0
br i1 %18, label %19, label %20
19: ; preds = %16
br label %23
20: ; preds = %16
%21 = load i32, i32* %1
%22 = add nsw i32 %21, 1
store i32 %22, i32* %1
br label %16
23: ; preds = %19
store i32 0, i32* %1
br label %24
24: ; preds = %27, %23
%25 = load i32, i32* %1
%26 = add nsw i32 %25, 1
store i32 %26, i32* %1
br label %27
27: ; preds = %24
%28 = load i32, i32* %1
%29 = icmp slt i32 %28, 4
br i1 %29, label %24, label %30
30: ; preds = %27
br label %31
31: ; preds = %34, %30
%32 = load i32, i32* %1
%33 = icmp slt i32 %32, 8
br i1 %33, label %34, label %37
34: ; preds = %31
%35 = load i32, i32* %1
%36 = add nsw i32 %35, 1
store i32 %36, i32* %1
br label %31
37: ; preds = %31
store double 1.000000e+00, double* %6
br label %38
38: ; preds = %47, %37
%39 = load double, double* %6
%40 = fcmp olt double %39, 3.000000e+01
br i1 %40, label %41, label %50
41: ; preds = %38
%42 = load double, double* %6
%43 = fptosi double %42 to i32
store i32 %43, i32* %1
%44 = load i32, i32* %1
%45 = sext i32 %44 to i64
%46 = getelementptr inbounds [30 x i32], [30 x i32]* %5, i64 0, i64 %45
store i32 1, i32* %46
br label %47
47: ; preds = %41
%48 = load double, double* %6
%49 = fadd double %48, 6.000000e+00
store double %49, double* %6
br label %38
50: ; preds = %38
store i32 1, i32* %1
br label %51
51: ; preds = %59, %50
%52 = load i32, i32* %1
%53 = icmp slt i32 %52, 30
br i1 %53, label %54, label %62
54: ; preds = %51
%55 = load i32, i32* %1
%56 = icmp eq i32 %55, 16
br i1 %56, label %57, label %58
57: ; preds = %54
br label %62
58: ; preds = %54
br label %59
59: ; preds = %58
%60 = load i32, i32* %1
%61 = add nsw i32 %60, 1
store i32 %61, i32* %1
br label %51
62: ; preds = %57, %51
store i32 1, i32* %1
br label %63
63: ; preds = %67, %62
%64 = load i32, i32* %1
%65 = icmp slt i32 %64, 10
br i1 %65, label %66, label %70
66: ; preds = %63
br label %67
67: ; preds = %66
%68 = load i32, i32* %1
%69 = add nsw i32 %68, 1
store i32 %69, i32* %1
br label %63
70: ; preds = %63
store i32 1, i32* %1
br label %71
71: ; preds = %79, %70
%72 = load i32, i32* %1
%73 = icmp slt i32 %72, 10
br i1 %73, label %74, label %82
74: ; preds = %71
%75 = load i32, i32* %1
%76 = load i32, i32* %1
%77 = sext i32 %76 to i64
%78 = getelementptr inbounds [30 x i32], [30 x i32]* %5, i64 0, i64 %77
store i32 %75, i32* %78
br label %79
79: ; preds = %74
%80 = load i32, i32* %1
%81 = add nsw i32 %80, 2
store i32 %81, i32* %1
br label %71
82: ; preds = %71
%83 = getelementptr inbounds [30 x i32], [30 x i32]* %5, i64 0, i64 1
store i32 1, i32* %83
store i32 1, i32* %1
br label %84
84: ; preds = %88, %82
%85 = load i32, i32* %1
%86 = icmp slt i32 %85, 10
br i1 %86, label %87, label %91
87: ; preds = %84
br label %88
88: ; preds = %87
%89 = load i32, i32* %1
%90 = add nsw i32 %89, 1
store i32 %90, i32* %1
br label %84
91: ; preds = %84
store i32 1, i32* %1
br label %92
92: ; preds = %96, %91
%93 = load i32, i32* %1
%94 = icmp slt i32 %93, 10
br i1 %94, label %95, label %99
95: ; preds = %92
br label %96
96: ; preds = %95
%97 = load i32, i32* %1
%98 = add nsw i32 %97, 1
store i32 %98, i32* %1
br label %92
99: ; preds = %92
store i32 1, i32* %1
br label %100
100: ; preds = %104, %99
%101 = load i32, i32* %1
%102 = icmp slt i32 %101, 10
br i1 %102, label %103, label %107
103: ; preds = %100
br label %104
104: ; preds = %103
%105 = load i32, i32* %1
%106 = add nsw i32 %105, 1
store i32 %106, i32* %1
br label %100
107: ; preds = %100
ret i32 0
}

LLVM IR (-O2):
define i32 @test1() {
ret i32 0
}