1 // This tests loop unrolling and loop deletion (enabled under -O1)
2 // RUN: %clang_cc1 -std=c11 -O1 -fno-unroll-loops -S -o - %s -emit-llvm | FileCheck %s
3 // RUN: %clang_cc1 -std=c99 -O1 -fno-unroll-loops -S -o - %s -emit-llvm | FileCheck %s --check-prefix C99
9 for (int i
= 0; i
< 16; ++i
)
13 // Check br i1 to make sure that the loop is fully unrolled
22 #pragma clang loop unroll(full)
23 for (int i
= 0; i
< 5; ++i
)
28 // Check br i1 to make sure the loop is gone, there will still be a label branch for the infinite loop.
29 // In C99, there was no forward progress requirement, so we expect the infinite loop to still exist,
30 // but for C11 and onwards, the infinite loop can be deleted.
31 // CHECK-LABEL: Helper
37 // CHECK-NEXT: ret void