diff --git a/clang/lib/CodeGen/CGStmt.cpp b/clang/lib/CodeGen/CGStmt.cpp --- a/clang/lib/CodeGen/CGStmt.cpp +++ b/clang/lib/CodeGen/CGStmt.cpp @@ -947,7 +947,6 @@ Expr::EvalResult Result; if (LanguageRequiresProgress()) { if (!S.getCond()) { - LoopMustProgress = true; FnIsMustProgress = false; } else if (!S.getCond()->EvaluateAsInt(Result, getContext())) { LoopMustProgress = true; diff --git a/clang/test/CodeGen/attr-mustprogress-1.c b/clang/test/CodeGen/attr-mustprogress-1.c --- a/clang/test/CodeGen/attr-mustprogress-1.c +++ b/clang/test/CodeGen/attr-mustprogress-1.c @@ -7,6 +7,17 @@ int a = 0; int b = 0; +// CHECK: Function Attrs: noinline nounwind optnone +// CHECK-LABEL: @f0( +// CHECK-NEXT: entry: +// CHECK-NEXT: br label [[FOR_COND:%.*]] +// CHECK: for.cond: +// CHECK-NOT: br label [[FOR_COND]], !llvm.loop !{{.*}} +// +void f0() { + for (; ;) ; +} + // CHECK: Function Attrs: noinline nounwind optnone // CHECK-LABEL: @f1( // CHECK-NEXT: entry: diff --git a/clang/test/CodeGen/attr-mustprogress-1.cpp b/clang/test/CodeGen/attr-mustprogress-1.cpp --- a/clang/test/CodeGen/attr-mustprogress-1.cpp +++ b/clang/test/CodeGen/attr-mustprogress-1.cpp @@ -7,6 +7,16 @@ int a = 0; int b = 0; +// CHECK: Function Attrs: noinline nounwind optnone +// CHECK-LABEL: @_Z2f0v( +// CHECK-NEXT: entry: +// CHECK-NEXT: br label [[FOR_COND:%.*]] +// CHECK: for.cond: +// CHECK-NOT: br label [[FOR_COND]], !llvm.loop !{{.*}} +void f0() { + for (; ;) ; +} + // CHECK: Function Attrs: noinline nounwind optnone // CHECK-LABEL: @_Z2f1v( // CHECK-NEXT: entry: