// This tests loop unrolling and loop deletion (enabled under -O1)
// RUN: %clang_cc1 -std=c11 -O1 -fno-unroll-loops -S -o - %s -emit-llvm | FileCheck %s
// RUN: %clang_cc1 -std=c99 -O1 -fno-unroll-loops -S -o - %s -emit-llvm | FileCheck %s --check-prefix C99
extern int a;
int b = 0;
int
// Check br i1 to make sure that the loop is fully unrolled
// CHECK-LABEL: foo
// CHECK-NOT: br i1
void
// Check br i1 to make sure the loop is gone, there will still be a label branch for the infinite loop.
// In C99, there was no forward progress requirement, so we expect the infinite loop to still exist,
// but for C11 and onwards, the infinite loop can be deleted.
// CHECK-LABEL: Helper
// C99: br label
// C99-NOT: br i1
// C99: br label
// CHECK: entry:
// CHECK-NOT: br i1
// CHECK-NEXT: ret void