void f1(int x) {
  int i;
  if (x)
#pragma omp barrier
    ;
  if (x)
#pragma omp flush
    ;
  if (x)
#pragma omp taskwait
    ;
  if (x)
#pragma omp taskyield
    ;
#pragma omp parallel
  {
    if (x)
#pragma omp cancel parallel
      ;
  }
#pragma omp parallel
  {
    if (x)
#pragma omp cancellation point parallel
      ;
  }
#pragma omp for ordered(1)
  for (i = 0; i < 16; i++) {
    if (x)
#pragma omp ordered depend(source)
      ;
    if (x)
#pragma omp ordered depend(sink : i - 1)
      ;
  }
  if (x)
#pragma omp target enter data map(to : i)
    ;
  if (x)
#pragma omp target update to(i)
    ;
  if (x)
#pragma omp target exit data map(from : i)
    ;
}


x86 assembly (clang, -O0):
<f1>:
push   %rbp
mov    %rsp,%rbp
mov    %edi,-0x4(%rbp)
cmpl   $0x0,-0x4(%rbp)
je     1116 <f1+0x16>
jmp    1116 <f1+0x16>
cmpl   $0x0,-0x4(%rbp)
je     1125 <f1+0x25>
jmp    1125 <f1+0x25>
cmpl   $0x0,-0x4(%rbp)
je     1134 <f1+0x34>
jmp    1134 <f1+0x34>
cmpl   $0x0,-0x4(%rbp)
je     1143 <f1+0x43>
jmp    1143 <f1+0x43>
cmpl   $0x0,-0x4(%rbp)
je     1152 <f1+0x52>
jmp    1152 <f1+0x52>
cmpl   $0x0,-0x4(%rbp)
je     1161 <f1+0x61>
jmp    1161 <f1+0x61>
movl   $0x0,-0x8(%rbp)
cmpl   $0x10,-0x8(%rbp)
jge    11a3 <f1+0xa3>
cmpl   $0x0,-0x4(%rbp)
je     1181 <f1+0x81>
jmp    1181 <f1+0x81>
cmpl   $0x0,-0x4(%rbp)
je     1190 <f1+0x90>
jmp    1190 <f1+0x90>
jmp    1195 <f1+0x95>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1168 <f1+0x68>
cmpl   $0x0,-0x4(%rbp)
je     11b2 <f1+0xb2>
jmp    11b2 <f1+0xb2>
cmpl   $0x0,-0x4(%rbp)
je     11c1 <f1+0xc1>
jmp    11c1 <f1+0xc1>
cmpl   $0x0,-0x4(%rbp)
je     11d0 <f1+0xd0>
jmp    11d0 <f1+0xd0>
pop    %rbp
ret

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

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

LLVM IR (-O2):
define void @f1(i32 %0) {
ret void
}