void test_loop_messages() {
  float a[100], b[100], c[100];
#pragma omp parallel
#pragma omp for
  for (float fi = 0; fi < 10.0; fi++) {
    c[(int)fi] = a[(int)fi] + b[(int)fi];
  }
#pragma omp parallel
#pragma omp for
  for (double fi = 0; fi < 10.0; fi++) {
    c[(int)fi] = a[(int)fi] + b[(int)fi];
  }
#pragma omp for
  for (__int128 ii = 0; ii < 10; ii++) {
    c[ii] = a[ii] + b[ii];
  }
#pragma omp for order
  for (int i = 0; i < 10; ++i)
    ;
#pragma omp for order(
  for (int i = 0; i < 10; ++i)
    ;
#pragma omp for order(none
  for (int i = 0; i < 10; ++i)
    ;
#pragma omp for order(concurrent
  for (int i = 0; i < 10; ++i)
    ;
#pragma omp for ordered order(concurrent)
  for (int i = 0; i < 10; ++i)
    ;
}


x86 assembly (clang, -O0):
<test_loop_messages>:
push   %rbp
mov    %rsp,%rbp
sub    $0x470,%rsp
xorps  %xmm0,%xmm0
movss  %xmm0,-0x4b4(%rbp)
ff
movss  -0x4b4(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm1
movsd  0xed6(%rip),%xmm0
ucomisd %xmm1,%xmm0
jbe    118a <test_loop_messages+0x8a>
cvttss2si -0x4b4(%rbp),%eax
ff
cltq
movss  -0x190(%rbp,%rax,4),%xmm0
ff ff
cvttss2si -0x4b4(%rbp),%eax
ff
cltq
addss  -0x320(%rbp,%rax,4),%xmm0
ff ff
cvttss2si -0x4b4(%rbp),%eax
ff
cltq
movss  %xmm0,-0x4b0(%rbp,%rax,4)
ff ff
movss  0xe9b(%rip),%xmm0
addss  -0x4b4(%rbp),%xmm0
ff
movss  %xmm0,-0x4b4(%rbp)
ff
jmp    1116 <test_loop_messages+0x16>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x4c0(%rbp)
ff
movsd  0xe63(%rip),%xmm0
ucomisd -0x4c0(%rbp),%xmm0
ff
jbe    1201 <test_loop_messages+0x101>
cvttsd2si -0x4c0(%rbp),%eax
ff
cltq
movss  -0x190(%rbp,%rax,4),%xmm0
ff ff
cvttsd2si -0x4c0(%rbp),%eax
ff
cltq
addss  -0x320(%rbp,%rax,4),%xmm0
ff ff
cvttsd2si -0x4c0(%rbp),%eax
ff
cltq
movss  %xmm0,-0x4b0(%rbp,%rax,4)
ff ff
movsd  0xe1c(%rip),%xmm0
addsd  -0x4c0(%rbp),%xmm0
ff
movsd  %xmm0,-0x4c0(%rbp)
ff
jmp    1195 <test_loop_messages+0x95>
movq   $0x0,-0x4c8(%rbp)
movq   $0x0,-0x4d0(%rbp)
mov    -0x4d0(%rbp),%rsi
mov    -0x4c8(%rbp),%rcx
xor    %eax,%eax
mov    $0x9,%edx
sub    %rsi,%rdx
sbb    %rcx,%rax
jl     1282 <test_loop_messages+0x182>
jmp    123d <test_loop_messages+0x13d>
mov    -0x4d0(%rbp),%rax
movss  -0x190(%rbp,%rax,4),%xmm0
ff ff
movss  -0x320(%rbp,%rax,4),%xmm1
ff ff
addss  %xmm1,%xmm0
movss  %xmm0,-0x4b0(%rbp,%rax,4)
ff ff
mov    -0x4c8(%rbp),%rax
addq   $0x1,-0x4d0(%rbp)
01
adc    $0x0,%rax
mov    %rax,-0x4c8(%rbp)
jmp    1217 <test_loop_messages+0x117>
movl   $0x0,-0x4d4(%rbp)
cmpl   $0xa,-0x4d4(%rbp)
jge    12b2 <test_loop_messages+0x1b2>
jmp    129e <test_loop_messages+0x19e>
mov    -0x4d4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4d4(%rbp)
jmp    128c <test_loop_messages+0x18c>
movl   $0x0,-0x4d8(%rbp)
cmpl   $0xa,-0x4d8(%rbp)
jge    12e2 <test_loop_messages+0x1e2>
jmp    12ce <test_loop_messages+0x1ce>
mov    -0x4d8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4d8(%rbp)
jmp    12bc <test_loop_messages+0x1bc>
movl   $0x0,-0x4dc(%rbp)
cmpl   $0xa,-0x4dc(%rbp)
jge    1312 <test_loop_messages+0x212>
jmp    12fe <test_loop_messages+0x1fe>
mov    -0x4dc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4dc(%rbp)
jmp    12ec <test_loop_messages+0x1ec>
movl   $0x0,-0x4e0(%rbp)
cmpl   $0xa,-0x4e0(%rbp)
jge    1342 <test_loop_messages+0x242>
jmp    132e <test_loop_messages+0x22e>
mov    -0x4e0(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4e0(%rbp)
jmp    131c <test_loop_messages+0x21c>
movl   $0x0,-0x4e4(%rbp)
cmpl   $0xa,-0x4e4(%rbp)
jge    1372 <test_loop_messages+0x272>
jmp    135e <test_loop_messages+0x25e>
mov    -0x4e4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4e4(%rbp)
jmp    134c <test_loop_messages+0x24c>
add    $0x470,%rsp
pop    %rbp
ret

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

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

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