[clang] 6f33936 - Explain why the array bound is non-constant in VLA diagnostics.

Richard Smith via cfe-commits cfe-commits at lists.llvm.org
Wed Aug 19 15:46:04 PDT 2020


Author: Richard Smith
Date: 2020-08-19T15:45:51-07:00
New Revision: 6f339367195e7464df87571062529bbe20157bdf

URL: https://github.com/llvm/llvm-project/commit/6f339367195e7464df87571062529bbe20157bdf
DIFF: https://github.com/llvm/llvm-project/commit/6f339367195e7464df87571062529bbe20157bdf.diff

LOG: Explain why the array bound is non-constant in VLA diagnostics.

In passing, also use a more precise diagnostic to explain why an
expression is not an ICE if it's not of integral type.

Added: 
    clang/test/SemaCXX/vla-construct.cpp

Modified: 
    clang/include/clang/Basic/DiagnosticGroups.td
    clang/include/clang/Basic/DiagnosticSemaKinds.td
    clang/include/clang/Sema/Sema.h
    clang/lib/Sema/SemaDeclCXX.cpp
    clang/lib/Sema/SemaExpr.cpp
    clang/lib/Sema/SemaTemplate.cpp
    clang/lib/Sema/SemaType.cpp
    clang/test/CXX/drs/dr0xx.cpp
    clang/test/CXX/drs/dr3xx.cpp
    clang/test/CXX/drs/dr4xx.cpp
    clang/test/CXX/expr/expr.const/p2-0x.cpp
    clang/test/CXX/expr/expr.const/p5-0x.cpp
    clang/test/OpenMP/atomic_messages.c
    clang/test/OpenMP/critical_messages.cpp
    clang/test/OpenMP/declare_simd_messages.cpp
    clang/test/OpenMP/distribute_collapse_messages.cpp
    clang/test/OpenMP/distribute_parallel_for_collapse_messages.cpp
    clang/test/OpenMP/distribute_parallel_for_simd_aligned_messages.cpp
    clang/test/OpenMP/distribute_parallel_for_simd_collapse_messages.cpp
    clang/test/OpenMP/distribute_parallel_for_simd_misc_messages.c
    clang/test/OpenMP/distribute_parallel_for_simd_safelen_messages.cpp
    clang/test/OpenMP/distribute_parallel_for_simd_simdlen_messages.cpp
    clang/test/OpenMP/distribute_simd_aligned_messages.cpp
    clang/test/OpenMP/distribute_simd_collapse_messages.cpp
    clang/test/OpenMP/distribute_simd_misc_messages.c
    clang/test/OpenMP/distribute_simd_safelen_messages.cpp
    clang/test/OpenMP/distribute_simd_simdlen_messages.cpp
    clang/test/OpenMP/for_collapse_messages.cpp
    clang/test/OpenMP/for_misc_messages.c
    clang/test/OpenMP/for_ordered_clause.cpp
    clang/test/OpenMP/for_simd_aligned_messages.cpp
    clang/test/OpenMP/for_simd_collapse_messages.cpp
    clang/test/OpenMP/for_simd_misc_messages.c
    clang/test/OpenMP/for_simd_safelen_messages.cpp
    clang/test/OpenMP/for_simd_simdlen_messages.cpp
    clang/test/OpenMP/master_taskloop_collapse_messages.cpp
    clang/test/OpenMP/master_taskloop_misc_messages.c
    clang/test/OpenMP/master_taskloop_simd_aligned_messages.cpp
    clang/test/OpenMP/master_taskloop_simd_collapse_messages.cpp
    clang/test/OpenMP/master_taskloop_simd_misc_messages.c
    clang/test/OpenMP/master_taskloop_simd_safelen_messages.cpp
    clang/test/OpenMP/master_taskloop_simd_simdlen_messages.cpp
    clang/test/OpenMP/ordered_messages.cpp
    clang/test/OpenMP/parallel_for_collapse_messages.cpp
    clang/test/OpenMP/parallel_for_misc_messages.c
    clang/test/OpenMP/parallel_for_ordered_messages.cpp
    clang/test/OpenMP/parallel_for_simd_aligned_messages.cpp
    clang/test/OpenMP/parallel_for_simd_collapse_messages.cpp
    clang/test/OpenMP/parallel_for_simd_misc_messages.c
    clang/test/OpenMP/parallel_for_simd_safelen_messages.cpp
    clang/test/OpenMP/parallel_for_simd_simdlen_messages.cpp
    clang/test/OpenMP/parallel_master_taskloop_collapse_messages.cpp
    clang/test/OpenMP/parallel_master_taskloop_misc_messages.c
    clang/test/OpenMP/parallel_master_taskloop_simd_aligned_messages.cpp
    clang/test/OpenMP/parallel_master_taskloop_simd_collapse_messages.cpp
    clang/test/OpenMP/parallel_master_taskloop_simd_misc_messages.c
    clang/test/OpenMP/parallel_master_taskloop_simd_safelen_messages.cpp
    clang/test/OpenMP/parallel_master_taskloop_simd_simdlen_messages.cpp
    clang/test/OpenMP/simd_aligned_messages.cpp
    clang/test/OpenMP/simd_collapse_messages.cpp
    clang/test/OpenMP/simd_misc_messages.c
    clang/test/OpenMP/simd_safelen_messages.cpp
    clang/test/OpenMP/simd_simdlen_messages.cpp
    clang/test/OpenMP/target_parallel_for_collapse_messages.cpp
    clang/test/OpenMP/target_parallel_for_misc_messages.c
    clang/test/OpenMP/target_parallel_for_ordered_messages.cpp
    clang/test/OpenMP/target_parallel_for_simd_aligned_messages.cpp
    clang/test/OpenMP/target_parallel_for_simd_collapse_messages.cpp
    clang/test/OpenMP/target_parallel_for_simd_misc_messages.c
    clang/test/OpenMP/target_parallel_for_simd_ordered_messages.cpp
    clang/test/OpenMP/target_parallel_for_simd_safelen_messages.cpp
    clang/test/OpenMP/target_parallel_for_simd_simdlen_messages.cpp
    clang/test/OpenMP/target_simd_aligned_messages.cpp
    clang/test/OpenMP/target_simd_collapse_messages.cpp
    clang/test/OpenMP/target_simd_misc_messages.c
    clang/test/OpenMP/target_simd_safelen_messages.cpp
    clang/test/OpenMP/target_simd_simdlen_messages.cpp
    clang/test/OpenMP/target_teams_distribute_collapse_messages.cpp
    clang/test/OpenMP/target_teams_distribute_misc_messages.c
    clang/test/OpenMP/target_teams_distribute_parallel_for_collapse_messages.cpp
    clang/test/OpenMP/target_teams_distribute_parallel_for_misc_messages.c
    clang/test/OpenMP/target_teams_distribute_parallel_for_simd_aligned_messages.cpp
    clang/test/OpenMP/target_teams_distribute_parallel_for_simd_collapse_messages.cpp
    clang/test/OpenMP/target_teams_distribute_parallel_for_simd_misc_messages.c
    clang/test/OpenMP/target_teams_distribute_parallel_for_simd_safelen_messages.cpp
    clang/test/OpenMP/target_teams_distribute_parallel_for_simd_simdlen_messages.cpp
    clang/test/OpenMP/target_teams_distribute_simd_aligned_messages.cpp
    clang/test/OpenMP/target_teams_distribute_simd_collapse_messages.cpp
    clang/test/OpenMP/target_teams_distribute_simd_misc_messages.c
    clang/test/OpenMP/target_teams_distribute_simd_safelen_messages.cpp
    clang/test/OpenMP/target_teams_distribute_simd_simdlen_messages.cpp
    clang/test/OpenMP/taskloop_collapse_messages.cpp
    clang/test/OpenMP/taskloop_misc_messages.c
    clang/test/OpenMP/taskloop_simd_aligned_messages.cpp
    clang/test/OpenMP/taskloop_simd_collapse_messages.cpp
    clang/test/OpenMP/taskloop_simd_misc_messages.c
    clang/test/OpenMP/taskloop_simd_safelen_messages.cpp
    clang/test/OpenMP/taskloop_simd_simdlen_messages.cpp
    clang/test/OpenMP/teams_distribute_collapse_messages.cpp
    clang/test/OpenMP/teams_distribute_parallel_for_collapse_messages.cpp
    clang/test/OpenMP/teams_distribute_parallel_for_simd_aligned_messages.cpp
    clang/test/OpenMP/teams_distribute_parallel_for_simd_collapse_messages.cpp
    clang/test/OpenMP/teams_distribute_parallel_for_simd_safelen_messages.cpp
    clang/test/OpenMP/teams_distribute_parallel_for_simd_simdlen_messages.cpp
    clang/test/OpenMP/teams_distribute_simd_aligned_messages.cpp
    clang/test/OpenMP/teams_distribute_simd_collapse_messages.cpp
    clang/test/OpenMP/teams_distribute_simd_safelen_messages.cpp
    clang/test/OpenMP/teams_distribute_simd_simdlen_messages.cpp
    clang/test/PCH/cxx-constexpr.cpp
    clang/test/Sema/bitfield.c
    clang/test/Sema/c89.c
    clang/test/Sema/complex-int.c
    clang/test/Sema/warn-vla.c
    clang/test/SemaCXX/c99-variable-length-array-cxx11.cpp
    clang/test/SemaCXX/c99-variable-length-array.cpp
    clang/test/SemaCXX/constant-expression-cxx11.cpp
    clang/test/SemaCXX/constant-expression.cpp
    clang/test/SemaCXX/warn-vla.cpp
    clang/test/SemaObjC/class-bitfield.m
    clang/test/SemaTemplate/instantiate-self.cpp

Removed: 
    clang/test/SemaCXX/vla-consruct.cpp


################################################################################
diff  --git a/clang/include/clang/Basic/DiagnosticGroups.td b/clang/include/clang/Basic/DiagnosticGroups.td
index 2b13f9eca12d..10a5c90c960e 100644
--- a/clang/include/clang/Basic/DiagnosticGroups.td
+++ b/clang/include/clang/Basic/DiagnosticGroups.td
@@ -733,8 +733,8 @@ def OverridingMethodMismatch : DiagGroup<"overriding-method-mismatch">;
 def VariadicMacros : DiagGroup<"variadic-macros">;
 def VectorConversion : DiagGroup<"vector-conversion">;      // clang specific
 def VexingParse : DiagGroup<"vexing-parse">;
-def VLA : DiagGroup<"vla">;
 def VLAExtension : DiagGroup<"vla-extension">;
+def VLA : DiagGroup<"vla", [VLAExtension]>;
 def VolatileRegisterVar : DiagGroup<"volatile-register-var">;
 def Visibility : DiagGroup<"visibility">;
 def ZeroLengthArray : DiagGroup<"zero-length-array">;

diff  --git a/clang/include/clang/Basic/DiagnosticSemaKinds.td b/clang/include/clang/Basic/DiagnosticSemaKinds.td
index a63fae5b5f72..25e6e317304f 100644
--- a/clang/include/clang/Basic/DiagnosticSemaKinds.td
+++ b/clang/include/clang/Basic/DiagnosticSemaKinds.td
@@ -91,8 +91,8 @@ def ext_cce_narrowing : ExtWarn<
   "evaluates to %2, which cannot be narrowed to type %3}1">,
   InGroup<CXX11Narrowing>, DefaultError, SFINAEFailure;
 def err_ice_not_integral : Error<
-  "integral constant expression must have integral or unscoped enumeration "
-  "type, not %0">;
+  "%select{integer|integral}1 constant expression must have "
+  "%select{integer|integral or unscoped enumeration}1 type, not %0">;
 def err_ice_incomplete_type : Error<
   "integral constant expression has incomplete class type %0">;
 def err_ice_explicit_conversion : Error<

diff  --git a/clang/include/clang/Sema/Sema.h b/clang/include/clang/Sema/Sema.h
index 19d58b889ef7..fb9f442bc5bc 100644
--- a/clang/include/clang/Sema/Sema.h
+++ b/clang/include/clang/Sema/Sema.h
@@ -11588,9 +11588,12 @@ class Sema final {
 
     VerifyICEDiagnoser(bool Suppress = false) : Suppress(Suppress) { }
 
-    virtual void diagnoseNotICE(Sema &S, SourceLocation Loc, SourceRange SR) =0;
-    virtual void diagnoseFold(Sema &S, SourceLocation Loc, SourceRange SR);
-    virtual ~VerifyICEDiagnoser() { }
+    virtual SemaDiagnosticBuilder
+    diagnoseNotICEType(Sema &S, SourceLocation Loc, QualType T);
+    virtual SemaDiagnosticBuilder diagnoseNotICE(Sema &S,
+                                                 SourceLocation Loc) = 0;
+    virtual SemaDiagnosticBuilder diagnoseFold(Sema &S, SourceLocation Loc);
+    virtual ~VerifyICEDiagnoser() {}
   };
 
   /// VerifyIntegerConstantExpression - Verifies that an expression is an ICE,

diff  --git a/clang/lib/Sema/SemaDeclCXX.cpp b/clang/lib/Sema/SemaDeclCXX.cpp
index ea3f6786d151..0a4f75ad341b 100644
--- a/clang/lib/Sema/SemaDeclCXX.cpp
+++ b/clang/lib/Sema/SemaDeclCXX.cpp
@@ -1066,8 +1066,9 @@ static IsTupleLike isTupleLike(Sema &S, SourceLocation Loc, QualType T,
     TemplateArgumentListInfo &Args;
     ICEDiagnoser(LookupResult &R, TemplateArgumentListInfo &Args)
         : R(R), Args(Args) {}
-    void diagnoseNotICE(Sema &S, SourceLocation Loc, SourceRange SR) override {
-      S.Diag(Loc, diag::err_decomp_decl_std_tuple_size_not_constant)
+    Sema::SemaDiagnosticBuilder diagnoseNotICE(Sema &S,
+                                               SourceLocation Loc) override {
+      return S.Diag(Loc, diag::err_decomp_decl_std_tuple_size_not_constant)
           << printTemplateArgs(S.Context.getPrintingPolicy(), Args);
     }
   } Diagnoser(R, Args);

diff  --git a/clang/lib/Sema/SemaExpr.cpp b/clang/lib/Sema/SemaExpr.cpp
index 5e9fca13f1d0..39ed25f3ef96 100644
--- a/clang/lib/Sema/SemaExpr.cpp
+++ b/clang/lib/Sema/SemaExpr.cpp
@@ -15821,8 +15821,13 @@ ExprResult Sema::VerifyIntegerConstantExpression(Expr *E,
                                                  llvm::APSInt *Result) {
   class SimpleICEDiagnoser : public VerifyICEDiagnoser {
   public:
-    void diagnoseNotICE(Sema &S, SourceLocation Loc, SourceRange SR) override {
-      S.Diag(Loc, diag::err_expr_not_ice) << S.LangOpts.CPlusPlus << SR;
+    SemaDiagnosticBuilder diagnoseNotICEType(Sema &S, SourceLocation Loc,
+                                             QualType T) override {
+      return S.Diag(Loc, diag::err_ice_not_integral)
+             << T << S.LangOpts.CPlusPlus;
+    }
+    SemaDiagnosticBuilder diagnoseNotICE(Sema &S, SourceLocation Loc) override {
+      return S.Diag(Loc, diag::err_expr_not_ice) << S.LangOpts.CPlusPlus;
     }
   } Diagnoser;
 
@@ -15840,17 +15845,23 @@ ExprResult Sema::VerifyIntegerConstantExpression(Expr *E,
     IDDiagnoser(unsigned DiagID)
       : VerifyICEDiagnoser(DiagID == 0), DiagID(DiagID) { }
 
-    void diagnoseNotICE(Sema &S, SourceLocation Loc, SourceRange SR) override {
-      S.Diag(Loc, DiagID) << SR;
+    SemaDiagnosticBuilder diagnoseNotICE(Sema &S, SourceLocation Loc) override {
+      return S.Diag(Loc, DiagID);
     }
   } Diagnoser(DiagID);
 
   return VerifyIntegerConstantExpression(E, Result, Diagnoser, AllowFold);
 }
 
-void Sema::VerifyICEDiagnoser::diagnoseFold(Sema &S, SourceLocation Loc,
-                                            SourceRange SR) {
-  S.Diag(Loc, diag::ext_expr_not_ice) << SR << S.LangOpts.CPlusPlus;
+Sema::SemaDiagnosticBuilder
+Sema::VerifyICEDiagnoser::diagnoseNotICEType(Sema &S, SourceLocation Loc,
+                                             QualType T) {
+  return diagnoseNotICE(S, Loc);
+}
+
+Sema::SemaDiagnosticBuilder
+Sema::VerifyICEDiagnoser::diagnoseFold(Sema &S, SourceLocation Loc) {
+  return S.Diag(Loc, diag::ext_expr_not_ice) << S.LangOpts.CPlusPlus;
 }
 
 ExprResult
@@ -15867,14 +15878,16 @@ Sema::VerifyIntegerConstantExpression(Expr *E, llvm::APSInt *Result,
     //   unscoped enumeration type
     ExprResult Converted;
     class CXX11ConvertDiagnoser : public ICEConvertDiagnoser {
+      VerifyICEDiagnoser &BaseDiagnoser;
     public:
-      CXX11ConvertDiagnoser(bool Silent)
-          : ICEConvertDiagnoser(/*AllowScopedEnumerations*/false,
-                                Silent, true) {}
+      CXX11ConvertDiagnoser(VerifyICEDiagnoser &BaseDiagnoser)
+          : ICEConvertDiagnoser(/*AllowScopedEnumerations*/ false,
+                                BaseDiagnoser.Suppress, true),
+            BaseDiagnoser(BaseDiagnoser) {}
 
       SemaDiagnosticBuilder diagnoseNotInt(Sema &S, SourceLocation Loc,
                                            QualType T) override {
-        return S.Diag(Loc, diag::err_ice_not_integral) << T;
+        return BaseDiagnoser.diagnoseNotICEType(S, Loc, T);
       }
 
       SemaDiagnosticBuilder diagnoseIncomplete(
@@ -15908,7 +15921,7 @@ Sema::VerifyIntegerConstantExpression(Expr *E, llvm::APSInt *Result,
           Sema &S, SourceLocation Loc, QualType T, QualType ConvTy) override {
         llvm_unreachable("conversion functions are permitted");
       }
-    } ConvertDiagnoser(Diagnoser.Suppress);
+    } ConvertDiagnoser(Diagnoser);
 
     Converted = PerformContextualImplicitConversion(DiagLoc, E,
                                                     ConvertDiagnoser);
@@ -15920,7 +15933,8 @@ Sema::VerifyIntegerConstantExpression(Expr *E, llvm::APSInt *Result,
   } else if (!E->getType()->isIntegralOrUnscopedEnumerationType()) {
     // An ICE must be of integral or unscoped enumeration type.
     if (!Diagnoser.Suppress)
-      Diagnoser.diagnoseNotICE(*this, DiagLoc, E->getSourceRange());
+      Diagnoser.diagnoseNotICEType(*this, DiagLoc, E->getType())
+          << E->getSourceRange();
     return ExprError();
   }
 
@@ -15973,7 +15987,7 @@ Sema::VerifyIntegerConstantExpression(Expr *E, llvm::APSInt *Result,
 
   if (!Folded || !AllowFold) {
     if (!Diagnoser.Suppress) {
-      Diagnoser.diagnoseNotICE(*this, DiagLoc, E->getSourceRange());
+      Diagnoser.diagnoseNotICE(*this, DiagLoc) << E->getSourceRange();
       for (const PartialDiagnosticAt &Note : Notes)
         Diag(Note.first, Note.second);
     }
@@ -15981,7 +15995,7 @@ Sema::VerifyIntegerConstantExpression(Expr *E, llvm::APSInt *Result,
     return ExprError();
   }
 
-  Diagnoser.diagnoseFold(*this, DiagLoc, E->getSourceRange());
+  Diagnoser.diagnoseFold(*this, DiagLoc) << E->getSourceRange();
   for (const PartialDiagnosticAt &Note : Notes)
     Diag(Note.first, Note.second);
 

diff  --git a/clang/lib/Sema/SemaTemplate.cpp b/clang/lib/Sema/SemaTemplate.cpp
index 53954ca6ec41..6721b0725329 100644
--- a/clang/lib/Sema/SemaTemplate.cpp
+++ b/clang/lib/Sema/SemaTemplate.cpp
@@ -6983,9 +6983,9 @@ ExprResult Sema::CheckTemplateArgument(NonTypeTemplateParmDecl *Param,
       public:
         TmplArgICEDiagnoser(QualType T) : T(T) { }
 
-        void diagnoseNotICE(Sema &S, SourceLocation Loc,
-                            SourceRange SR) override {
-          S.Diag(Loc, diag::err_template_arg_not_ice) << T << SR;
+        SemaDiagnosticBuilder diagnoseNotICE(Sema &S,
+                                             SourceLocation Loc) override {
+          return S.Diag(Loc, diag::err_template_arg_not_ice) << T;
         }
       } Diagnoser(ArgType);
 

diff  --git a/clang/lib/Sema/SemaType.cpp b/clang/lib/Sema/SemaType.cpp
index 4ab5cc5fd8b9..fb62250564b5 100644
--- a/clang/lib/Sema/SemaType.cpp
+++ b/clang/lib/Sema/SemaType.cpp
@@ -2221,26 +2221,48 @@ QualType Sema::BuildExtIntType(bool IsUnsigned, Expr *BitWidth,
   return Context.getExtIntType(IsUnsigned, NumBits);
 }
 
-/// Check whether the specified array size makes the array type a VLA.  If so,
-/// return true, if not, return the size of the array in SizeVal.
-static bool isArraySizeVLA(Sema &S, Expr *ArraySize, llvm::APSInt &SizeVal) {
+/// Check whether the specified array bound can be evaluated using the relevant
+/// language rules. If so, returns the possibly-converted expression and sets
+/// SizeVal to the size. If not, but the expression might be a VLA bound,
+/// returns ExprResult(). Otherwise, produces a diagnostic and returns
+/// ExprError().
+static ExprResult checkArraySize(Sema &S, Expr *&ArraySize,
+                                 llvm::APSInt &SizeVal, unsigned VLADiag,
+                                 bool VLAIsError) {
   // If the size is an ICE, it certainly isn't a VLA. If we're in a GNU mode
   // (like gnu99, but not c99) accept any evaluatable value as an extension.
   class VLADiagnoser : public Sema::VerifyICEDiagnoser {
   public:
-    VLADiagnoser() : Sema::VerifyICEDiagnoser(true) {}
+    unsigned VLADiag;
+    bool VLAIsError;
+    bool IsVLA = false;
 
-    void diagnoseNotICE(Sema &S, SourceLocation Loc, SourceRange SR) override {
+    VLADiagnoser(unsigned VLADiag, bool VLAIsError)
+        : VLADiag(VLADiag), VLAIsError(VLAIsError) {}
+
+    Sema::SemaDiagnosticBuilder diagnoseNotICEType(Sema &S, SourceLocation Loc,
+                                                   QualType T) override {
+      return S.Diag(Loc, diag::err_array_size_non_int) << T;
+    }
+
+    Sema::SemaDiagnosticBuilder diagnoseNotICE(Sema &S,
+                                               SourceLocation Loc) override {
+      IsVLA = !VLAIsError;
+      return S.Diag(Loc, VLADiag);
     }
 
-    void diagnoseFold(Sema &S, SourceLocation Loc, SourceRange SR) override {
-      S.Diag(Loc, diag::ext_vla_folded_to_constant) << SR;
+    Sema::SemaDiagnosticBuilder diagnoseFold(Sema &S,
+                                             SourceLocation Loc) override {
+      return S.Diag(Loc, diag::ext_vla_folded_to_constant);
     }
-  } Diagnoser;
+  } Diagnoser(VLADiag, VLAIsError);
 
-  return S.VerifyIntegerConstantExpression(ArraySize, &SizeVal, Diagnoser,
-                                           S.LangOpts.GNUMode ||
-                                           S.LangOpts.OpenCL).isInvalid();
+  ExprResult R = S.VerifyIntegerConstantExpression(
+      ArraySize, &SizeVal, Diagnoser,
+      (S.LangOpts.GNUMode || S.LangOpts.OpenCL));
+  if (Diagnoser.IsVLA)
+    return ExprResult();
+  return R;
 }
 
 /// Build an array type.
@@ -2352,68 +2374,95 @@ QualType Sema::BuildArrayType(QualType T, ArrayType::ArraySizeModifier ASM,
     return QualType();
   }
 
+  // VLAs always produce at least a -Wvla diagnostic, sometimes an error.
+  unsigned VLADiag;
+  bool VLAIsError;
+  if (getLangOpts().OpenCL) {
+    // OpenCL v1.2 s6.9.d: variable length arrays are not supported.
+    VLADiag = diag::err_opencl_vla;
+    VLAIsError = true;
+  } else if (getLangOpts().C99) {
+    VLADiag = diag::warn_vla_used;
+    VLAIsError = false;
+  } else if (isSFINAEContext()) {
+    VLADiag = diag::err_vla_in_sfinae;
+    VLAIsError = true;
+  } else {
+    VLADiag = diag::ext_vla;
+    VLAIsError = false;
+  }
+
   llvm::APSInt ConstVal(Context.getTypeSize(Context.getSizeType()));
   if (!ArraySize) {
-    if (ASM == ArrayType::Star)
+    if (ASM == ArrayType::Star) {
+      Diag(Loc, VLADiag);
+      if (VLAIsError)
+        return QualType();
+
       T = Context.getVariableArrayType(T, nullptr, ASM, Quals, Brackets);
-    else
+    } else {
       T = Context.getIncompleteArrayType(T, ASM, Quals);
+    }
   } else if (ArraySize->isTypeDependent() || ArraySize->isValueDependent()) {
     T = Context.getDependentSizedArrayType(T, ArraySize, ASM, Quals, Brackets);
-  } else if ((!T->isDependentType() && !T->isIncompleteType() &&
-              !T->isConstantSizeType()) ||
-             isArraySizeVLA(*this, ArraySize, ConstVal)) {
-    // Even in C++11, don't allow contextual conversions in the array bound
-    // of a VLA.
-    if (getLangOpts().CPlusPlus11 &&
-        !ArraySize->getType()->isIntegralOrUnscopedEnumerationType()) {
-      Diag(ArraySize->getBeginLoc(), diag::err_array_size_non_int)
-          << ArraySize->getType() << ArraySize->getSourceRange();
+  } else {
+    ExprResult R =
+        checkArraySize(*this, ArraySize, ConstVal, VLADiag, VLAIsError);
+    if (R.isInvalid())
       return QualType();
-    }
 
-    // C99: an array with an element type that has a non-constant-size is a VLA.
-    // C99: an array with a non-ICE size is a VLA.  We accept any expression
-    // that we can fold to a non-zero positive value as an extension.
-    T = Context.getVariableArrayType(T, ArraySize, ASM, Quals, Brackets);
-  } else {
-    // C99 6.7.5.2p1: If the expression is a constant expression, it shall
-    // have a value greater than zero.
-    if (ConstVal.isSigned() && ConstVal.isNegative()) {
-      if (Entity)
-        Diag(ArraySize->getBeginLoc(), diag::err_decl_negative_array_size)
-            << getPrintableNameForEntity(Entity) << ArraySize->getSourceRange();
-      else
-        Diag(ArraySize->getBeginLoc(), diag::err_typecheck_negative_array_size)
+    if (!R.isUsable()) {
+      // C99: an array with a non-ICE size is a VLA. We accept any expression
+      // that we can fold to a non-zero positive value as a non-VLA as an
+      // extension.
+      T = Context.getVariableArrayType(T, ArraySize, ASM, Quals, Brackets);
+    } else if (!T->isDependentType() && !T->isIncompleteType() &&
+               !T->isConstantSizeType()) {
+      // C99: an array with an element type that has a non-constant-size is a
+      // VLA.
+      // FIXME: Add a note to explain why this isn't a VLA.
+      Diag(Loc, VLADiag);
+      if (VLAIsError)
+        return QualType();
+      T = Context.getVariableArrayType(T, ArraySize, ASM, Quals, Brackets);
+    } else {
+      // C99 6.7.5.2p1: If the expression is a constant expression, it shall
+      // have a value greater than zero.
+      // In C++, this follows from narrowing conversions being disallowed.
+      if (ConstVal.isSigned() && ConstVal.isNegative()) {
+        if (Entity)
+          Diag(ArraySize->getBeginLoc(), diag::err_decl_negative_array_size)
+              << getPrintableNameForEntity(Entity)
+              << ArraySize->getSourceRange();
+        else
+          Diag(ArraySize->getBeginLoc(),
+               diag::err_typecheck_negative_array_size)
+              << ArraySize->getSourceRange();
+        return QualType();
+      }
+      if (ConstVal == 0) {
+        // GCC accepts zero sized static arrays. We allow them when
+        // we're not in a SFINAE context.
+        Diag(ArraySize->getBeginLoc(),
+             isSFINAEContext() ? diag::err_typecheck_zero_array_size
+                               : diag::ext_typecheck_zero_array_size)
             << ArraySize->getSourceRange();
-      return QualType();
-    }
-    if (ConstVal == 0) {
-      // GCC accepts zero sized static arrays. We allow them when
-      // we're not in a SFINAE context.
-      Diag(ArraySize->getBeginLoc(), isSFINAEContext()
-                                         ? diag::err_typecheck_zero_array_size
-                                         : diag::ext_typecheck_zero_array_size)
-          << ArraySize->getSourceRange();
-    } else if (!T->isDependentType() && !T->isVariablyModifiedType() &&
-               !T->isIncompleteType() && !T->isUndeducedType()) {
+      }
+
       // Is the array too large?
-      unsigned ActiveSizeBits
-        = ConstantArrayType::getNumAddressingBits(Context, T, ConstVal);
+      unsigned ActiveSizeBits =
+          (!T->isDependentType() && !T->isVariablyModifiedType() &&
+           !T->isIncompleteType() && !T->isUndeducedType())
+              ? ConstantArrayType::getNumAddressingBits(Context, T, ConstVal)
+              : ConstVal.getActiveBits();
       if (ActiveSizeBits > ConstantArrayType::getMaxSizeBits(Context)) {
         Diag(ArraySize->getBeginLoc(), diag::err_array_too_large)
             << ConstVal.toString(10) << ArraySize->getSourceRange();
         return QualType();
       }
-    }
 
-    T = Context.getConstantArrayType(T, ConstVal, ArraySize, ASM, Quals);
-  }
-
-  // OpenCL v1.2 s6.9.d: variable length arrays are not supported.
-  if (getLangOpts().OpenCL && T->isVariableArrayType()) {
-    Diag(Loc, diag::err_opencl_vla);
-    return QualType();
+      T = Context.getConstantArrayType(T, ConstVal, ArraySize, ASM, Quals);
+    }
   }
 
   if (T->isVariableArrayType() && !Context.getTargetInfo().isVLASupported()) {
@@ -2426,26 +2475,12 @@ QualType Sema::BuildArrayType(QualType T, ArrayType::ArraySizeModifier ASM,
                 : CFT_InvalidTarget);
   }
 
-  // If this is not C99, extwarn about VLA's and C99 array size modifiers.
-  if (!getLangOpts().C99) {
-    if (T->isVariableArrayType()) {
-      // Prohibit the use of VLAs during template argument deduction.
-      if (isSFINAEContext()) {
-        Diag(Loc, diag::err_vla_in_sfinae);
-        return QualType();
-      }
-      // Just extwarn about VLAs.
-      else
-        Diag(Loc, diag::ext_vla);
-    } else if (ASM != ArrayType::Normal || Quals != 0)
-      Diag(Loc,
-           getLangOpts().CPlusPlus? diag::err_c99_array_usage_cxx
-                                  : diag::ext_c99_array_usage) << ASM;
-  }
-
-  if (T->isVariableArrayType()) {
-    // Warn about VLAs for -Wvla.
-    Diag(Loc, diag::warn_vla_used);
+  // If this is not C99, diagnose array size modifiers on non-VLAs.
+  if (!getLangOpts().C99 && !T->isVariableArrayType() &&
+      (ASM != ArrayType::Normal || Quals != 0)) {
+    Diag(Loc, getLangOpts().CPlusPlus ? diag::err_c99_array_usage_cxx
+                                      : diag::ext_c99_array_usage)
+        << ASM;
   }
 
   // OpenCL v2.0 s6.12.5 - Arrays of blocks are not supported.

diff  --git a/clang/test/CXX/drs/dr0xx.cpp b/clang/test/CXX/drs/dr0xx.cpp
index d998114442be..8799215ef3b5 100644
--- a/clang/test/CXX/drs/dr0xx.cpp
+++ b/clang/test/CXX/drs/dr0xx.cpp
@@ -915,7 +915,7 @@ namespace dr75 { // dr75: yes
 
 namespace dr76 { // dr76: yes
   const volatile int n = 1;
-  int arr[n]; // expected-error +{{variable length array}}
+  int arr[n]; // expected-error +{{variable length array}} expected-note {{read of volatile}}
 }
 
 namespace dr77 { // dr77: yes

diff  --git a/clang/test/CXX/drs/dr3xx.cpp b/clang/test/CXX/drs/dr3xx.cpp
index efeed66306c0..f297d5e930d0 100644
--- a/clang/test/CXX/drs/dr3xx.cpp
+++ b/clang/test/CXX/drs/dr3xx.cpp
@@ -895,7 +895,7 @@ namespace dr367 { // dr367: yes
   // array as being a VLA!
   int a[true ? throw 0 : 4]; // expected-error 2{{variable length array}}
   int b[true ? 4 : throw 0];
-  int c[true ? *new int : 4]; // expected-error 2{{variable length array}}
+  int c[true ? *new int : 4]; // expected-error 2{{variable length array}} expected-note {{read of uninitialized}}
   int d[true ? 4 : *new int];
 #if __cplusplus < 201103L
   // expected-error at -4 {{variable length array}} expected-error at -4 {{constant expression}}

diff  --git a/clang/test/CXX/drs/dr4xx.cpp b/clang/test/CXX/drs/dr4xx.cpp
index ff90ee82d4d4..7d06da552d1b 100644
--- a/clang/test/CXX/drs/dr4xx.cpp
+++ b/clang/test/CXX/drs/dr4xx.cpp
@@ -644,8 +644,8 @@ namespace dr450 { // dr450: yes
 
 namespace dr451 { // dr451: yes
   const int a = 1 / 0; // expected-warning {{undefined}}
-  const int b = 1 / 0; // expected-warning {{undefined}}
-  int arr[b]; // expected-error +{{variable length arr}}
+  const int b = 1 / 0; // expected-warning {{undefined}} expected-note {{here}} expected-note 0-1{{division by zero}}
+  int arr[b]; // expected-error +{{variable length arr}} expected-note {{initializer of 'b' is not a constant}}
 }
 
 namespace dr452 { // dr452: yes
@@ -682,7 +682,7 @@ namespace dr457 { // dr457: yes
   const int a = 1;
   const volatile int b = 1;
   int ax[a];
-  int bx[b]; // expected-error +{{variable length array}}
+  int bx[b]; // expected-error +{{variable length array}} expected-note {{read of volatile}}
 
   enum E {
     ea = a,
@@ -1088,8 +1088,8 @@ namespace dr486 { // dr486: yes
 
 namespace dr487 { // dr487: yes
   enum E { e };
-  int operator+(int, E);
-  int i[4 + e]; // expected-error 2{{variable length array}}
+  int operator+(int, E); // expected-note 0-1{{here}}
+  int i[4 + e]; // expected-error 2{{variable length array}} expected-note 0-1{{non-constexpr}}
 }
 
 namespace dr488 { // dr488: yes c++11

diff  --git a/clang/test/CXX/expr/expr.const/p2-0x.cpp b/clang/test/CXX/expr/expr.const/p2-0x.cpp
index b9235eeeb172..2ab629a6d0dd 100644
--- a/clang/test/CXX/expr/expr.const/p2-0x.cpp
+++ b/clang/test/CXX/expr/expr.const/p2-0x.cpp
@@ -12,8 +12,8 @@ struct This {
   int this1 : this1; // expected-error {{undeclared}}
   int this2 : this->this1; // expected-error {{invalid}}
   void this3() {
-    int n1[this->this1]; // expected-warning {{variable length array}}
-    int n2[this1]; // expected-warning {{variable length array}}
+    int n1[this->this1]; // expected-warning {{variable length array}} expected-note {{'this'}}
+    int n2[this1]; // expected-warning {{variable length array}} expected-note {{'this'}}
     (void)n1, (void)n2;
   }
 };

diff  --git a/clang/test/CXX/expr/expr.const/p5-0x.cpp b/clang/test/CXX/expr/expr.const/p5-0x.cpp
index 079870947db0..4a49f01cbb5d 100644
--- a/clang/test/CXX/expr/expr.const/p5-0x.cpp
+++ b/clang/test/CXX/expr/expr.const/p5-0x.cpp
@@ -7,15 +7,15 @@ namespace std_example {
 
 struct A {
   constexpr A(int i) : val(i) { }
-  constexpr operator int() const { return val; }
-  constexpr operator long() const { return 43; }
+  constexpr operator int() const { return val; } // expected-note {{here}}
+  constexpr operator long() const { return 43; } // expected-note {{here}}
 private:
   int val;
 };
 template<int> struct X { };
 constexpr A a = 42;
 X<a> x;     // ok, unique conversion to int
-int ary[a]; // expected-error {{size of array has non-integer type 'const std_example::A'}}
+int ary[a]; // expected-error {{ambiguous conversion from type 'const std_example::A' to an integral or unscoped enumeration type}}
 
 }
 
@@ -23,15 +23,15 @@ struct OK {
   constexpr OK() {}
   constexpr operator int() const { return 8; }
 } constexpr ok;
-extern struct Incomplete incomplete; // expected-note 4{{forward decl}}
+extern struct Incomplete incomplete; // expected-note 5{{forward decl}}
 struct Explicit {
   constexpr Explicit() {}
-  constexpr explicit operator int() const { return 4; } // expected-note 4{{here}}
+  constexpr explicit operator int() const { return 4; } // expected-note 5{{here}}
 } constexpr expl;
 struct Ambiguous {
   constexpr Ambiguous() {}
-  constexpr operator int() const { return 2; } // expected-note 4{{here}}
-  constexpr operator long() const { return 1; } // expected-note 4{{here}}
+  constexpr operator int() const { return 2; } // expected-note 5{{here}}
+  constexpr operator long() const { return 1; } // expected-note 5{{here}}
 } constexpr ambig;
 
 constexpr int test_ok = ok; // ok
@@ -68,12 +68,10 @@ alignas(ambig) int alignas4; // expected-error {{ambiguous conversion}}
 
 // [dcl.array]p1: If the constant-expression is present, it shall be an integral
 // constant expression
-// FIXME: The VLA recovery results in us giving diagnostics which aren't great
-// here.
 int array1[ok];
-int array2[incomplete]; // expected-error {{non-integer type}}
-int array3[expl]; // expected-error {{non-integer type}}
-int array4[ambig]; // expected-error {{non-integer type}}
+int array2[incomplete]; // expected-error {{incomplete}}
+int array3[expl]; // expected-error {{explicit conversion}}
+int array4[ambig]; // expected-error {{ambiguous conversion}}
 
 // [class.bit]p1: The constasnt-expression shall be an integral constant
 // expression

diff  --git a/clang/test/OpenMP/atomic_messages.c b/clang/test/OpenMP/atomic_messages.c
index bf3a3bbd3090..053771b5b25d 100644
--- a/clang/test/OpenMP/atomic_messages.c
+++ b/clang/test/OpenMP/atomic_messages.c
@@ -387,9 +387,9 @@ void hint() {
   a += 1;
 #pragma omp atomic hint(+ // omp45-error {{unexpected OpenMP clause 'hint' in directive '#pragma omp atomic'}} expected-error {{expected expression}} expected-error {{expected ')'}} expected-note {{to match this '('}}
   a += 1;
-#pragma omp atomic hint(a // omp45-error {{unexpected OpenMP clause 'hint' in directive '#pragma omp atomic'}} expected-error {{expected ')'}} expected-note {{to match this '('}} omp50-error {{expression is not an integer constant expression}}
+#pragma omp atomic hint(a // omp45-error {{unexpected OpenMP clause 'hint' in directive '#pragma omp atomic'}} expected-error {{expected ')'}} expected-note {{to match this '('}} omp50-error {{integer constant expression}}
   a += 1;
-#pragma omp atomic hint(a) // omp45-error {{unexpected OpenMP clause 'hint' in directive '#pragma omp atomic'}} omp50-error {{expression is not an integer constant expression}}
+#pragma omp atomic hint(a) // omp45-error {{unexpected OpenMP clause 'hint' in directive '#pragma omp atomic'}} omp50-error {{integer constant expression}}
   a += 1;
 #pragma omp atomic hint(1) hint(1) // omp45-error 2 {{unexpected OpenMP clause 'hint' in directive '#pragma omp atomic'}} expected-error {{directive '#pragma omp atomic' cannot contain more than one 'hint' clause}}
   a += 1;

diff  --git a/clang/test/OpenMP/critical_messages.cpp b/clang/test/OpenMP/critical_messages.cpp
index 097cce2fac64..4fc2b201c820 100644
--- a/clang/test/OpenMP/critical_messages.cpp
+++ b/clang/test/OpenMP/critical_messages.cpp
@@ -65,7 +65,7 @@ int tmain(int argc, char **argv) { // expected-note {{declared here}}
   foo();
   #pragma omp critical (name2) hint(+ // expected-error {{expected expression}} expected-error {{expected ')'}} expected-note {{to match this '('}}
   foo();
-  #pragma omp critical (name2) hint(argc) // expected-error {{expression is not an integral constant expression}} expected-note {{read of non-const variable 'argc' is not allowed in a constant expression}}
+  #pragma omp critical (name2) hint(argc) // expected-error {{integral constant expression}} expected-note {{read of non-const variable 'argc' is not allowed in a constant expression}}
   foo();
   #pragma omp critical (name) hint(N) // expected-error {{argument to 'hint' clause must be a strictly positive integer value}} expected-error {{constructs with the same name must have a 'hint' clause with the same value}} expected-note {{'hint' clause with value '4'}}
   foo();
@@ -128,7 +128,7 @@ int main(int argc, char **argv) { // expected-note {{declared here}}
   foo();
   #pragma omp critical (name2) hint(+ // expected-error {{expected expression}} expected-error {{expected ')'}} expected-note {{to match this '('}}
   foo();
-  #pragma omp critical (name2) hint(argc) // expected-error {{expression is not an integral constant expression}} expected-note {{read of non-const variable 'argc' is not allowed in a constant expression}}
+  #pragma omp critical (name2) hint(argc) // expected-error {{integral constant expression}} expected-note {{read of non-const variable 'argc' is not allowed in a constant expression}}
   foo();
   #pragma omp critical (name) hint(23) // expected-note {{previous 'hint' clause with value '23'}}
   foo();

diff  --git a/clang/test/OpenMP/declare_simd_messages.cpp b/clang/test/OpenMP/declare_simd_messages.cpp
index 44cf41541f50..a3188de8bd64 100644
--- a/clang/test/OpenMP/declare_simd_messages.cpp
+++ b/clang/test/OpenMP/declare_simd_messages.cpp
@@ -56,7 +56,7 @@ void h(int *hp, int *hp2, int *hq, int *lin) {
 #pragma omp declare simd inbranch inbranch notinbranch // expected-error {{unexpected 'notinbranch' clause, 'inbranch' is specified already}}
 #pragma omp declare simd notinbranch notinbranch inbranch // expected-error {{unexpected 'inbranch' clause, 'notinbranch' is specified already}}
 // expected-note at +2 {{read of non-const variable 'b' is not allowed in a constant expression}}
-// expected-error at +1 {{expression is not an integral constant expression}}
+// expected-error at +1 {{integral constant expression}}
 #pragma omp declare simd simdlen(b)
 // expected-error at +1 {{directive '#pragma omp declare simd' cannot contain more than one 'simdlen' clause}}
 #pragma omp declare simd simdlen(32) simdlen(c)

diff  --git a/clang/test/OpenMP/distribute_collapse_messages.cpp b/clang/test/OpenMP/distribute_collapse_messages.cpp
index 33035f2bc220..6a0c8c31cd97 100644
--- a/clang/test/OpenMP/distribute_collapse_messages.cpp
+++ b/clang/test/OpenMP/distribute_collapse_messages.cpp
@@ -27,7 +27,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   #pragma omp distribute collapse () // expected-error {{expected expression}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
   // expected-error at +3 {{expected ')'}} expected-note at +3 {{to match this '('}}
-  // expected-error at +2 2 {{expression is not an integral constant expression}}
+  // expected-error at +2 2 {{integral constant expression}}
   // expected-note at +1 2 {{read of non-const variable 'argc' is not allowed in a constant expression}}
   #pragma omp distribute collapse (argc 
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
@@ -43,13 +43,13 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
 #endif
   // expected-error at +3 2 {{directive '#pragma omp distribute' cannot contain more than one 'collapse' clause}}
   // expected-error at +2 {{argument to 'collapse' clause must be a strictly positive integer value}}
-  // expected-error at +1 2 {{expression is not an integral constant expression}}
+  // expected-error at +1 2 {{integral constant expression}}
   #pragma omp distribute collapse (foobool(argc)), collapse (true), collapse (-5)
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
   #pragma omp distribute collapse (S) // expected-error {{'S' does not refer to a value}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
 #if __cplusplus <= 199711L
-  // expected-error at +4 2 {{expression is not an integral constant expression}}
+  // expected-error at +4 2 {{integral constant expression}}
 #else
   // expected-error at +2 2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif
@@ -78,12 +78,12 @@ int main(int argc, char **argv) {
 #if __cplusplus >= 201103L
   // expected-note at +2 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
-  #pragma omp distribute collapse (foobool(1) > 0 ? 1 : 2) // expected-error {{expression is not an integral constant expression}}
+  #pragma omp distribute collapse (foobool(1) > 0 ? 1 : 2) // expected-error {{integral constant expression}}
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
 #if __cplusplus >= 201103L
   // expected-note at +5 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
-  // expected-error at +3 {{expression is not an integral constant expression}}
+  // expected-error at +3 {{integral constant expression}}
   // expected-error at +2 2 {{directive '#pragma omp distribute' cannot contain more than one 'collapse' clause}}
   // expected-error at +1 {{argument to 'collapse' clause must be a strictly positive integer value}}
   #pragma omp distribute collapse (foobool(argc)), collapse (true), collapse (-5) 
@@ -91,7 +91,7 @@ int main(int argc, char **argv) {
   #pragma omp distribute collapse (S1) // expected-error {{'S1' does not refer to a value}}
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
 #if __cplusplus <= 199711L
-  // expected-error at +4 {{expression is not an integral constant expression}}
+  // expected-error at +4 {{integral constant expression}}
 #else
   // expected-error at +2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif

diff  --git a/clang/test/OpenMP/distribute_parallel_for_collapse_messages.cpp b/clang/test/OpenMP/distribute_parallel_for_collapse_messages.cpp
index f0bd4c28403c..3883575e68bc 100644
--- a/clang/test/OpenMP/distribute_parallel_for_collapse_messages.cpp
+++ b/clang/test/OpenMP/distribute_parallel_for_collapse_messages.cpp
@@ -35,7 +35,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
 #pragma omp target
 #pragma omp teams
   // expected-error at +3 {{expected ')'}} expected-note at +3 {{to match this '('}}
-  // expected-error at +2 2 {{expression is not an integral constant expression}}
+  // expected-error at +2 2 {{integral constant expression}}
   // expected-note at +1 2 {{read of non-const variable 'argc' is not allowed in a constant expression}}
 #pragma omp distribute parallel for collapse (argc 
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
@@ -54,7 +54,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST]; // expected-error 2 {{expected 2 for loops after '#pragma omp distribute parallel for', but found only 1}}
   // expected-error at +8 2 {{directive '#pragma omp distribute parallel for' cannot contain more than one 'collapse' clause}}
   // expected-error at +7 {{argument to 'collapse' clause must be a strictly positive integer value}}
-  // expected-error at +6 2 {{expression is not an integral constant expression}}
+  // expected-error at +6 2 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +4 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
@@ -67,7 +67,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
 #pragma omp distribute parallel for collapse (S) // expected-error {{'S' does not refer to a value}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
 #if __cplusplus <= 199711L
-  // expected-error at +6 2 {{expression is not an integral constant expression}}
+  // expected-error at +6 2 {{integral constant expression}}
 #else
   // expected-error at +4 2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif
@@ -111,7 +111,7 @@ int main(int argc, char **argv) {
 #pragma omp teams
 #pragma omp distribute parallel for collapse (2+2)) // expected-warning {{extra tokens at the end of '#pragma omp distribute parallel for' are ignored}}  expected-note {{as specified in 'collapse' clause}}
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4]; // expected-error {{expected 4 for loops after '#pragma omp distribute parallel for', but found only 1}}
-  // expected-error at +6 {{expression is not an integral constant expression}}
+  // expected-error at +6 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +4 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
@@ -119,7 +119,7 @@ int main(int argc, char **argv) {
 #pragma omp teams
 #pragma omp distribute parallel for collapse (foobool(1) > 0 ? 1 : 2)
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
-  // expected-error at +8 {{expression is not an integral constant expression}}
+  // expected-error at +8 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +6{{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
@@ -134,7 +134,7 @@ int main(int argc, char **argv) {
 #pragma omp distribute parallel for collapse (S1) // expected-error {{'S1' does not refer to a value}}
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
 #if __cplusplus <= 199711L
-  // expected-error at +6 {{expression is not an integral constant expression}}
+  // expected-error at +6 {{integral constant expression}}
 #else
   // expected-error at +4 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif

diff  --git a/clang/test/OpenMP/distribute_parallel_for_simd_aligned_messages.cpp b/clang/test/OpenMP/distribute_parallel_for_simd_aligned_messages.cpp
index 4a32eb357ec8..9bebccafcc68 100644
--- a/clang/test/OpenMP/distribute_parallel_for_simd_aligned_messages.cpp
+++ b/clang/test/OpenMP/distribute_parallel_for_simd_aligned_messages.cpp
@@ -221,7 +221,7 @@ template<class I, class C> int foomain(I argc, C **argv) {
 
 #pragma omp target
 #pragma omp teams
-#pragma omp distribute parallel for simd aligned(f:j) // expected-note {{initializer of 'j' is not a constant expression}} expected-error {{expression is not an integral constant expression}}
+#pragma omp distribute parallel for simd aligned(f:j) // expected-note {{initializer of 'j' is not a constant expression}} expected-error {{integral constant expression}}
 
   for (I k = 0; k < argc; ++k) { ++k; v += j; }
 

diff  --git a/clang/test/OpenMP/distribute_parallel_for_simd_collapse_messages.cpp b/clang/test/OpenMP/distribute_parallel_for_simd_collapse_messages.cpp
index a3e324d32bc6..ff9a728ee2de 100644
--- a/clang/test/OpenMP/distribute_parallel_for_simd_collapse_messages.cpp
+++ b/clang/test/OpenMP/distribute_parallel_for_simd_collapse_messages.cpp
@@ -35,7 +35,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
 #pragma omp target
 #pragma omp teams
   // expected-error at +3 {{expected ')'}} expected-note at +3 {{to match this '('}}
-  // expected-error at +2 2 {{expression is not an integral constant expression}}
+  // expected-error at +2 2 {{integral constant expression}}
   // expected-note at +1 2 {{read of non-const variable 'argc' is not allowed in a constant expression}}
 #pragma omp distribute parallel for simd collapse (argc 
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
@@ -54,7 +54,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST]; // expected-error 2 {{expected 2 for loops after '#pragma omp distribute parallel for simd', but found only 1}}
   // expected-error at +8 2 {{directive '#pragma omp distribute parallel for simd' cannot contain more than one 'collapse' clause}}
   // expected-error at +7 {{argument to 'collapse' clause must be a strictly positive integer value}}
-  // expected-error at +6 2 {{expression is not an integral constant expression}}
+  // expected-error at +6 2 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +4 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
@@ -67,7 +67,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
 #pragma omp distribute parallel for simd collapse (S) // expected-error {{'S' does not refer to a value}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
 #if __cplusplus <= 199711L
-  // expected-error at +6 2 {{expression is not an integral constant expression}}
+  // expected-error at +6 2 {{integral constant expression}}
 #else
   // expected-error at +4 2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif
@@ -111,7 +111,7 @@ int main(int argc, char **argv) {
 #pragma omp teams
 #pragma omp distribute parallel for simd collapse (2+2)) // expected-warning {{extra tokens at the end of '#pragma omp distribute parallel for simd' are ignored}}  expected-note {{as specified in 'collapse' clause}}
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4]; // expected-error {{expected 4 for loops after '#pragma omp distribute parallel for simd', but found only 1}}
-  // expected-error at +6 {{expression is not an integral constant expression}}
+  // expected-error at +6 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +4 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
@@ -119,7 +119,7 @@ int main(int argc, char **argv) {
 #pragma omp teams
 #pragma omp distribute parallel for simd collapse (foobool(1) > 0 ? 1 : 2)
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
-  // expected-error at +8 {{expression is not an integral constant expression}}
+  // expected-error at +8 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +6{{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
@@ -134,7 +134,7 @@ int main(int argc, char **argv) {
 #pragma omp distribute parallel for simd collapse (S1) // expected-error {{'S1' does not refer to a value}}
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
 #if __cplusplus <= 199711L
-  // expected-error at +6 {{expression is not an integral constant expression}}
+  // expected-error at +6 {{integral constant expression}}
 #else
   // expected-error at +4 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif

diff  --git a/clang/test/OpenMP/distribute_parallel_for_simd_misc_messages.c b/clang/test/OpenMP/distribute_parallel_for_simd_misc_messages.c
index 87da43322c76..57c11edda7d8 100644
--- a/clang/test/OpenMP/distribute_parallel_for_simd_misc_messages.c
+++ b/clang/test/OpenMP/distribute_parallel_for_simd_misc_messages.c
@@ -192,13 +192,13 @@ void test_safelen() {
     ;
 #pragma omp target
 #pragma omp teams
-// expected-error at +1 {{expression is not an integer constant expression}}
+// expected-error at +1 {{integer constant expression}}
 #pragma omp distribute parallel for simd safelen(2.5)
   for (i = 0; i < 16; ++i)
     ;
 #pragma omp target
 #pragma omp teams
-// expected-error at +1 {{expression is not an integer constant expression}}
+// expected-error at +1 {{integer constant expression}}
 #pragma omp distribute parallel for simd safelen(foo())
   for (i = 0; i < 16; ++i)
     ;
@@ -315,13 +315,13 @@ void test_simdlen() {
     ;
 #pragma omp target
 #pragma omp teams
-// expected-error at +1 {{expression is not an integer constant expression}}
+// expected-error at +1 {{integer constant expression}}
 #pragma omp distribute parallel for simd simdlen(2.5)
   for (i = 0; i < 16; ++i)
     ;
 #pragma omp target
 #pragma omp teams
-// expected-error at +1 {{expression is not an integer constant expression}}
+// expected-error at +1 {{integer constant expression}}
 #pragma omp distribute parallel for simd simdlen(foo())
   for (i = 0; i < 16; ++i)
     ;
@@ -459,13 +459,13 @@ void test_collapse() {
     ; // expected-error {{expected 4 for loops after '#pragma omp distribute parallel for simd', but found only 1}}
 #pragma omp target
 #pragma omp teams
-// expected-error at +1 {{expression is not an integer constant expression}}
+// expected-error at +1 {{integer constant expression}}
 #pragma omp distribute parallel for simd collapse(2.5)
   for (i = 0; i < 16; ++i)
     ;
 #pragma omp target
 #pragma omp teams
-// expected-error at +1 {{expression is not an integer constant expression}}
+// expected-error at +1 {{integer constant expression}}
 #pragma omp distribute parallel for simd collapse(foo())
   for (i = 0; i < 16; ++i)
     ;

diff  --git a/clang/test/OpenMP/distribute_parallel_for_simd_safelen_messages.cpp b/clang/test/OpenMP/distribute_parallel_for_simd_safelen_messages.cpp
index e39b5d9fbc59..2d659efadbbd 100644
--- a/clang/test/OpenMP/distribute_parallel_for_simd_safelen_messages.cpp
+++ b/clang/test/OpenMP/distribute_parallel_for_simd_safelen_messages.cpp
@@ -40,7 +40,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
 
 #pragma omp target
 #pragma omp teams
-#pragma omp distribute parallel for simd safelen (argc  // expected-note {{to match this '('}} expected-error 2 {{expression is not an integral constant expression}} expected-note 2 {{read of non-const variable 'argc' is not allowed in a constant expression}} expected-error {{expected ')'}}
+#pragma omp distribute parallel for simd safelen (argc  // expected-note {{to match this '('}} expected-error 2 {{integral constant expression}} expected-note 2 {{read of non-const variable 'argc' is not allowed in a constant expression}} expected-error {{expected ')'}}
   for (int i = ST; i < N; i++) 
     argv[0][i] = argv[0][i] - argv[0][i-ST];
   
@@ -69,7 +69,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
 #pragma omp teams
 // expected-error at +3 2 {{directive '#pragma omp distribute parallel for simd' cannot contain more than one 'safelen' clause}}
 // expected-error at +2 {{argument to 'safelen' clause must be a strictly positive integer value}}
-// expected-error at +1 2 {{expression is not an integral constant expression}}
+// expected-error at +1 2 {{integral constant expression}}
 #pragma omp distribute parallel for simd safelen (foobool(argc)), safelen (true), safelen (-5)
   for (int i = ST; i < N; i++)
     argv[0][i] = argv[0][i] - argv[0][i-ST];
@@ -81,7 +81,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
     argv[0][i] = argv[0][i] - argv[0][i-ST];
 
 #if __cplusplus <= 199711L
-  // expected-error at +6 2 {{expression is not an integral constant expression}}
+  // expected-error at +6 2 {{integral constant expression}}
 #else
   // expected-error at +4 2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif
@@ -142,7 +142,7 @@ int main(int argc, char **argv) {
 #endif
 #pragma omp target
 #pragma omp teams
-#pragma omp parallel for simd safelen (foobool(1) > 0 ? 1 : 2) // expected-error {{expression is not an integral constant expression}}
+#pragma omp parallel for simd safelen (foobool(1) > 0 ? 1 : 2) // expected-error {{integral constant expression}}
   for (int i = 4; i < 12; i++)
     argv[0][i] = argv[0][i] - argv[0][i-4];
 
@@ -153,7 +153,7 @@ int main(int argc, char **argv) {
 #pragma omp teams
 // expected-error at +3 {{argument to 'safelen' clause must be a strictly positive integer value}}
 // expected-error at +2 2 {{directive '#pragma omp parallel for simd' cannot contain more than one 'safelen' clause}}
-// expected-error at +1 {{expression is not an integral constant expression}}
+// expected-error at +1 {{integral constant expression}}
 #pragma omp parallel for simd safelen (foobool(argc)), safelen (true), safelen (-5)
   for (int i = 4; i < 12; i++)
     argv[0][i] = argv[0][i] - argv[0][i-4];
@@ -165,7 +165,7 @@ int main(int argc, char **argv) {
     argv[0][i] = argv[0][i] - argv[0][i-4];
 
 #if __cplusplus <= 199711L
-  // expected-error at +6 {{expression is not an integral constant expression}}
+  // expected-error at +6 {{integral constant expression}}
 #else
   // expected-error at +4 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif

diff  --git a/clang/test/OpenMP/distribute_parallel_for_simd_simdlen_messages.cpp b/clang/test/OpenMP/distribute_parallel_for_simd_simdlen_messages.cpp
index 7cede341626e..b4f40e8e5c23 100644
--- a/clang/test/OpenMP/distribute_parallel_for_simd_simdlen_messages.cpp
+++ b/clang/test/OpenMP/distribute_parallel_for_simd_simdlen_messages.cpp
@@ -38,7 +38,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
     argv[0][i] = argv[0][i] - argv[0][i-ST];
 
 // expected-error at +5 {{expected ')'}} expected-note at +5 {{to match this '('}}
-// expected-error at +4 2 {{expression is not an integral constant expression}}
+// expected-error at +4 2 {{integral constant expression}}
 // expected-note at +3 2 {{read of non-const variable 'argc' is not allowed in a constant expression}}
 #pragma omp target
 #pragma omp teams
@@ -72,7 +72,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
 #pragma omp teams
 // expected-error at +3 2 {{directive '#pragma omp distribute parallel for simd' cannot contain more than one 'simdlen' clause}}
 // expected-error at +2 {{argument to 'simdlen' clause must be a strictly positive integer value}}
-// expected-error at +1 2 {{expression is not an integral constant expression}}
+// expected-error at +1 2 {{integral constant expression}}
 #pragma omp distribute parallel for simd simdlen (foobool(argc)), simdlen (true), simdlen (-5)
   for (int i = ST; i < N; i++)
     argv[0][i] = argv[0][i] - argv[0][i-ST];
@@ -84,7 +84,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
     argv[0][i] = argv[0][i] - argv[0][i-ST];
 
 #if __cplusplus <= 199711L
-  // expected-error at +6 2 {{expression is not an integral constant expression}}
+  // expected-error at +6 2 {{integral constant expression}}
 #else
   // expected-error at +4 2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif
@@ -145,7 +145,7 @@ int main(int argc, char **argv) {
 #endif
 #pragma omp target
 #pragma omp teams
-#pragma omp distribute parallel for simd simdlen (foobool(1) > 0 ? 1 : 2) // expected-error {{expression is not an integral constant expression}}
+#pragma omp distribute parallel for simd simdlen (foobool(1) > 0 ? 1 : 2) // expected-error {{integral constant expression}}
   for (int i = 4; i < 12; i++)
     argv[0][i] = argv[0][i] - argv[0][i-4];
 
@@ -155,7 +155,7 @@ int main(int argc, char **argv) {
 #endif
 #pragma omp target
 #pragma omp teams
-// expected-error at +3 {{expression is not an integral constant expression}}
+// expected-error at +3 {{integral constant expression}}
 // expected-error at +2 2 {{directive '#pragma omp distribute parallel for simd' cannot contain more than one 'simdlen' clause}}
 // expected-error at +1 {{argument to 'simdlen' clause must be a strictly positive integer value}}
 #pragma omp distribute parallel for simd simdlen (foobool(argc)), simdlen (true), simdlen (-5)
@@ -169,7 +169,7 @@ int main(int argc, char **argv) {
     argv[0][i] = argv[0][i] - argv[0][i-4];
 
 #if __cplusplus <= 199711L
-  // expected-error at +6 {{expression is not an integral constant expression}}
+  // expected-error at +6 {{integral constant expression}}
 #else
   // expected-error at +4 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif

diff  --git a/clang/test/OpenMP/distribute_simd_aligned_messages.cpp b/clang/test/OpenMP/distribute_simd_aligned_messages.cpp
index 6f7c04f82b4c..eb0fc8a1eae1 100644
--- a/clang/test/OpenMP/distribute_simd_aligned_messages.cpp
+++ b/clang/test/OpenMP/distribute_simd_aligned_messages.cpp
@@ -221,7 +221,7 @@ template<class I, class C> int foomain(I argc, C **argv) {
 
 #pragma omp target
 #pragma omp teams
-#pragma omp distribute simd aligned(f:j) // expected-note {{initializer of 'j' is not a constant expression}} expected-error {{expression is not an integral constant expression}}
+#pragma omp distribute simd aligned(f:j) // expected-note {{initializer of 'j' is not a constant expression}} expected-error {{integral constant expression}}
 
   for (I k = 0; k < argc; ++k) { ++k; v += j; }
 

diff  --git a/clang/test/OpenMP/distribute_simd_collapse_messages.cpp b/clang/test/OpenMP/distribute_simd_collapse_messages.cpp
index 2d3983cc5553..418094bc1a7b 100644
--- a/clang/test/OpenMP/distribute_simd_collapse_messages.cpp
+++ b/clang/test/OpenMP/distribute_simd_collapse_messages.cpp
@@ -35,7 +35,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
 #pragma omp target
 #pragma omp teams
   // expected-error at +3 {{expected ')'}} expected-note at +3 {{to match this '('}}
-  // expected-error at +2 2 {{expression is not an integral constant expression}}
+  // expected-error at +2 2 {{integral constant expression}}
   // expected-note at +1 2 {{read of non-const variable 'argc' is not allowed in a constant expression}}
 #pragma omp distribute simd collapse (argc 
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
@@ -54,7 +54,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST]; // expected-error 2 {{expected 2 for loops after '#pragma omp distribute simd', but found only 1}}
   // expected-error at +8 2 {{directive '#pragma omp distribute simd' cannot contain more than one 'collapse' clause}}
   // expected-error at +7 {{argument to 'collapse' clause must be a strictly positive integer value}}
-  // expected-error at +6 2 {{expression is not an integral constant expression}}
+  // expected-error at +6 2 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +4 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
@@ -67,7 +67,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
 #pragma omp distribute simd collapse (S) // expected-error {{'S' does not refer to a value}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
 #if __cplusplus <= 199711L
-  // expected-error at +6 2 {{expression is not an integral constant expression}}
+  // expected-error at +6 2 {{integral constant expression}}
 #else
   // expected-error at +4 2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif
@@ -111,7 +111,7 @@ int main(int argc, char **argv) {
 #pragma omp teams
 #pragma omp distribute simd collapse (2+2)) // expected-warning {{extra tokens at the end of '#pragma omp distribute simd' are ignored}}  expected-note {{as specified in 'collapse' clause}}
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4]; // expected-error {{expected 4 for loops after '#pragma omp distribute simd', but found only 1}}
-  // expected-error at +6 {{expression is not an integral constant expression}}
+  // expected-error at +6 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +4 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
@@ -119,7 +119,7 @@ int main(int argc, char **argv) {
 #pragma omp teams
 #pragma omp distribute simd collapse (foobool(1) > 0 ? 1 : 2)
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
-  // expected-error at +8 {{expression is not an integral constant expression}}
+  // expected-error at +8 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +6{{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
@@ -134,7 +134,7 @@ int main(int argc, char **argv) {
 #pragma omp distribute simd collapse (S1) // expected-error {{'S1' does not refer to a value}}
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
 #if __cplusplus <= 199711L
-  // expected-error at +6 {{expression is not an integral constant expression}}
+  // expected-error at +6 {{integral constant expression}}
 #else
   // expected-error at +4 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif

diff  --git a/clang/test/OpenMP/distribute_simd_misc_messages.c b/clang/test/OpenMP/distribute_simd_misc_messages.c
index 0a46766e162f..fa0cdd0e939d 100644
--- a/clang/test/OpenMP/distribute_simd_misc_messages.c
+++ b/clang/test/OpenMP/distribute_simd_misc_messages.c
@@ -194,13 +194,13 @@ void test_safelen() {
     ;
 #pragma omp target
 #pragma omp teams
-// expected-error at +1 {{expression is not an integer constant expression}}
+// expected-error at +1 {{integer constant expression}}
 #pragma omp distribute simd safelen(2.5)
   for (i = 0; i < 16; ++i)
     ;
 #pragma omp target
 #pragma omp teams
-// expected-error at +1 {{expression is not an integer constant expression}}
+// expected-error at +1 {{integer constant expression}}
 #pragma omp distribute simd safelen(foo())
   for (i = 0; i < 16; ++i)
     ;
@@ -317,13 +317,13 @@ void test_simdlen() {
     ;
 #pragma omp target
 #pragma omp teams
-// expected-error at +1 {{expression is not an integer constant expression}}
+// expected-error at +1 {{integer constant expression}}
 #pragma omp distribute simd simdlen(2.5)
   for (i = 0; i < 16; ++i)
     ;
 #pragma omp target
 #pragma omp teams
-// expected-error at +1 {{expression is not an integer constant expression}}
+// expected-error at +1 {{integer constant expression}}
 #pragma omp distribute simd simdlen(foo())
   for (i = 0; i < 16; ++i)
     ;
@@ -461,13 +461,13 @@ void test_collapse() {
     ; // expected-error {{expected 4 for loops after '#pragma omp distribute simd', but found only 1}}
 #pragma omp target
 #pragma omp teams
-// expected-error at +1 {{expression is not an integer constant expression}}
+// expected-error at +1 {{integer constant expression}}
 #pragma omp distribute simd collapse(2.5)
   for (i = 0; i < 16; ++i)
     ;
 #pragma omp target
 #pragma omp teams
-// expected-error at +1 {{expression is not an integer constant expression}}
+// expected-error at +1 {{integer constant expression}}
 #pragma omp distribute simd collapse(foo())
   for (i = 0; i < 16; ++i)
     ;

diff  --git a/clang/test/OpenMP/distribute_simd_safelen_messages.cpp b/clang/test/OpenMP/distribute_simd_safelen_messages.cpp
index c28b1bf1a1ff..bffc8ec85469 100644
--- a/clang/test/OpenMP/distribute_simd_safelen_messages.cpp
+++ b/clang/test/OpenMP/distribute_simd_safelen_messages.cpp
@@ -40,7 +40,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
 
 #pragma omp target
 #pragma omp teams
-#pragma omp distribute simd safelen (argc  // expected-note {{to match this '('}} expected-error 2 {{expression is not an integral constant expression}} expected-note 2 {{read of non-const variable 'argc' is not allowed in a constant expression}} expected-error {{expected ')'}}
+#pragma omp distribute simd safelen (argc  // expected-note {{to match this '('}} expected-error 2 {{integral constant expression}} expected-note 2 {{read of non-const variable 'argc' is not allowed in a constant expression}} expected-error {{expected ')'}}
   for (int i = ST; i < N; i++) 
     argv[0][i] = argv[0][i] - argv[0][i-ST];
   
@@ -69,7 +69,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
 #pragma omp teams
 // expected-error at +3 2 {{directive '#pragma omp distribute simd' cannot contain more than one 'safelen' clause}}
 // expected-error at +2 {{argument to 'safelen' clause must be a strictly positive integer value}}
-// expected-error at +1 2 {{expression is not an integral constant expression}}
+// expected-error at +1 2 {{integral constant expression}}
 #pragma omp distribute simd safelen (foobool(argc)), safelen (true), safelen (-5)
   for (int i = ST; i < N; i++)
     argv[0][i] = argv[0][i] - argv[0][i-ST];
@@ -81,7 +81,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
     argv[0][i] = argv[0][i] - argv[0][i-ST];
 
 #if __cplusplus <= 199711L
-  // expected-error at +6 2 {{expression is not an integral constant expression}}
+  // expected-error at +6 2 {{integral constant expression}}
 #else
   // expected-error at +4 2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif
@@ -142,7 +142,7 @@ int main(int argc, char **argv) {
 #endif
 #pragma omp target
 #pragma omp teams
-#pragma omp parallel for simd safelen (foobool(1) > 0 ? 1 : 2) // expected-error {{expression is not an integral constant expression}}
+#pragma omp parallel for simd safelen (foobool(1) > 0 ? 1 : 2) // expected-error {{integral constant expression}}
   for (int i = 4; i < 12; i++)
     argv[0][i] = argv[0][i] - argv[0][i-4];
 
@@ -153,7 +153,7 @@ int main(int argc, char **argv) {
 #pragma omp teams
 // expected-error at +3 {{argument to 'safelen' clause must be a strictly positive integer value}}
 // expected-error at +2 2 {{directive '#pragma omp parallel for simd' cannot contain more than one 'safelen' clause}}
-// expected-error at +1 {{expression is not an integral constant expression}}
+// expected-error at +1 {{integral constant expression}}
 #pragma omp parallel for simd safelen (foobool(argc)), safelen (true), safelen (-5)
   for (int i = 4; i < 12; i++)
     argv[0][i] = argv[0][i] - argv[0][i-4];
@@ -165,7 +165,7 @@ int main(int argc, char **argv) {
     argv[0][i] = argv[0][i] - argv[0][i-4];
 
 #if __cplusplus <= 199711L
-  // expected-error at +6 {{expression is not an integral constant expression}}
+  // expected-error at +6 {{integral constant expression}}
 #else
   // expected-error at +4 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif

diff  --git a/clang/test/OpenMP/distribute_simd_simdlen_messages.cpp b/clang/test/OpenMP/distribute_simd_simdlen_messages.cpp
index c28b1bf1a1ff..bffc8ec85469 100644
--- a/clang/test/OpenMP/distribute_simd_simdlen_messages.cpp
+++ b/clang/test/OpenMP/distribute_simd_simdlen_messages.cpp
@@ -40,7 +40,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
 
 #pragma omp target
 #pragma omp teams
-#pragma omp distribute simd safelen (argc  // expected-note {{to match this '('}} expected-error 2 {{expression is not an integral constant expression}} expected-note 2 {{read of non-const variable 'argc' is not allowed in a constant expression}} expected-error {{expected ')'}}
+#pragma omp distribute simd safelen (argc  // expected-note {{to match this '('}} expected-error 2 {{integral constant expression}} expected-note 2 {{read of non-const variable 'argc' is not allowed in a constant expression}} expected-error {{expected ')'}}
   for (int i = ST; i < N; i++) 
     argv[0][i] = argv[0][i] - argv[0][i-ST];
   
@@ -69,7 +69,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
 #pragma omp teams
 // expected-error at +3 2 {{directive '#pragma omp distribute simd' cannot contain more than one 'safelen' clause}}
 // expected-error at +2 {{argument to 'safelen' clause must be a strictly positive integer value}}
-// expected-error at +1 2 {{expression is not an integral constant expression}}
+// expected-error at +1 2 {{integral constant expression}}
 #pragma omp distribute simd safelen (foobool(argc)), safelen (true), safelen (-5)
   for (int i = ST; i < N; i++)
     argv[0][i] = argv[0][i] - argv[0][i-ST];
@@ -81,7 +81,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
     argv[0][i] = argv[0][i] - argv[0][i-ST];
 
 #if __cplusplus <= 199711L
-  // expected-error at +6 2 {{expression is not an integral constant expression}}
+  // expected-error at +6 2 {{integral constant expression}}
 #else
   // expected-error at +4 2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif
@@ -142,7 +142,7 @@ int main(int argc, char **argv) {
 #endif
 #pragma omp target
 #pragma omp teams
-#pragma omp parallel for simd safelen (foobool(1) > 0 ? 1 : 2) // expected-error {{expression is not an integral constant expression}}
+#pragma omp parallel for simd safelen (foobool(1) > 0 ? 1 : 2) // expected-error {{integral constant expression}}
   for (int i = 4; i < 12; i++)
     argv[0][i] = argv[0][i] - argv[0][i-4];
 
@@ -153,7 +153,7 @@ int main(int argc, char **argv) {
 #pragma omp teams
 // expected-error at +3 {{argument to 'safelen' clause must be a strictly positive integer value}}
 // expected-error at +2 2 {{directive '#pragma omp parallel for simd' cannot contain more than one 'safelen' clause}}
-// expected-error at +1 {{expression is not an integral constant expression}}
+// expected-error at +1 {{integral constant expression}}
 #pragma omp parallel for simd safelen (foobool(argc)), safelen (true), safelen (-5)
   for (int i = 4; i < 12; i++)
     argv[0][i] = argv[0][i] - argv[0][i-4];
@@ -165,7 +165,7 @@ int main(int argc, char **argv) {
     argv[0][i] = argv[0][i] - argv[0][i-4];
 
 #if __cplusplus <= 199711L
-  // expected-error at +6 {{expression is not an integral constant expression}}
+  // expected-error at +6 {{integral constant expression}}
 #else
   // expected-error at +4 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif

diff  --git a/clang/test/OpenMP/for_collapse_messages.cpp b/clang/test/OpenMP/for_collapse_messages.cpp
index 6fe6ef79c4c3..d2cfccd13ae5 100644
--- a/clang/test/OpenMP/for_collapse_messages.cpp
+++ b/clang/test/OpenMP/for_collapse_messages.cpp
@@ -33,7 +33,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   #pragma omp for collapse () // expected-error {{expected expression}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
   // expected-error at +3 {{expected ')'}} expected-note at +3 {{to match this '('}}
-  // expected-error at +2 2 {{expression is not an integral constant expression}}
+  // expected-error at +2 2 {{integral constant expression}}
   // expected-note at +1 2 {{read of non-const variable 'argc' is not allowed in a constant expression}}
   #pragma omp for collapse (argc
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
@@ -46,7 +46,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST]; // expected-error 2 {{expected 2 for loops after '#pragma omp for', but found only 1}}
   // expected-error at +6 2 {{directive '#pragma omp for' cannot contain more than one 'collapse' clause}}
   // expected-error at +5 {{argument to 'collapse' clause must be a strictly positive integer value}}
-  // expected-error at +4 2 {{expression is not an integral constant expression}}
+  // expected-error at +4 2 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +2 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
@@ -55,7 +55,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   #pragma omp for collapse (S) // expected-error {{'S' does not refer to a value}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
 #if __cplusplus <= 199711L
-  // expected-error at +4 2 {{expression is not an integral constant expression}}
+  // expected-error at +4 2 {{integral constant expression}}
 #else
   // expected-error at +2 2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif
@@ -81,13 +81,13 @@ int main(int argc, char **argv) {
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4]; // expected-error {{expected 4 for loops after '#pragma omp for', but found only 1}}
   #pragma omp for collapse (2+2)) // expected-warning {{extra tokens at the end of '#pragma omp for' are ignored}}  expected-note {{as specified in 'collapse' clause}}
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4]; // expected-error {{expected 4 for loops after '#pragma omp for', but found only 1}}
-  // expected-error at +4 {{expression is not an integral constant expression}}
+  // expected-error at +4 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +2 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
   #pragma omp for collapse (foobool(1) > 0 ? 1 : 2)
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
-  // expected-error at +6 {{expression is not an integral constant expression}}
+  // expected-error at +6 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +4 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
@@ -98,7 +98,7 @@ int main(int argc, char **argv) {
   #pragma omp for collapse (S1) // expected-error {{'S1' does not refer to a value}}
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
 #if __cplusplus <= 199711L
-  // expected-error at +4 {{expression is not an integral constant expression}}
+  // expected-error at +4 {{integral constant expression}}
 #else
   // expected-error at +2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif

diff  --git a/clang/test/OpenMP/for_misc_messages.c b/clang/test/OpenMP/for_misc_messages.c
index 21a3bce7345c..f03da5879fda 100644
--- a/clang/test/OpenMP/for_misc_messages.c
+++ b/clang/test/OpenMP/for_misc_messages.c
@@ -190,12 +190,12 @@ void test_collapse() {
   for (i = 0; i < 16; ++i)
     ; // expected-error {{expected 4 for loops after '#pragma omp for', but found only 1}}
 #pragma omp parallel
-// expected-error at +1 {{expression is not an integer constant expression}}
+// expected-error at +1 {{integer constant expression}}
 #pragma omp for collapse(2.5)
   for (i = 0; i < 16; ++i)
     ;
 #pragma omp parallel
-// expected-error at +1 {{expression is not an integer constant expression}}
+// expected-error at +1 {{integer constant expression}}
 #pragma omp for collapse(foo())
   for (i = 0; i < 16; ++i)
     ;

diff  --git a/clang/test/OpenMP/for_ordered_clause.cpp b/clang/test/OpenMP/for_ordered_clause.cpp
index 7ccf570def37..537e52b60511 100644
--- a/clang/test/OpenMP/for_ordered_clause.cpp
+++ b/clang/test/OpenMP/for_ordered_clause.cpp
@@ -31,7 +31,7 @@ T tmain(T argc, S **argv) {                   //expected-note 2 {{declared here}
   for (int i = ST; i < N; i++)
     argv[0][i] = argv[0][i] - argv[0][i - ST];
 // expected-error at +3 {{expected ')'}} expected-note at +3 {{to match this '('}}
-// expected-error at +2 2 {{expression is not an integral constant expression}}
+// expected-error at +2 2 {{integral constant expression}}
 // expected-note at +1 2 {{read of non-const variable 'argc' is not allowed in a constant expression}}
 #pragma omp for ordered(argc
   for (int i = ST; i < N; i++)
@@ -48,7 +48,7 @@ T tmain(T argc, S **argv) {                   //expected-note 2 {{declared here}
     argv[0][i] = argv[0][i] - argv[0][i - ST]; // expected-error 2 {{expected 2 for loops after '#pragma omp for', but found only 1}}
 // expected-error at +6 2 {{directive '#pragma omp for' cannot contain more than one 'ordered' clause}}
 // expected-error at +5 {{argument to 'ordered' clause must be a strictly positive integer value}}
-// expected-error at +4 2 {{expression is not an integral constant expression}}
+// expected-error at +4 2 {{integral constant expression}}
 #if __cplusplus >= 201103L
 // expected-note at +2 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
@@ -59,7 +59,7 @@ T tmain(T argc, S **argv) {                   //expected-note 2 {{declared here}
   for (int i = ST; i < N; i++)
     argv[0][i] = argv[0][i] - argv[0][i - ST];
 #if __cplusplus <= 199711L
-// expected-error at +4 2 {{expression is not an integral constant expression}}
+// expected-error at +4 2 {{integral constant expression}}
 #else
 // expected-error at +2 2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif
@@ -101,14 +101,14 @@ int main(int argc, char **argv) {
 #pragma omp for ordered(2 + 2))              // expected-warning {{extra tokens at the end of '#pragma omp for' are ignored}}  expected-note {{as specified in 'ordered' clause}}
   for (int i = 4; i < 12; i++)
     argv[0][i] = argv[0][i] - argv[0][i - 4];    // expected-error {{expected 4 for loops after '#pragma omp for', but found only 1}}
-// expected-error at +4 {{expression is not an integral constant expression}}
+// expected-error at +4 {{integral constant expression}}
 #if __cplusplus >= 201103L
 // expected-note at +2 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
 #pragma omp for ordered(foobool(1) > 0 ? 1 : 2)
   for (int i = 4; i < 12; i++)
     argv[0][i] = argv[0][i] - argv[0][i - 4];
-// expected-error at +6 {{expression is not an integral constant expression}}
+// expected-error at +6 {{integral constant expression}}
 #if __cplusplus >= 201103L
 // expected-note at +4 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
@@ -121,7 +121,7 @@ int main(int argc, char **argv) {
   for (int i = 4; i < 12; i++)
     argv[0][i] = argv[0][i] - argv[0][i - 4];
 #if __cplusplus <= 199711L
-// expected-error at +4 {{expression is not an integral constant expression}}
+// expected-error at +4 {{integral constant expression}}
 #else
 // expected-error at +2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif

diff  --git a/clang/test/OpenMP/for_simd_aligned_messages.cpp b/clang/test/OpenMP/for_simd_aligned_messages.cpp
index c7122bbe4fbb..e925d00139f9 100644
--- a/clang/test/OpenMP/for_simd_aligned_messages.cpp
+++ b/clang/test/OpenMP/for_simd_aligned_messages.cpp
@@ -151,7 +151,7 @@ template<class I, class C> int foomain(I argc, C **argv) {
   for (I k = 0; k < argc; ++k) ++k;
   int v = 0;
   // expected-note at +2 {{initializer of 'j' is not a constant expression}}
-  // expected-error at +1 {{expression is not an integral constant expression}}
+  // expected-error at +1 {{integral constant expression}}
   #pragma omp for simd aligned(f:j)
   for (I k = 0; k < argc; ++k) { ++k; v += j; }
   #pragma omp for simd aligned(f)

diff  --git a/clang/test/OpenMP/for_simd_collapse_messages.cpp b/clang/test/OpenMP/for_simd_collapse_messages.cpp
index 2781bb9d5e22..efd9d39e4719 100644
--- a/clang/test/OpenMP/for_simd_collapse_messages.cpp
+++ b/clang/test/OpenMP/for_simd_collapse_messages.cpp
@@ -27,7 +27,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   #pragma omp for simd collapse () // expected-error {{expected expression}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
   // expected-error at +3 {{expected ')'}} expected-note at +3 {{to match this '('}}
-  // expected-error at +2 2 {{expression is not an integral constant expression}}
+  // expected-error at +2 2 {{integral constant expression}}
   // expected-note at +1 2 {{read of non-const variable 'argc' is not allowed in a constant expression}}
   #pragma omp for simd collapse (argc 
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
@@ -40,7 +40,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST]; // expected-error 2 {{expected 2 for loops after '#pragma omp for simd', but found only 1}}
   // expected-error at +6 2 {{directive '#pragma omp for simd' cannot contain more than one 'collapse' clause}}
   // expected-error at +5 {{argument to 'collapse' clause must be a strictly positive integer value}}
-  // expected-error at +4 2 {{expression is not an integral constant expression}}
+  // expected-error at +4 2 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +2 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
@@ -49,7 +49,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   #pragma omp for simd collapse (S) // expected-error {{'S' does not refer to a value}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
 #if __cplusplus <= 199711L
-  // expected-error at +4 2 {{expression is not an integral constant expression}}
+  // expected-error at +4 2 {{integral constant expression}}
 #else
   // expected-error at +2 2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif
@@ -75,13 +75,13 @@ int main(int argc, char **argv) {
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4]; // expected-error {{expected 4 for loops after '#pragma omp for simd', but found only 1}}
   #pragma omp for simd collapse (2+2)) // expected-warning {{extra tokens at the end of '#pragma omp for simd' are ignored}}  expected-note {{as specified in 'collapse' clause}}
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4]; // expected-error {{expected 4 for loops after '#pragma omp for simd', but found only 1}}
-  // expected-error at +4 {{expression is not an integral constant expression}}
+  // expected-error at +4 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +2 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
   #pragma omp for simd collapse (foobool(1) > 0 ? 1 : 2)
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
-  // expected-error at +6 {{expression is not an integral constant expression}}
+  // expected-error at +6 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +4 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
@@ -92,7 +92,7 @@ int main(int argc, char **argv) {
   #pragma omp for simd collapse (S1) // expected-error {{'S1' does not refer to a value}}
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
 #if __cplusplus <= 199711L
-  // expected-error at +4 {{expression is not an integral constant expression}}
+  // expected-error at +4 {{integral constant expression}}
 #else
   // expected-error at +2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif

diff  --git a/clang/test/OpenMP/for_simd_misc_messages.c b/clang/test/OpenMP/for_simd_misc_messages.c
index 42cd8192b896..fb3ed365d02b 100644
--- a/clang/test/OpenMP/for_simd_misc_messages.c
+++ b/clang/test/OpenMP/for_simd_misc_messages.c
@@ -156,11 +156,11 @@ void test_safelen() {
 #pragma omp for simd safelen(4, 8)
   for (i = 0; i < 16; ++i)
     ;
-// expected-error at +1 {{expression is not an integer constant expression}}
+// expected-error at +1 {{integer constant expression}}
 #pragma omp for simd safelen(2.5)
   for (i = 0; i < 16; ++i)
     ;
-// expected-error at +1 {{expression is not an integer constant expression}}
+// expected-error at +1 {{integer constant expression}}
 #pragma omp for simd safelen(foo())
   for (i = 0; i < 16; ++i)
     ;
@@ -241,11 +241,11 @@ void test_simdlen() {
 #pragma omp for simd simdlen(4, 8)
   for (i = 0; i < 16; ++i)
     ;
-// expected-error at +1 {{expression is not an integer constant expression}}
+// expected-error at +1 {{integer constant expression}}
 #pragma omp for simd simdlen(2.5)
   for (i = 0; i < 16; ++i)
     ;
-// expected-error at +1 {{expression is not an integer constant expression}}
+// expected-error at +1 {{integer constant expression}}
 #pragma omp for simd simdlen(foo())
   for (i = 0; i < 16; ++i)
     ;
@@ -357,12 +357,12 @@ void test_collapse() {
   for (i = 0; i < 16; ++i)
     ; // expected-error {{expected 4 for loops after '#pragma omp for simd', but found only 1}}
 #pragma omp parallel
-// expected-error at +1 {{expression is not an integer constant expression}}
+// expected-error at +1 {{integer constant expression}}
 #pragma omp for simd collapse(2.5)
   for (i = 0; i < 16; ++i)
     ;
 #pragma omp parallel
-// expected-error at +1 {{expression is not an integer constant expression}}
+// expected-error at +1 {{integer constant expression}}
 #pragma omp for simd collapse(foo())
   for (i = 0; i < 16; ++i)
     ;

diff  --git a/clang/test/OpenMP/for_simd_safelen_messages.cpp b/clang/test/OpenMP/for_simd_safelen_messages.cpp
index c97e2a951a83..f7142972d0a9 100644
--- a/clang/test/OpenMP/for_simd_safelen_messages.cpp
+++ b/clang/test/OpenMP/for_simd_safelen_messages.cpp
@@ -27,7 +27,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   #pragma omp for simd safelen () // expected-error {{expected expression}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
   // expected-error at +3 {{expected ')'}} expected-note at +3 {{to match this '('}}
-  // expected-error at +2 2 {{expression is not an integral constant expression}}
+  // expected-error at +2 2 {{integral constant expression}}
   // expected-note at +1 2 {{read of non-const variable 'argc' is not allowed in a constant expression}}
   #pragma omp for simd safelen (argc 
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
@@ -40,7 +40,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
   // expected-error at +6 2 {{directive '#pragma omp for simd' cannot contain more than one 'safelen' clause}}
   // expected-error at +5 {{argument to 'safelen' clause must be a strictly positive integer value}}
-  // expected-error at +4 2 {{expression is not an integral constant expression}}
+  // expected-error at +4 2 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +2 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
@@ -49,7 +49,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   #pragma omp for simd safelen (S) // expected-error {{'S' does not refer to a value}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
 #if __cplusplus <= 199711L
-  // expected-error at +4 2 {{expression is not an integral constant expression}}
+  // expected-error at +4 2 {{integral constant expression}}
 #else
   // expected-error at +2 2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif
@@ -73,13 +73,13 @@ int main(int argc, char **argv) {
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
   #pragma omp for simd safelen (2+2)) // expected-warning {{extra tokens at the end of '#pragma omp for simd' are ignored}}
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
-  // expected-error at +4 {{expression is not an integral constant expression}}
+  // expected-error at +4 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +2 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
   #pragma omp for simd safelen (foobool(1) > 0 ? 1 : 2)
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
-  // expected-error at +6 {{expression is not an integral constant expression}}
+  // expected-error at +6 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +4 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
@@ -90,7 +90,7 @@ int main(int argc, char **argv) {
   #pragma omp for simd safelen (S1) // expected-error {{'S1' does not refer to a value}}
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
 #if __cplusplus <= 199711L
-  // expected-error at +4 {{expression is not an integral constant expression}}
+  // expected-error at +4 {{integral constant expression}}
 #else
   // expected-error at +2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif

diff  --git a/clang/test/OpenMP/for_simd_simdlen_messages.cpp b/clang/test/OpenMP/for_simd_simdlen_messages.cpp
index 5ae2fbbc8dae..eb0455e618f1 100644
--- a/clang/test/OpenMP/for_simd_simdlen_messages.cpp
+++ b/clang/test/OpenMP/for_simd_simdlen_messages.cpp
@@ -27,7 +27,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   #pragma omp for simd simdlen () // expected-error {{expected expression}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
   // expected-error at +3 {{expected ')'}} expected-note at +3 {{to match this '('}}
-  // expected-error at +2 2 {{expression is not an integral constant expression}}
+  // expected-error at +2 2 {{integral constant expression}}
   // expected-note at +1 2 {{read of non-const variable 'argc' is not allowed in a constant expression}}
   #pragma omp for simd simdlen (argc 
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
@@ -40,7 +40,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
   // expected-error at +6 2 {{directive '#pragma omp for simd' cannot contain more than one 'simdlen' clause}}
   // expected-error at +5 {{argument to 'simdlen' clause must be a strictly positive integer value}}
-  // expected-error at +4 2 {{expression is not an integral constant expression}}
+  // expected-error at +4 2 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +2 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
@@ -49,7 +49,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   #pragma omp for simd simdlen (S) // expected-error {{'S' does not refer to a value}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
 #if __cplusplus <= 199711L
-  // expected-error at +4 2 {{expression is not an integral constant expression}}
+  // expected-error at +4 2 {{integral constant expression}}
 #else
   // expected-error at +2 2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif
@@ -73,13 +73,13 @@ int main(int argc, char **argv) {
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
   #pragma omp for simd simdlen (2+2)) // expected-warning {{extra tokens at the end of '#pragma omp for simd' are ignored}}
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
-  // expected-error at +4 {{expression is not an integral constant expression}}
+  // expected-error at +4 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +2 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
   #pragma omp for simd simdlen (foobool(1) > 0 ? 1 : 2)
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
-  // expected-error at +6 {{expression is not an integral constant expression}}
+  // expected-error at +6 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +4 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
@@ -90,7 +90,7 @@ int main(int argc, char **argv) {
   #pragma omp for simd simdlen (S1) // expected-error {{'S1' does not refer to a value}}
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
 #if __cplusplus <= 199711L
-  // expected-error at +4 {{expression is not an integral constant expression}}
+  // expected-error at +4 {{integral constant expression}}
 #else
   // expected-error at +2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif

diff  --git a/clang/test/OpenMP/master_taskloop_collapse_messages.cpp b/clang/test/OpenMP/master_taskloop_collapse_messages.cpp
index 83e5b85c4745..99cc4263ebb7 100644
--- a/clang/test/OpenMP/master_taskloop_collapse_messages.cpp
+++ b/clang/test/OpenMP/master_taskloop_collapse_messages.cpp
@@ -27,7 +27,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   #pragma omp master taskloop collapse () // expected-error {{expected expression}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
   // expected-error at +3 {{expected ')'}} expected-note at +3 {{to match this '('}}
-  // expected-error at +2 2 {{expression is not an integral constant expression}}
+  // expected-error at +2 2 {{integral constant expression}}
   // expected-note at +1 2 {{read of non-const variable 'argc' is not allowed in a constant expression}}
   #pragma omp master taskloop collapse (argc
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
@@ -40,7 +40,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST]; // expected-error 2 {{expected 2 for loops after '#pragma omp master taskloop', but found only 1}}
   // expected-error at +6 2 {{directive '#pragma omp master taskloop' cannot contain more than one 'collapse' clause}}
   // expected-error at +5 {{argument to 'collapse' clause must be a strictly positive integer value}}
-  // expected-error at +4 2 {{expression is not an integral constant expression}}
+  // expected-error at +4 2 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +2 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
@@ -49,7 +49,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   #pragma omp master taskloop collapse (S) // expected-error {{'S' does not refer to a value}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
 #if __cplusplus <= 199711L
-  // expected-error at +4 2 {{expression is not an integral constant expression}}
+  // expected-error at +4 2 {{integral constant expression}}
 #else
   // expected-error at +2 2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif
@@ -75,13 +75,13 @@ int main(int argc, char **argv) {
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4]; // expected-error {{expected 4 for loops after '#pragma omp master taskloop', but found only 1}}
   #pragma omp master taskloop collapse (2+2)) // expected-warning {{extra tokens at the end of '#pragma omp master taskloop' are ignored}}  expected-note {{as specified in 'collapse' clause}}
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4]; // expected-error {{expected 4 for loops after '#pragma omp master taskloop', but found only 1}}
-  // expected-error at +4 {{expression is not an integral constant expression}}
+  // expected-error at +4 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +2 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
   #pragma omp master taskloop collapse (foobool(1) > 0 ? 1 : 2)
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
-  // expected-error at +6 {{expression is not an integral constant expression}}
+  // expected-error at +6 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +4 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
@@ -92,7 +92,7 @@ int main(int argc, char **argv) {
   #pragma omp master taskloop collapse (S1) // expected-error {{'S1' does not refer to a value}}
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
 #if __cplusplus <= 199711L
-  // expected-error at +4 {{expression is not an integral constant expression}}
+  // expected-error at +4 {{integral constant expression}}
 #else
   // expected-error at +2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif

diff  --git a/clang/test/OpenMP/master_taskloop_misc_messages.c b/clang/test/OpenMP/master_taskloop_misc_messages.c
index 17f2831b1227..5228736b0c20 100644
--- a/clang/test/OpenMP/master_taskloop_misc_messages.c
+++ b/clang/test/OpenMP/master_taskloop_misc_messages.c
@@ -179,12 +179,12 @@ void test_collapse() {
   for (i = 0; i < 16; ++i)
     ; // expected-error {{expected 4 for loops after '#pragma omp master taskloop', but found only 1}}
 #pragma omp parallel
-// expected-error at +1 {{expression is not an integer constant expression}}
+// expected-error at +1 {{integer constant expression}}
 #pragma omp master taskloop collapse(2.5)
   for (i = 0; i < 16; ++i)
     ;
 #pragma omp parallel
-// expected-error at +1 {{expression is not an integer constant expression}}
+// expected-error at +1 {{integer constant expression}}
 #pragma omp master taskloop collapse(foo())
   for (i = 0; i < 16; ++i)
     ;

diff  --git a/clang/test/OpenMP/master_taskloop_simd_aligned_messages.cpp b/clang/test/OpenMP/master_taskloop_simd_aligned_messages.cpp
index 349fd601e5ef..c2c56dfdb458 100644
--- a/clang/test/OpenMP/master_taskloop_simd_aligned_messages.cpp
+++ b/clang/test/OpenMP/master_taskloop_simd_aligned_messages.cpp
@@ -151,7 +151,7 @@ template<class I, class C> int foomain(I argc, C **argv) {
   for (I k = 0; k < argc; ++k) ++k;
   int v = 0;
   // expected-note at +2 {{initializer of 'j' is not a constant expression}}
-  // expected-error at +1 {{expression is not an integral constant expression}}
+  // expected-error at +1 {{integral constant expression}}
   #pragma omp master taskloop simd aligned(f:j)
   for (I k = 0; k < argc; ++k) { ++k; v += j; }
   #pragma omp master taskloop simd aligned(f)

diff  --git a/clang/test/OpenMP/master_taskloop_simd_collapse_messages.cpp b/clang/test/OpenMP/master_taskloop_simd_collapse_messages.cpp
index 653f52e1fada..787c50aade7b 100644
--- a/clang/test/OpenMP/master_taskloop_simd_collapse_messages.cpp
+++ b/clang/test/OpenMP/master_taskloop_simd_collapse_messages.cpp
@@ -27,7 +27,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   #pragma omp master taskloop simd collapse () // expected-error {{expected expression}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
   // expected-error at +3 {{expected ')'}} expected-note at +3 {{to match this '('}}
-  // expected-error at +2 2 {{expression is not an integral constant expression}}
+  // expected-error at +2 2 {{integral constant expression}}
   // expected-note at +1 2 {{read of non-const variable 'argc' is not allowed in a constant expression}}
   #pragma omp master taskloop simd collapse (argc
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
@@ -40,7 +40,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST]; // expected-error 2 {{expected 2 for loops after '#pragma omp master taskloop simd', but found only 1}}
   // expected-error at +6 2 {{directive '#pragma omp master taskloop simd' cannot contain more than one 'collapse' clause}}
   // expected-error at +5 {{argument to 'collapse' clause must be a strictly positive integer value}}
-  // expected-error at +4 2 {{expression is not an integral constant expression}}
+  // expected-error at +4 2 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +2 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
@@ -49,7 +49,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   #pragma omp master taskloop simd collapse (S) // expected-error {{'S' does not refer to a value}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
 #if __cplusplus <= 199711L
-  // expected-error at +4 2 {{expression is not an integral constant expression}}
+  // expected-error at +4 2 {{integral constant expression}}
 #else
   // expected-error at +2 2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif
@@ -75,13 +75,13 @@ int main(int argc, char **argv) {
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4]; // expected-error {{expected 4 for loops after '#pragma omp master taskloop simd', but found only 1}}
   #pragma omp master taskloop simd collapse (2+2)) // expected-warning {{extra tokens at the end of '#pragma omp master taskloop simd' are ignored}}  expected-note {{as specified in 'collapse' clause}}
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4]; // expected-error {{expected 4 for loops after '#pragma omp master taskloop simd', but found only 1}}
-  // expected-error at +4 {{expression is not an integral constant expression}}
+  // expected-error at +4 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +2 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
   #pragma omp master taskloop simd collapse (foobool(1) > 0 ? 1 : 2)
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
-  // expected-error at +6 {{expression is not an integral constant expression}}
+  // expected-error at +6 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +4 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
@@ -92,7 +92,7 @@ int main(int argc, char **argv) {
   #pragma omp master taskloop simd collapse (S1) // expected-error {{'S1' does not refer to a value}}
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
 #if __cplusplus <= 199711L
-  // expected-error at +4 {{expression is not an integral constant expression}}
+  // expected-error at +4 {{integral constant expression}}
 #else
   // expected-error at +2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif

diff  --git a/clang/test/OpenMP/master_taskloop_simd_misc_messages.c b/clang/test/OpenMP/master_taskloop_simd_misc_messages.c
index f9de78612dec..6c7759bdce0d 100644
--- a/clang/test/OpenMP/master_taskloop_simd_misc_messages.c
+++ b/clang/test/OpenMP/master_taskloop_simd_misc_messages.c
@@ -180,12 +180,12 @@ void test_collapse() {
   for (i = 0; i < 16; ++i)
     ; // expected-error {{expected 4 for loops after '#pragma omp master taskloop simd', but found only 1}}
 #pragma omp parallel
-// expected-error at +1 {{expression is not an integer constant expression}}
+// expected-error at +1 {{integer constant expression}}
 #pragma omp master taskloop simd collapse(2.5)
   for (i = 0; i < 16; ++i)
     ;
 #pragma omp parallel
-// expected-error at +1 {{expression is not an integer constant expression}}
+// expected-error at +1 {{integer constant expression}}
 #pragma omp master taskloop simd collapse(foo())
   for (i = 0; i < 16; ++i)
     ;

diff  --git a/clang/test/OpenMP/master_taskloop_simd_safelen_messages.cpp b/clang/test/OpenMP/master_taskloop_simd_safelen_messages.cpp
index bdf4f6b06580..9420cde08365 100644
--- a/clang/test/OpenMP/master_taskloop_simd_safelen_messages.cpp
+++ b/clang/test/OpenMP/master_taskloop_simd_safelen_messages.cpp
@@ -27,7 +27,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   #pragma omp master taskloop simd safelen () // expected-error {{expected expression}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
   // expected-error at +3 {{expected ')'}} expected-note at +3 {{to match this '('}}
-  // expected-error at +2 2 {{expression is not an integral constant expression}}
+  // expected-error at +2 2 {{integral constant expression}}
   // expected-note at +1 2 {{read of non-const variable 'argc' is not allowed in a constant expression}}
   #pragma omp master taskloop simd safelen (argc 
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
@@ -40,7 +40,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
   // expected-error at +6 2 {{directive '#pragma omp master taskloop simd' cannot contain more than one 'safelen' clause}}
   // expected-error at +5 {{argument to 'safelen' clause must be a strictly positive integer value}}
-  // expected-error at +4 2 {{expression is not an integral constant expression}}
+  // expected-error at +4 2 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +2 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
@@ -49,7 +49,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   #pragma omp master taskloop simd safelen (S) // expected-error {{'S' does not refer to a value}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
 #if __cplusplus <= 199711L
-  // expected-error at +4 2 {{expression is not an integral constant expression}}
+  // expected-error at +4 2 {{integral constant expression}}
 #else
   // expected-error at +2 2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif
@@ -73,13 +73,13 @@ int main(int argc, char **argv) {
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
   #pragma omp master taskloop simd safelen (2+2)) // expected-warning {{extra tokens at the end of '#pragma omp master taskloop simd' are ignored}}
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
-  // expected-error at +4 {{expression is not an integral constant expression}}
+  // expected-error at +4 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +2 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
   #pragma omp master taskloop simd safelen (foobool(1) > 0 ? 1 : 2)
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
-  // expected-error at +6 {{expression is not an integral constant expression}}
+  // expected-error at +6 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +4 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
@@ -90,7 +90,7 @@ int main(int argc, char **argv) {
   #pragma omp master taskloop simd safelen (S1) // expected-error {{'S1' does not refer to a value}}
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
 #if __cplusplus <= 199711L
-  // expected-error at +4 {{expression is not an integral constant expression}}
+  // expected-error at +4 {{integral constant expression}}
 #else
   // expected-error at +2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif

diff  --git a/clang/test/OpenMP/master_taskloop_simd_simdlen_messages.cpp b/clang/test/OpenMP/master_taskloop_simd_simdlen_messages.cpp
index 2deb98dcffa8..36abee7b5cfe 100644
--- a/clang/test/OpenMP/master_taskloop_simd_simdlen_messages.cpp
+++ b/clang/test/OpenMP/master_taskloop_simd_simdlen_messages.cpp
@@ -27,7 +27,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   #pragma omp master taskloop simd simdlen () // expected-error {{expected expression}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
   // expected-error at +3 {{expected ')'}} expected-note at +3 {{to match this '('}}
-  // expected-error at +2 2 {{expression is not an integral constant expression}}
+  // expected-error at +2 2 {{integral constant expression}}
   // expected-note at +1 2 {{read of non-const variable 'argc' is not allowed in a constant expression}}
   #pragma omp master taskloop simd simdlen (argc
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
@@ -40,7 +40,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
   // expected-error at +6 2 {{directive '#pragma omp master taskloop simd' cannot contain more than one 'simdlen' clause}}
   // expected-error at +5 {{argument to 'simdlen' clause must be a strictly positive integer value}}
-  // expected-error at +4 2 {{expression is not an integral constant expression}}
+  // expected-error at +4 2 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +2 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
@@ -49,7 +49,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   #pragma omp master taskloop simd simdlen (S) // expected-error {{'S' does not refer to a value}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
 #if __cplusplus <= 199711L
-  // expected-error at +4 2 {{expression is not an integral constant expression}}
+  // expected-error at +4 2 {{integral constant expression}}
 #else
   // expected-error at +2 2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif
@@ -73,13 +73,13 @@ int main(int argc, char **argv) {
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
   #pragma omp master taskloop simd simdlen (2+2)) // expected-warning {{extra tokens at the end of '#pragma omp master taskloop simd' are ignored}}
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
-  // expected-error at +4 {{expression is not an integral constant expression}}
+  // expected-error at +4 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +2 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
   #pragma omp master taskloop simd simdlen (foobool(1) > 0 ? 1 : 2)
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
-  // expected-error at +6 {{expression is not an integral constant expression}}
+  // expected-error at +6 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +4 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
@@ -90,7 +90,7 @@ int main(int argc, char **argv) {
   #pragma omp master taskloop simd simdlen (S1) // expected-error {{'S1' does not refer to a value}}
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
 #if __cplusplus <= 199711L
-  // expected-error at +4 {{expression is not an integral constant expression}}
+  // expected-error at +4 {{integral constant expression}}
 #else
   // expected-error at +2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif

diff  --git a/clang/test/OpenMP/ordered_messages.cpp b/clang/test/OpenMP/ordered_messages.cpp
index 544c97d36ab3..f6b9dbd6d27f 100644
--- a/clang/test/OpenMP/ordered_messages.cpp
+++ b/clang/test/OpenMP/ordered_messages.cpp
@@ -159,7 +159,7 @@ T foo() {
 #pragma omp ordered depend(sink : i, j)
 #pragma omp ordered depend(sink : j, i) // expected-error {{expected 'i' loop iteration variable}} expected-error {{expected 'j' loop iteration variable}}
 #pragma omp ordered depend(sink : i, j, k) // expected-error {{unexpected expression: number of expressions is larger than the number of associated loops}}
-#pragma omp ordered depend(sink : i+foo(), j/4) // expected-error {{expression is not an integral constant expression}} expected-error {{expected '+' or '-' operation}}
+#pragma omp ordered depend(sink : i+foo(), j/4) // expected-error {{integral constant expression}} expected-error {{expected '+' or '-' operation}}
 #if __cplusplus >= 201103L
 // expected-note at -2 {{non-constexpr function 'foo' cannot be used in a constant expression}}
 #endif
@@ -296,7 +296,7 @@ int k;
 #pragma omp ordered depend(sink : i, j) allocate(i) // expected-error {{unexpected OpenMP clause 'allocate' in directive '#pragma omp ordered'}}
 #pragma omp ordered depend(sink : j, i) // expected-error {{expected 'i' loop iteration variable}} expected-error {{expected 'j' loop iteration variable}}
 #pragma omp ordered depend(sink : i, j, k) // expected-error {{unexpected expression: number of expressions is larger than the number of associated loops}}
-#pragma omp ordered depend(sink : i+foo(), j/4) // expected-error {{expression is not an integral constant expression}} expected-error {{expected '+' or '-' operation}}
+#pragma omp ordered depend(sink : i+foo(), j/4) // expected-error {{integral constant expression}} expected-error {{expected '+' or '-' operation}}
 #if __cplusplus >= 201103L
 // expected-note at -2 {{non-constexpr function 'foo' cannot be used in a constant expression}}
 #endif

diff  --git a/clang/test/OpenMP/parallel_for_collapse_messages.cpp b/clang/test/OpenMP/parallel_for_collapse_messages.cpp
index d03e1b820e31..ba48ce50178a 100644
--- a/clang/test/OpenMP/parallel_for_collapse_messages.cpp
+++ b/clang/test/OpenMP/parallel_for_collapse_messages.cpp
@@ -27,7 +27,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   #pragma omp parallel for collapse () // expected-error {{expected expression}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
   // expected-error at +3 {{expected ')'}} expected-note at +3 {{to match this '('}}
-  // expected-error at +2 2 {{expression is not an integral constant expression}}
+  // expected-error at +2 2 {{integral constant expression}}
   // expected-note at +1 2 {{read of non-const variable 'argc' is not allowed in a constant expression}}
   #pragma omp parallel for collapse (argc 
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
@@ -40,7 +40,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST]; // expected-error 2 {{expected 2 for loops after '#pragma omp parallel for', but found only 1}}
   // expected-error at +6 2 {{directive '#pragma omp parallel for' cannot contain more than one 'collapse' clause}}
   // expected-error at +5 {{argument to 'collapse' clause must be a strictly positive integer value}}
-  // expected-error at +4 2 {{expression is not an integral constant expression}}
+  // expected-error at +4 2 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +2 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
@@ -49,7 +49,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   #pragma omp parallel for collapse (S) // expected-error {{'S' does not refer to a value}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
 #if __cplusplus <= 199711L
-  // expected-error at +4 2 {{expression is not an integral constant expression}}
+  // expected-error at +4 2 {{integral constant expression}}
 #else
   // expected-error at +2 2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif
@@ -75,13 +75,13 @@ int main(int argc, char **argv) {
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4]; // expected-error {{expected 4 for loops after '#pragma omp parallel for', but found only 1}}
   #pragma omp parallel for collapse (2+2)) // expected-warning {{extra tokens at the end of '#pragma omp parallel for' are ignored}}  expected-note {{as specified in 'collapse' clause}}
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4]; // expected-error {{expected 4 for loops after '#pragma omp parallel for', but found only 1}}
-  // expected-error at +4 {{expression is not an integral constant expression}}
+  // expected-error at +4 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +2 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
   #pragma omp parallel for collapse (foobool(1) > 0 ? 1 : 2)
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
-  // expected-error at +6 {{expression is not an integral constant expression}}
+  // expected-error at +6 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +4{{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
@@ -92,7 +92,7 @@ int main(int argc, char **argv) {
   #pragma omp parallel for collapse (S1) // expected-error {{'S1' does not refer to a value}}
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
 #if __cplusplus <= 199711L
-  // expected-error at +4 {{expression is not an integral constant expression}}
+  // expected-error at +4 {{integral constant expression}}
 #else
   // expected-error at +2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif

diff  --git a/clang/test/OpenMP/parallel_for_misc_messages.c b/clang/test/OpenMP/parallel_for_misc_messages.c
index 38e50915ddf5..2c8643674286 100644
--- a/clang/test/OpenMP/parallel_for_misc_messages.c
+++ b/clang/test/OpenMP/parallel_for_misc_messages.c
@@ -142,11 +142,11 @@ void test_collapse() {
 #pragma omp parallel for collapse(4, 8)
   for (i = 0; i < 16; ++i)
     ; // expected-error {{expected 4 for loops after '#pragma omp parallel for', but found only 1}}
-// expected-error at +1 {{expression is not an integer constant expression}}
+// expected-error at +1 {{integer constant expression}}
 #pragma omp parallel for collapse(2.5)
   for (i = 0; i < 16; ++i)
     ;
-// expected-error at +1 {{expression is not an integer constant expression}}
+// expected-error at +1 {{integer constant expression}}
 #pragma omp parallel for collapse(foo())
   for (i = 0; i < 16; ++i)
     ;

diff  --git a/clang/test/OpenMP/parallel_for_ordered_messages.cpp b/clang/test/OpenMP/parallel_for_ordered_messages.cpp
index 027e3b0797d7..7b46191fba92 100644
--- a/clang/test/OpenMP/parallel_for_ordered_messages.cpp
+++ b/clang/test/OpenMP/parallel_for_ordered_messages.cpp
@@ -30,7 +30,7 @@ T tmain(T argc, S **argv) {                   //expected-note 2 {{declared here}
   for (int i = ST; i < N; i++)
     argv[0][i] = argv[0][i] - argv[0][i - ST];
 // expected-error at +3 {{expected ')'}} expected-note at +3 {{to match this '('}}
-// expected-error at +2 2 {{expression is not an integral constant expression}}
+// expected-error at +2 2 {{integral constant expression}}
 // expected-note at +1 2 {{read of non-const variable 'argc' is not allowed in a constant expression}}
 #pragma omp parallel for ordered(argc
   for (int i = ST; i < N; i++)
@@ -47,7 +47,7 @@ T tmain(T argc, S **argv) {                   //expected-note 2 {{declared here}
     argv[0][i] = argv[0][i] - argv[0][i - ST]; // expected-error 2 {{expected 2 for loops after '#pragma omp parallel for', but found only 1}}
 // expected-error at +6 2 {{directive '#pragma omp parallel for' cannot contain more than one 'ordered' clause}}
 // expected-error at +5 {{argument to 'ordered' clause must be a strictly positive integer value}}
-// expected-error at +4 2 {{expression is not an integral constant expression}}
+// expected-error at +4 2 {{integral constant expression}}
 #if __cplusplus >= 201103L
 // expected-note at +2 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
@@ -58,7 +58,7 @@ T tmain(T argc, S **argv) {                   //expected-note 2 {{declared here}
   for (int i = ST; i < N; i++)
     argv[0][i] = argv[0][i] - argv[0][i - ST];
 #if __cplusplus <= 199711L
-// expected-error at +4 2 {{expression is not an integral constant expression}}
+// expected-error at +4 2 {{integral constant expression}}
 #else
 // expected-error at +2 2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif
@@ -92,14 +92,14 @@ int main(int argc, char **argv) {
 #pragma omp parallel for ordered(2 + 2))      // expected-warning {{extra tokens at the end of '#pragma omp parallel for' are ignored}}  expected-note {{as specified in 'ordered' clause}}
   for (int i = 4; i < 12; i++)
     argv[0][i] = argv[0][i] - argv[0][i - 4];            // expected-error {{expected 4 for loops after '#pragma omp parallel for', but found only 1}}
-// expected-error at +4 {{expression is not an integral constant expression}}
+// expected-error at +4 {{integral constant expression}}
 #if __cplusplus >= 201103L
 // expected-note at +2 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
 #pragma omp parallel for ordered(foobool(1) > 0 ? 1 : 2)
   for (int i = 4; i < 12; i++)
     argv[0][i] = argv[0][i] - argv[0][i - 4];
-// expected-error at +6 {{expression is not an integral constant expression}}
+// expected-error at +6 {{integral constant expression}}
 #if __cplusplus >= 201103L
 // expected-note at +4 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
@@ -112,7 +112,7 @@ int main(int argc, char **argv) {
   for (int i = 4; i < 12; i++)
     argv[0][i] = argv[0][i] - argv[0][i - 4];
 #if __cplusplus <= 199711L
-// expected-error at +4 {{expression is not an integral constant expression}}
+// expected-error at +4 {{integral constant expression}}
 #else
 // expected-error at +2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif

diff  --git a/clang/test/OpenMP/parallel_for_simd_aligned_messages.cpp b/clang/test/OpenMP/parallel_for_simd_aligned_messages.cpp
index 76c64de3fec1..e9ef234def24 100644
--- a/clang/test/OpenMP/parallel_for_simd_aligned_messages.cpp
+++ b/clang/test/OpenMP/parallel_for_simd_aligned_messages.cpp
@@ -151,7 +151,7 @@ template<class I, class C> int foomain(I argc, C **argv) {
   for (I k = 0; k < argc; ++k) ++k;
   int v = 0;
   // expected-note at +2 {{initializer of 'j' is not a constant expression}}
-  // expected-error at +1 {{expression is not an integral constant expression}}
+  // expected-error at +1 {{integral constant expression}}
   #pragma omp parallel for simd aligned(f:j)
   for (I k = 0; k < argc; ++k) { ++k; v += j; }
   #pragma omp parallel for simd aligned(f)

diff  --git a/clang/test/OpenMP/parallel_for_simd_collapse_messages.cpp b/clang/test/OpenMP/parallel_for_simd_collapse_messages.cpp
index 4b2c8b577b77..f04b1881db3b 100644
--- a/clang/test/OpenMP/parallel_for_simd_collapse_messages.cpp
+++ b/clang/test/OpenMP/parallel_for_simd_collapse_messages.cpp
@@ -27,7 +27,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   #pragma omp parallel for simd collapse () // expected-error {{expected expression}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
   // expected-error at +3 {{expected ')'}} expected-note at +3 {{to match this '('}}
-  // expected-error at +2 2 {{expression is not an integral constant expression}}
+  // expected-error at +2 2 {{integral constant expression}}
   // expected-note at +1 2 {{read of non-const variable 'argc' is not allowed in a constant expression}}
   #pragma omp parallel for simd collapse (argc 
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
@@ -40,7 +40,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST]; // expected-error 2 {{expected 2 for loops after '#pragma omp parallel for simd', but found only 1}}
   // expected-error at +6 2 {{directive '#pragma omp parallel for simd' cannot contain more than one 'collapse' clause}}
   // expected-error at +5 {{argument to 'collapse' clause must be a strictly positive integer value}}
-  // expected-error at +4 2 {{expression is not an integral constant expression}}
+  // expected-error at +4 2 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +2 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
@@ -49,7 +49,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   #pragma omp parallel for simd collapse (S) // expected-error {{'S' does not refer to a value}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
 #if __cplusplus <= 199711L
-  // expected-error at +4 2 {{expression is not an integral constant expression}}
+  // expected-error at +4 2 {{integral constant expression}}
 #else
   // expected-error at +2 2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif
@@ -75,13 +75,13 @@ int main(int argc, char **argv) {
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4]; // expected-error {{expected 4 for loops after '#pragma omp parallel for simd', but found only 1}}
   #pragma omp parallel for simd collapse (2+2)) // expected-warning {{extra tokens at the end of '#pragma omp parallel for simd' are ignored}}  expected-note {{as specified in 'collapse' clause}}
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4]; // expected-error {{expected 4 for loops after '#pragma omp parallel for simd', but found only 1}}
-  // expected-error at +4 {{expression is not an integral constant expression}}
+  // expected-error at +4 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +2 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
   #pragma omp parallel for simd collapse (foobool(1) > 0 ? 1 : 2)
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
-  // expected-error at +6 {{expression is not an integral constant expression}}
+  // expected-error at +6 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +4 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
@@ -92,7 +92,7 @@ int main(int argc, char **argv) {
   #pragma omp parallel for simd collapse (S1) // expected-error {{'S1' does not refer to a value}}
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
 #if __cplusplus <= 199711L
-  // expected-error at +4 {{expression is not an integral constant expression}}
+  // expected-error at +4 {{integral constant expression}}
 #else
   // expected-error at +2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif

diff  --git a/clang/test/OpenMP/parallel_for_simd_misc_messages.c b/clang/test/OpenMP/parallel_for_simd_misc_messages.c
index 244a26f2a822..d2b088a29c57 100644
--- a/clang/test/OpenMP/parallel_for_simd_misc_messages.c
+++ b/clang/test/OpenMP/parallel_for_simd_misc_messages.c
@@ -149,11 +149,11 @@ void test_safelen() {
 #pragma omp parallel for simd safelen(4, 8)
   for (i = 0; i < 16; ++i)
     ;
-// expected-error at +1 {{expression is not an integer constant expression}}
+// expected-error at +1 {{integer constant expression}}
 #pragma omp parallel for simd safelen(2.5)
   for (i = 0; i < 16; ++i)
     ;
-// expected-error at +1 {{expression is not an integer constant expression}}
+// expected-error at +1 {{integer constant expression}}
 #pragma omp parallel for simd safelen(foo())
   for (i = 0; i < 16; ++i)
     ;
@@ -234,11 +234,11 @@ void test_simdlen() {
 #pragma omp parallel for simd simdlen(4, 8)
   for (i = 0; i < 16; ++i)
     ;
-// expected-error at +1 {{expression is not an integer constant expression}}
+// expected-error at +1 {{integer constant expression}}
 #pragma omp parallel for simd simdlen(2.5)
   for (i = 0; i < 16; ++i)
     ;
-// expected-error at +1 {{expression is not an integer constant expression}}
+// expected-error at +1 {{integer constant expression}}
 #pragma omp parallel for simd simdlen(foo())
   for (i = 0; i < 16; ++i)
     ;
@@ -350,12 +350,12 @@ void test_collapse() {
   for (i = 0; i < 16; ++i)
     ; // expected-error {{expected 4 for loops after '#pragma omp parallel for simd', but found only 1}}
 #pragma omp parallel
-// expected-error at +1 {{expression is not an integer constant expression}}
+// expected-error at +1 {{integer constant expression}}
 #pragma omp parallel for simd collapse(2.5)
   for (i = 0; i < 16; ++i)
     ;
 #pragma omp parallel
-// expected-error at +1 {{expression is not an integer constant expression}}
+// expected-error at +1 {{integer constant expression}}
 #pragma omp parallel for simd collapse(foo())
   for (i = 0; i < 16; ++i)
     ;

diff  --git a/clang/test/OpenMP/parallel_for_simd_safelen_messages.cpp b/clang/test/OpenMP/parallel_for_simd_safelen_messages.cpp
index b0951de6623d..29da9ff27a0b 100644
--- a/clang/test/OpenMP/parallel_for_simd_safelen_messages.cpp
+++ b/clang/test/OpenMP/parallel_for_simd_safelen_messages.cpp
@@ -27,7 +27,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   #pragma omp parallel for simd safelen () // expected-error {{expected expression}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
   // expected-error at +3 {{expected ')'}} expected-note at +3 {{to match this '('}}
-  // expected-error at +2 2 {{expression is not an integral constant expression}}
+  // expected-error at +2 2 {{integral constant expression}}
   // expected-note at +1 2 {{read of non-const variable 'argc' is not allowed in a constant expression}}
   #pragma omp parallel for simd safelen (argc 
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
@@ -40,7 +40,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
   // expected-error at +6 2 {{directive '#pragma omp parallel for simd' cannot contain more than one 'safelen' clause}}
   // expected-error at +5 {{argument to 'safelen' clause must be a strictly positive integer value}}
-  // expected-error at +4 2 {{expression is not an integral constant expression}}
+  // expected-error at +4 2 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +2 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
@@ -49,7 +49,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   #pragma omp parallel for simd safelen (S) // expected-error {{'S' does not refer to a value}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
 #if __cplusplus <= 199711L
-  // expected-error at +4 2 {{expression is not an integral constant expression}}
+  // expected-error at +4 2 {{integral constant expression}}
 #else
   // expected-error at +2 2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif
@@ -73,13 +73,13 @@ int main(int argc, char **argv) {
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
   #pragma omp parallel for simd safelen (2+2)) // expected-warning {{extra tokens at the end of '#pragma omp parallel for simd' are ignored}}
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
-  // expected-error at +4 {{expression is not an integral constant expression}}
+  // expected-error at +4 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +2 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
   #pragma omp parallel for simd safelen (foobool(1) > 0 ? 1 : 2)
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
-  // expected-error at +6 {{expression is not an integral constant expression}}
+  // expected-error at +6 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +4 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
@@ -90,7 +90,7 @@ int main(int argc, char **argv) {
   #pragma omp parallel for simd safelen (S1) // expected-error {{'S1' does not refer to a value}}
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
 #if __cplusplus <= 199711L
-  // expected-error at +4 {{expression is not an integral constant expression}}
+  // expected-error at +4 {{integral constant expression}}
 #else
   // expected-error at +2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif

diff  --git a/clang/test/OpenMP/parallel_for_simd_simdlen_messages.cpp b/clang/test/OpenMP/parallel_for_simd_simdlen_messages.cpp
index 29a340e52f2d..8e0bf9ce6d7b 100644
--- a/clang/test/OpenMP/parallel_for_simd_simdlen_messages.cpp
+++ b/clang/test/OpenMP/parallel_for_simd_simdlen_messages.cpp
@@ -27,7 +27,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   #pragma omp parallel for simd simdlen () // expected-error {{expected expression}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
   // expected-error at +3 {{expected ')'}} expected-note at +3 {{to match this '('}}
-  // expected-error at +2 2 {{expression is not an integral constant expression}}
+  // expected-error at +2 2 {{integral constant expression}}
   // expected-note at +1 2 {{read of non-const variable 'argc' is not allowed in a constant expression}}
   #pragma omp parallel for simd simdlen (argc 
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
@@ -40,7 +40,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
   // expected-error at +6 2 {{directive '#pragma omp parallel for simd' cannot contain more than one 'simdlen' clause}}
   // expected-error at +5 {{argument to 'simdlen' clause must be a strictly positive integer value}}
-  // expected-error at +4 2 {{expression is not an integral constant expression}}
+  // expected-error at +4 2 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +2 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
@@ -49,7 +49,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   #pragma omp parallel for simd simdlen (S) // expected-error {{'S' does not refer to a value}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
 #if __cplusplus <= 199711L
-  // expected-error at +4 2 {{expression is not an integral constant expression}}
+  // expected-error at +4 2 {{integral constant expression}}
 #else
   // expected-error at +2 2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif
@@ -73,13 +73,13 @@ int main(int argc, char **argv) {
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
   #pragma omp parallel for simd simdlen (2+2)) // expected-warning {{extra tokens at the end of '#pragma omp parallel for simd' are ignored}}
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
-  // expected-error at +4 {{expression is not an integral constant expression}}
+  // expected-error at +4 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +2 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
   #pragma omp parallel for simd simdlen (foobool(1) > 0 ? 1 : 2)
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
-  // expected-error at +6 {{expression is not an integral constant expression}}
+  // expected-error at +6 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +4 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
@@ -90,7 +90,7 @@ int main(int argc, char **argv) {
   #pragma omp parallel for simd simdlen (S1) // expected-error {{'S1' does not refer to a value}}
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
 #if __cplusplus <= 199711L
-  // expected-error at +4 {{expression is not an integral constant expression}}
+  // expected-error at +4 {{integral constant expression}}
 #else
   // expected-error at +2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif

diff  --git a/clang/test/OpenMP/parallel_master_taskloop_collapse_messages.cpp b/clang/test/OpenMP/parallel_master_taskloop_collapse_messages.cpp
index bbed5d18ea42..d93222a4b5c7 100644
--- a/clang/test/OpenMP/parallel_master_taskloop_collapse_messages.cpp
+++ b/clang/test/OpenMP/parallel_master_taskloop_collapse_messages.cpp
@@ -27,7 +27,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   #pragma omp parallel master taskloop collapse () // expected-error {{expected expression}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
   // expected-error at +3 {{expected ')'}} expected-note at +3 {{to match this '('}}
-  // expected-error at +2 2 {{expression is not an integral constant expression}}
+  // expected-error at +2 2 {{integral constant expression}}
   // expected-note at +1 2 {{read of non-const variable 'argc' is not allowed in a constant expression}}
   #pragma omp parallel master taskloop collapse (argc
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
@@ -40,7 +40,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST]; // expected-error 2 {{expected 2 for loops after '#pragma omp parallel master taskloop', but found only 1}}
   // expected-error at +6 2 {{directive '#pragma omp parallel master taskloop' cannot contain more than one 'collapse' clause}}
   // expected-error at +5 {{argument to 'collapse' clause must be a strictly positive integer value}}
-  // expected-error at +4 2 {{expression is not an integral constant expression}}
+  // expected-error at +4 2 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +2 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
@@ -49,7 +49,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   #pragma omp parallel master taskloop collapse (S) // expected-error {{'S' does not refer to a value}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
 #if __cplusplus <= 199711L
-  // expected-error at +4 2 {{expression is not an integral constant expression}}
+  // expected-error at +4 2 {{integral constant expression}}
 #else
   // expected-error at +2 2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif
@@ -75,13 +75,13 @@ int main(int argc, char **argv) {
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4]; // expected-error {{expected 4 for loops after '#pragma omp parallel master taskloop', but found only 1}}
   #pragma omp parallel master taskloop collapse (2+2)) // expected-warning {{extra tokens at the end of '#pragma omp parallel master taskloop' are ignored}}  expected-note {{as specified in 'collapse' clause}}
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4]; // expected-error {{expected 4 for loops after '#pragma omp parallel master taskloop', but found only 1}}
-  // expected-error at +4 {{expression is not an integral constant expression}}
+  // expected-error at +4 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +2 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
   #pragma omp parallel master taskloop collapse (foobool(1) > 0 ? 1 : 2)
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
-  // expected-error at +6 {{expression is not an integral constant expression}}
+  // expected-error at +6 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +4 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
@@ -92,7 +92,7 @@ int main(int argc, char **argv) {
   #pragma omp parallel master taskloop collapse (S1) // expected-error {{'S1' does not refer to a value}}
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
 #if __cplusplus <= 199711L
-  // expected-error at +4 {{expression is not an integral constant expression}}
+  // expected-error at +4 {{integral constant expression}}
 #else
   // expected-error at +2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif

diff  --git a/clang/test/OpenMP/parallel_master_taskloop_misc_messages.c b/clang/test/OpenMP/parallel_master_taskloop_misc_messages.c
index 8c03434ed5db..8993ffdf27bf 100644
--- a/clang/test/OpenMP/parallel_master_taskloop_misc_messages.c
+++ b/clang/test/OpenMP/parallel_master_taskloop_misc_messages.c
@@ -182,12 +182,12 @@ void test_collapse() {
   for (i = 0; i < 16; ++i)
     ; // expected-error {{expected 4 for loops after '#pragma omp parallel master taskloop', but found only 1}}
 #pragma omp parallel
-// expected-error at +1 {{expression is not an integer constant expression}}
+// expected-error at +1 {{integer constant expression}}
 #pragma omp parallel master taskloop collapse(2.5)
   for (i = 0; i < 16; ++i)
     ;
 #pragma omp parallel
-// expected-error at +1 {{expression is not an integer constant expression}}
+// expected-error at +1 {{integer constant expression}}
 #pragma omp parallel master taskloop collapse(foo())
   for (i = 0; i < 16; ++i)
     ;

diff  --git a/clang/test/OpenMP/parallel_master_taskloop_simd_aligned_messages.cpp b/clang/test/OpenMP/parallel_master_taskloop_simd_aligned_messages.cpp
index b5b079f6dc7a..c6a5f6b90d3a 100644
--- a/clang/test/OpenMP/parallel_master_taskloop_simd_aligned_messages.cpp
+++ b/clang/test/OpenMP/parallel_master_taskloop_simd_aligned_messages.cpp
@@ -151,7 +151,7 @@ template<class I, class C> int foomain(I argc, C **argv) {
   for (I k = 0; k < argc; ++k) ++k;
   int v = 0;
   // expected-note at +2 {{initializer of 'j' is not a constant expression}}
-  // expected-error at +1 {{expression is not an integral constant expression}}
+  // expected-error at +1 {{integral constant expression}}
   #pragma omp parallel master taskloop simd aligned(f:j)
   for (I k = 0; k < argc; ++k) { ++k; v += j; }
   #pragma omp parallel master taskloop simd aligned(f)

diff  --git a/clang/test/OpenMP/parallel_master_taskloop_simd_collapse_messages.cpp b/clang/test/OpenMP/parallel_master_taskloop_simd_collapse_messages.cpp
index 667c39ad4299..c97cec72b514 100644
--- a/clang/test/OpenMP/parallel_master_taskloop_simd_collapse_messages.cpp
+++ b/clang/test/OpenMP/parallel_master_taskloop_simd_collapse_messages.cpp
@@ -27,7 +27,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   #pragma omp parallel master taskloop simd collapse () // expected-error {{expected expression}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
   // expected-error at +3 {{expected ')'}} expected-note at +3 {{to match this '('}}
-  // expected-error at +2 2 {{expression is not an integral constant expression}}
+  // expected-error at +2 2 {{integral constant expression}}
   // expected-note at +1 2 {{read of non-const variable 'argc' is not allowed in a constant expression}}
   #pragma omp parallel master taskloop simd collapse (argc
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
@@ -40,7 +40,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST]; // expected-error 2 {{expected 2 for loops after '#pragma omp parallel master taskloop simd', but found only 1}}
   // expected-error at +6 2 {{directive '#pragma omp parallel master taskloop simd' cannot contain more than one 'collapse' clause}}
   // expected-error at +5 {{argument to 'collapse' clause must be a strictly positive integer value}}
-  // expected-error at +4 2 {{expression is not an integral constant expression}}
+  // expected-error at +4 2 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +2 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
@@ -49,7 +49,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   #pragma omp parallel master taskloop simd collapse (S) // expected-error {{'S' does not refer to a value}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
 #if __cplusplus <= 199711L
-  // expected-error at +4 2 {{expression is not an integral constant expression}}
+  // expected-error at +4 2 {{integral constant expression}}
 #else
   // expected-error at +2 2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif
@@ -75,13 +75,13 @@ int main(int argc, char **argv) {
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4]; // expected-error {{expected 4 for loops after '#pragma omp parallel master taskloop simd', but found only 1}}
   #pragma omp parallel master taskloop simd collapse (2+2)) // expected-warning {{extra tokens at the end of '#pragma omp parallel master taskloop simd' are ignored}}  expected-note {{as specified in 'collapse' clause}}
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4]; // expected-error {{expected 4 for loops after '#pragma omp parallel master taskloop simd', but found only 1}}
-  // expected-error at +4 {{expression is not an integral constant expression}}
+  // expected-error at +4 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +2 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
   #pragma omp parallel master taskloop simd collapse (foobool(1) > 0 ? 1 : 2)
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
-  // expected-error at +6 {{expression is not an integral constant expression}}
+  // expected-error at +6 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +4 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
@@ -92,7 +92,7 @@ int main(int argc, char **argv) {
   #pragma omp parallel master taskloop simd collapse (S1) // expected-error {{'S1' does not refer to a value}}
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
 #if __cplusplus <= 199711L
-  // expected-error at +4 {{expression is not an integral constant expression}}
+  // expected-error at +4 {{integral constant expression}}
 #else
   // expected-error at +2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif

diff  --git a/clang/test/OpenMP/parallel_master_taskloop_simd_misc_messages.c b/clang/test/OpenMP/parallel_master_taskloop_simd_misc_messages.c
index 1553f88289aa..39df42b871db 100644
--- a/clang/test/OpenMP/parallel_master_taskloop_simd_misc_messages.c
+++ b/clang/test/OpenMP/parallel_master_taskloop_simd_misc_messages.c
@@ -183,12 +183,12 @@ void test_collapse() {
   for (i = 0; i < 16; ++i)
     ; // expected-error {{expected 4 for loops after '#pragma omp parallel master taskloop simd', but found only 1}}
 #pragma omp parallel
-// expected-error at +1 {{expression is not an integer constant expression}}
+// expected-error at +1 {{integer constant expression}}
 #pragma omp parallel master taskloop simd collapse(2.5)
   for (i = 0; i < 16; ++i)
     ;
 #pragma omp parallel
-// expected-error at +1 {{expression is not an integer constant expression}}
+// expected-error at +1 {{integer constant expression}}
 #pragma omp parallel master taskloop simd collapse(foo())
   for (i = 0; i < 16; ++i)
     ;

diff  --git a/clang/test/OpenMP/parallel_master_taskloop_simd_safelen_messages.cpp b/clang/test/OpenMP/parallel_master_taskloop_simd_safelen_messages.cpp
index 2a860b767e25..612a39f63412 100644
--- a/clang/test/OpenMP/parallel_master_taskloop_simd_safelen_messages.cpp
+++ b/clang/test/OpenMP/parallel_master_taskloop_simd_safelen_messages.cpp
@@ -27,7 +27,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   #pragma omp parallel master taskloop simd safelen () // expected-error {{expected expression}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
   // expected-error at +3 {{expected ')'}} expected-note at +3 {{to match this '('}}
-  // expected-error at +2 2 {{expression is not an integral constant expression}}
+  // expected-error at +2 2 {{integral constant expression}}
   // expected-note at +1 2 {{read of non-const variable 'argc' is not allowed in a constant expression}}
   #pragma omp parallel master taskloop simd safelen (argc 
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
@@ -40,7 +40,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
   // expected-error at +6 2 {{directive '#pragma omp parallel master taskloop simd' cannot contain more than one 'safelen' clause}}
   // expected-error at +5 {{argument to 'safelen' clause must be a strictly positive integer value}}
-  // expected-error at +4 2 {{expression is not an integral constant expression}}
+  // expected-error at +4 2 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +2 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
@@ -49,7 +49,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   #pragma omp parallel master taskloop simd safelen (S) // expected-error {{'S' does not refer to a value}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
 #if __cplusplus <= 199711L
-  // expected-error at +4 2 {{expression is not an integral constant expression}}
+  // expected-error at +4 2 {{integral constant expression}}
 #else
   // expected-error at +2 2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif
@@ -73,13 +73,13 @@ int main(int argc, char **argv) {
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
   #pragma omp parallel master taskloop simd safelen (2+2)) // expected-warning {{extra tokens at the end of '#pragma omp parallel master taskloop simd' are ignored}}
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
-  // expected-error at +4 {{expression is not an integral constant expression}}
+  // expected-error at +4 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +2 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
   #pragma omp parallel master taskloop simd safelen (foobool(1) > 0 ? 1 : 2)
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
-  // expected-error at +6 {{expression is not an integral constant expression}}
+  // expected-error at +6 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +4 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
@@ -90,7 +90,7 @@ int main(int argc, char **argv) {
   #pragma omp parallel master taskloop simd safelen (S1) // expected-error {{'S1' does not refer to a value}}
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
 #if __cplusplus <= 199711L
-  // expected-error at +4 {{expression is not an integral constant expression}}
+  // expected-error at +4 {{integral constant expression}}
 #else
   // expected-error at +2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif

diff  --git a/clang/test/OpenMP/parallel_master_taskloop_simd_simdlen_messages.cpp b/clang/test/OpenMP/parallel_master_taskloop_simd_simdlen_messages.cpp
index 9899ce380a46..16a543e13ada 100644
--- a/clang/test/OpenMP/parallel_master_taskloop_simd_simdlen_messages.cpp
+++ b/clang/test/OpenMP/parallel_master_taskloop_simd_simdlen_messages.cpp
@@ -27,7 +27,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   #pragma omp parallel master taskloop simd simdlen () // expected-error {{expected expression}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
   // expected-error at +3 {{expected ')'}} expected-note at +3 {{to match this '('}}
-  // expected-error at +2 2 {{expression is not an integral constant expression}}
+  // expected-error at +2 2 {{integral constant expression}}
   // expected-note at +1 2 {{read of non-const variable 'argc' is not allowed in a constant expression}}
   #pragma omp parallel master taskloop simd simdlen (argc
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
@@ -40,7 +40,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
   // expected-error at +6 2 {{directive '#pragma omp parallel master taskloop simd' cannot contain more than one 'simdlen' clause}}
   // expected-error at +5 {{argument to 'simdlen' clause must be a strictly positive integer value}}
-  // expected-error at +4 2 {{expression is not an integral constant expression}}
+  // expected-error at +4 2 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +2 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
@@ -49,7 +49,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   #pragma omp parallel master taskloop simd simdlen (S) // expected-error {{'S' does not refer to a value}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
 #if __cplusplus <= 199711L
-  // expected-error at +4 2 {{expression is not an integral constant expression}}
+  // expected-error at +4 2 {{integral constant expression}}
 #else
   // expected-error at +2 2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif
@@ -73,13 +73,13 @@ int main(int argc, char **argv) {
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
   #pragma omp parallel master taskloop simd simdlen (2+2)) // expected-warning {{extra tokens at the end of '#pragma omp parallel master taskloop simd' are ignored}}
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
-  // expected-error at +4 {{expression is not an integral constant expression}}
+  // expected-error at +4 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +2 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
   #pragma omp parallel master taskloop simd simdlen (foobool(1) > 0 ? 1 : 2)
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
-  // expected-error at +6 {{expression is not an integral constant expression}}
+  // expected-error at +6 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +4 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
@@ -90,7 +90,7 @@ int main(int argc, char **argv) {
   #pragma omp parallel master taskloop simd simdlen (S1) // expected-error {{'S1' does not refer to a value}}
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
 #if __cplusplus <= 199711L
-  // expected-error at +4 {{expression is not an integral constant expression}}
+  // expected-error at +4 {{integral constant expression}}
 #else
   // expected-error at +2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif

diff  --git a/clang/test/OpenMP/simd_aligned_messages.cpp b/clang/test/OpenMP/simd_aligned_messages.cpp
index 8b5edb81d7fb..f34eabd37e45 100644
--- a/clang/test/OpenMP/simd_aligned_messages.cpp
+++ b/clang/test/OpenMP/simd_aligned_messages.cpp
@@ -153,7 +153,7 @@ template<class I, class C> int foomain(I argc, C **argv) {
   for (I k = 0; k < argc; ++k) ++k;
   int v = 0;
   // expected-note at +2 {{initializer of 'j' is not a constant expression}}
-  // expected-error at +1 {{expression is not an integral constant expression}}
+  // expected-error at +1 {{integral constant expression}}
   #pragma omp simd aligned(f:j)
   for (I k = 0; k < argc; ++k) { ++k; v += j; }
   #pragma omp simd aligned(f)

diff  --git a/clang/test/OpenMP/simd_collapse_messages.cpp b/clang/test/OpenMP/simd_collapse_messages.cpp
index 978ae29fcad6..37915743b129 100644
--- a/clang/test/OpenMP/simd_collapse_messages.cpp
+++ b/clang/test/OpenMP/simd_collapse_messages.cpp
@@ -27,7 +27,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   #pragma omp simd collapse () // expected-error {{expected expression}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
   // expected-error at +3 {{expected ')'}} expected-note at +3 {{to match this '('}}
-  // expected-error at +2 2 {{expression is not an integral constant expression}}
+  // expected-error at +2 2 {{integral constant expression}}
   // expected-note at +1 2 {{read of non-const variable 'argc' is not allowed in a constant expression}}
   #pragma omp simd collapse (argc 
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
@@ -40,7 +40,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST]; // expected-error 2 {{expected 2 for loops after '#pragma omp simd', but found only 1}}
   // expected-error at +6 2 {{directive '#pragma omp simd' cannot contain more than one 'collapse' clause}}
   // expected-error at +5 {{argument to 'collapse' clause must be a strictly positive integer value}}
-  // expected-error at +4 2 {{expression is not an integral constant expression}}
+  // expected-error at +4 2 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +2 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
@@ -49,7 +49,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   #pragma omp simd collapse (S) // expected-error {{'S' does not refer to a value}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
 #if __cplusplus <= 199711L
-  // expected-error at +4 2 {{expression is not an integral constant expression}}
+  // expected-error at +4 2 {{integral constant expression}}
 #else
   // expected-error at +2 2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif
@@ -75,13 +75,13 @@ int main(int argc, char **argv) {
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4]; // expected-error {{expected 4 for loops after '#pragma omp simd', but found only 1}}
   #pragma omp simd collapse (2+2)) // expected-warning {{extra tokens at the end of '#pragma omp simd' are ignored}} expected-note {{as specified in 'collapse' clause}}
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4]; // expected-error {{expected 4 for loops after '#pragma omp simd', but found only 1}}
-  // expected-error at +4 {{expression is not an integral constant expression}}
+  // expected-error at +4 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +2 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
   #pragma omp simd collapse (foobool(1) > 0 ? 1 : 2)
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
-  // expected-error at +6 {{expression is not an integral constant expression}}
+  // expected-error at +6 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +4 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
@@ -92,7 +92,7 @@ int main(int argc, char **argv) {
   #pragma omp simd collapse (S1) // expected-error {{'S1' does not refer to a value}}
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
 #if __cplusplus <= 199711L
-  // expected-error at +4 {{expression is not an integral constant expression}}
+  // expected-error at +4 {{integral constant expression}}
 #else
   // expected-error at +2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif

diff  --git a/clang/test/OpenMP/simd_misc_messages.c b/clang/test/OpenMP/simd_misc_messages.c
index 8f731df214a0..a76aad9cec6d 100644
--- a/clang/test/OpenMP/simd_misc_messages.c
+++ b/clang/test/OpenMP/simd_misc_messages.c
@@ -155,11 +155,11 @@ void test_safelen() {
 #pragma omp simd safelen(4, 8)
   for (i = 0; i < 16; ++i)
     ;
-// expected-error at +1 {{expression is not an integer constant expression}}
+// expected-error at +1 {{integer constant expression}}
 #pragma omp simd safelen(2.5)
   for (i = 0; i < 16; ++i)
     ;
-// expected-error at +1 {{expression is not an integer constant expression}}
+// expected-error at +1 {{integer constant expression}}
 #pragma omp simd safelen(foo())
   for (i = 0; i < 16; ++i)
     ;
@@ -240,11 +240,11 @@ void test_simdlen() {
 #pragma omp simd simdlen(4, 8)
   for (i = 0; i < 16; ++i)
     ;
-// expected-error at +1 {{expression is not an integer constant expression}}
+// expected-error at +1 {{integer constant expression}}
 #pragma omp simd simdlen(2.5)
   for (i = 0; i < 16; ++i)
     ;
-// expected-error at +1 {{expression is not an integer constant expression}}
+// expected-error at +1 {{integer constant expression}}
 #pragma omp simd simdlen(foo())
   for (i = 0; i < 16; ++i)
     ;
@@ -341,11 +341,11 @@ void test_collapse() {
 #pragma omp simd collapse(4, 8)
   for (i = 0; i < 16; ++i)
     ; // expected-error {{expected 4 for loops after '#pragma omp simd', but found only 1}}
-// expected-error at +1 {{expression is not an integer constant expression}}
+// expected-error at +1 {{integer constant expression}}
 #pragma omp simd collapse(2.5)
   for (i = 0; i < 16; ++i)
     ;
-// expected-error at +1 {{expression is not an integer constant expression}}
+// expected-error at +1 {{integer constant expression}}
 #pragma omp simd collapse(foo())
   for (i = 0; i < 16; ++i)
     ;

diff  --git a/clang/test/OpenMP/simd_safelen_messages.cpp b/clang/test/OpenMP/simd_safelen_messages.cpp
index 7a557781a758..2cc5a8848448 100644
--- a/clang/test/OpenMP/simd_safelen_messages.cpp
+++ b/clang/test/OpenMP/simd_safelen_messages.cpp
@@ -27,7 +27,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   #pragma omp simd safelen () // expected-error {{expected expression}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
   // expected-error at +3 {{expected ')'}} expected-note at +3 {{to match this '('}}
-  // expected-error at +2 2 {{expression is not an integral constant expression}}
+  // expected-error at +2 2 {{integral constant expression}}
   // expected-note at +1 2 {{read of non-const variable 'argc' is not allowed in a constant expression}}
   #pragma omp simd safelen (argc 
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
@@ -40,7 +40,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
   // expected-error at +6 2 {{directive '#pragma omp simd' cannot contain more than one 'safelen' clause}}
   // expected-error at +5 {{argument to 'safelen' clause must be a strictly positive integer value}}
-  // expected-error at +4 2 {{expression is not an integral constant expression}}
+  // expected-error at +4 2 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +2 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
@@ -49,7 +49,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   #pragma omp simd safelen (S) // expected-error {{'S' does not refer to a value}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
 #if __cplusplus <= 199711L
-  // expected-error at +4 2 {{expression is not an integral constant expression}}
+  // expected-error at +4 2 {{integral constant expression}}
 #else
   // expected-error at +2 2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif
@@ -73,13 +73,13 @@ int main(int argc, char **argv) {
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
   #pragma omp simd safelen (2+2)) // expected-warning {{extra tokens at the end of '#pragma omp simd' are ignored}}
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
-  // expected-error at +4 {{expression is not an integral constant expression}}
+  // expected-error at +4 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +2 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
   #pragma omp simd safelen (foobool(1) > 0 ? 1 : 2)
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
-  // expected-error at +6 {{expression is not an integral constant expression}}
+  // expected-error at +6 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +4 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
@@ -90,7 +90,7 @@ int main(int argc, char **argv) {
   #pragma omp simd safelen (S1) // expected-error {{'S1' does not refer to a value}}
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
 #if __cplusplus <= 199711L
-  // expected-error at +4 {{expression is not an integral constant expression}}
+  // expected-error at +4 {{integral constant expression}}
 #else
   // expected-error at +2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif

diff  --git a/clang/test/OpenMP/simd_simdlen_messages.cpp b/clang/test/OpenMP/simd_simdlen_messages.cpp
index 0b7b800c26a7..d7f86e05f3a1 100644
--- a/clang/test/OpenMP/simd_simdlen_messages.cpp
+++ b/clang/test/OpenMP/simd_simdlen_messages.cpp
@@ -27,7 +27,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   #pragma omp simd simdlen () // expected-error {{expected expression}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
   // expected-error at +3 {{expected ')'}} expected-note at +3 {{to match this '('}}
-  // expected-error at +2 2 {{expression is not an integral constant expression}}
+  // expected-error at +2 2 {{integral constant expression}}
   // expected-note at +1 2 {{read of non-const variable 'argc' is not allowed in a constant expression}}
   #pragma omp simd simdlen (argc 
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
@@ -40,7 +40,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
   // expected-error at +6 2 {{directive '#pragma omp simd' cannot contain more than one 'simdlen' clause}}
   // expected-error at +5 {{argument to 'simdlen' clause must be a strictly positive integer value}}
-  // expected-error at +4 2 {{expression is not an integral constant expression}}
+  // expected-error at +4 2 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +2 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
@@ -49,7 +49,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   #pragma omp simd simdlen (S) // expected-error {{'S' does not refer to a value}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
 #if __cplusplus <= 199711L
-  // expected-error at +4 2 {{expression is not an integral constant expression}}
+  // expected-error at +4 2 {{integral constant expression}}
 #else
   // expected-error at +2 2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif
@@ -73,13 +73,13 @@ int main(int argc, char **argv) {
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
   #pragma omp simd simdlen (2+2)) // expected-warning {{extra tokens at the end of '#pragma omp simd' are ignored}}
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
-  // expected-error at +4 {{expression is not an integral constant expression}}
+  // expected-error at +4 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +2 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
   #pragma omp simd simdlen (foobool(1) > 0 ? 1 : 2)
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
-  // expected-error at +6 {{expression is not an integral constant expression}}
+  // expected-error at +6 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +4 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
@@ -90,7 +90,7 @@ int main(int argc, char **argv) {
   #pragma omp simd simdlen (S1) // expected-error {{'S1' does not refer to a value}}
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
 #if __cplusplus <= 199711L
-  // expected-error at +4 {{expression is not an integral constant expression}}
+  // expected-error at +4 {{integral constant expression}}
 #else
   // expected-error at +2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif

diff  --git a/clang/test/OpenMP/target_parallel_for_collapse_messages.cpp b/clang/test/OpenMP/target_parallel_for_collapse_messages.cpp
index 98700b87e5eb..0ee442cd443b 100644
--- a/clang/test/OpenMP/target_parallel_for_collapse_messages.cpp
+++ b/clang/test/OpenMP/target_parallel_for_collapse_messages.cpp
@@ -27,7 +27,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   #pragma omp target parallel for collapse () // expected-error {{expected expression}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
   // expected-error at +3 {{expected ')'}} expected-note at +3 {{to match this '('}}
-  // expected-error at +2 2 {{expression is not an integral constant expression}}
+  // expected-error at +2 2 {{integral constant expression}}
   // expected-note at +1 2 {{read of non-const variable 'argc' is not allowed in a constant expression}}
   #pragma omp target parallel for collapse (argc 
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
@@ -40,7 +40,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST]; // expected-error 2 {{expected 2 for loops after '#pragma omp target parallel for', but found only 1}}
   // expected-error at +3 2 {{directive '#pragma omp target parallel for' cannot contain more than one 'collapse' clause}}
   // expected-error at +2 {{argument to 'collapse' clause must be a strictly positive integer value}}
-  // expected-error at +1 2 {{expression is not an integral constant expression}}
+  // expected-error at +1 2 {{integral constant expression}}
   #pragma omp target parallel for collapse (foobool(argc)), collapse (true), collapse (-5)
 #if __cplusplus >= 201103L
 // expected-note at -2 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
@@ -51,7 +51,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
 #if __cplusplus >= 201103L
   // expected-error at +4 2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #else
-  // expected-error at +2 2 {{expression is not an integral constant expression}}
+  // expected-error at +2 2 {{integral constant expression}}
 #endif
   #pragma omp target parallel for collapse (argv[1]=2) // expected-error {{expected ')'}} expected-note {{to match this '('}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
@@ -75,12 +75,12 @@ int main(int argc, char **argv) {
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4]; // expected-error {{expected 4 for loops after '#pragma omp target parallel for', but found only 1}}
   #pragma omp target parallel for collapse (2+2)) // expected-warning {{extra tokens at the end of '#pragma omp target parallel for' are ignored}}  expected-note {{as specified in 'collapse' clause}}
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4]; // expected-error {{expected 4 for loops after '#pragma omp target parallel for', but found only 1}}
-  #pragma omp target parallel for collapse (foobool(1) > 0 ? 1 : 2) // expected-error {{expression is not an integral constant expression}}
+  #pragma omp target parallel for collapse (foobool(1) > 0 ? 1 : 2) // expected-error {{integral constant expression}}
 #if __cplusplus >= 201103L
 // expected-note at -2 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
-  // expected-error at +3 {{expression is not an integral constant expression}}
+  // expected-error at +3 {{integral constant expression}}
   // expected-error at +2 2 {{directive '#pragma omp target parallel for' cannot contain more than one 'collapse' clause}}
   // expected-error at +1 {{argument to 'collapse' clause must be a strictly positive integer value}}
   #pragma omp target parallel for collapse (foobool(argc)), collapse (true), collapse (-5) 
@@ -93,7 +93,7 @@ int main(int argc, char **argv) {
 #if __cplusplus >= 201103L
   // expected-error at +4 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #else
-  // expected-error at +2 {{expression is not an integral constant expression}}
+  // expected-error at +2 {{integral constant expression}}
 #endif
   #pragma omp target parallel for collapse (argv[1]=2) // expected-error {{expected ')'}} expected-note {{to match this '('}}
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];

diff  --git a/clang/test/OpenMP/target_parallel_for_misc_messages.c b/clang/test/OpenMP/target_parallel_for_misc_messages.c
index 789d7e04db26..b9d34da99c3c 100644
--- a/clang/test/OpenMP/target_parallel_for_misc_messages.c
+++ b/clang/test/OpenMP/target_parallel_for_misc_messages.c
@@ -142,11 +142,11 @@ void test_collapse() {
 #pragma omp target parallel for collapse(4, 8)
   for (i = 0; i < 16; ++i)
     ; // expected-error {{expected 4 for loops after '#pragma omp target parallel for', but found only 1}}
-// expected-error at +1 {{expression is not an integer constant expression}}
+// expected-error at +1 {{integer constant expression}}
 #pragma omp target parallel for collapse(2.5)
   for (i = 0; i < 16; ++i)
     ;
-// expected-error at +1 {{expression is not an integer constant expression}}
+// expected-error at +1 {{integer constant expression}}
 #pragma omp target parallel for collapse(foo())
   for (i = 0; i < 16; ++i)
     ;

diff  --git a/clang/test/OpenMP/target_parallel_for_ordered_messages.cpp b/clang/test/OpenMP/target_parallel_for_ordered_messages.cpp
index b703f251f4e0..8396273d65d3 100644
--- a/clang/test/OpenMP/target_parallel_for_ordered_messages.cpp
+++ b/clang/test/OpenMP/target_parallel_for_ordered_messages.cpp
@@ -30,7 +30,7 @@ T tmain(T argc, S **argv) {                   //expected-note 2 {{declared here}
   for (int i = ST; i < N; i++)
     argv[0][i] = argv[0][i] - argv[0][i - ST];
 // expected-error at +3 {{expected ')'}} expected-note at +3 {{to match this '('}}
-// expected-error at +2 2 {{expression is not an integral constant expression}}
+// expected-error at +2 2 {{integral constant expression}}
 // expected-note at +1 2 {{read of non-const variable 'argc' is not allowed in a constant expression}}
 #pragma omp target parallel for ordered(argc
   for (int i = ST; i < N; i++)
@@ -50,7 +50,7 @@ T tmain(T argc, S **argv) {                   //expected-note 2 {{declared here}
 #endif
 // expected-error at +3 2 {{directive '#pragma omp target parallel for' cannot contain more than one 'ordered' clause}}
 // expected-error at +2 {{argument to 'ordered' clause must be a strictly positive integer value}}
-// expected-error at +1 2 {{expression is not an integral constant expression}}
+// expected-error at +1 2 {{integral constant expression}}
 #pragma omp target parallel for ordered(foobool(argc)), ordered(true), ordered(-5)
   for (int i = ST; i < N; i++)
     argv[0][i] = argv[0][i] - argv[0][i - ST];
@@ -60,7 +60,7 @@ T tmain(T argc, S **argv) {                   //expected-note 2 {{declared here}
 #if __cplusplus >= 201103L
   // expected-error at +4 2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #else
-  // expected-error at +2 2 {{expression is not an integral constant expression}}
+  // expected-error at +2 2 {{integral constant expression}}
 #endif
 #pragma omp target parallel for ordered(argv[1] = 2) // expected-error {{expected ')'}} expected-note {{to match this '('}}
   for (int i = ST; i < N; i++)
@@ -95,13 +95,13 @@ int main(int argc, char **argv) {
 #if __cplusplus >= 201103L
 // expected-note at +2 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
-#pragma omp target parallel for ordered(foobool(1) > 0 ? 1 : 2) // expected-error {{expression is not an integral constant expression}}
+#pragma omp target parallel for ordered(foobool(1) > 0 ? 1 : 2) // expected-error {{integral constant expression}}
   for (int i = 4; i < 12; i++)
     argv[0][i] = argv[0][i] - argv[0][i - 4];
 #if __cplusplus >= 201103L
 // expected-note at +5 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
-// expected-error at +3 {{expression is not an integral constant expression}}
+// expected-error at +3 {{integral constant expression}}
 // expected-error at +2 2 {{directive '#pragma omp target parallel for' cannot contain more than one 'ordered' clause}}
 // expected-error at +1 {{argument to 'ordered' clause must be a strictly positive integer value}}
 #pragma omp target parallel for ordered(foobool(argc)), ordered(true), ordered(-5)
@@ -113,7 +113,7 @@ int main(int argc, char **argv) {
 #if __cplusplus >= 201103L
   // expected-error at +4 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #else
-  // expected-error at +2 {{expression is not an integral constant expression}}
+  // expected-error at +2 {{integral constant expression}}
 #endif
 #pragma omp target parallel for ordered(argv[1] = 2) // expected-error {{expected ')'}} expected-note {{to match this '('}}
   for (int i = 4; i < 12; i++)

diff  --git a/clang/test/OpenMP/target_parallel_for_simd_aligned_messages.cpp b/clang/test/OpenMP/target_parallel_for_simd_aligned_messages.cpp
index b73abba48e22..c635663431f6 100644
--- a/clang/test/OpenMP/target_parallel_for_simd_aligned_messages.cpp
+++ b/clang/test/OpenMP/target_parallel_for_simd_aligned_messages.cpp
@@ -151,7 +151,7 @@ template<class I, class C> int foomain(I argc, C **argv) {
   for (I k = 0; k < argc; ++k) ++k;
   int v = 0;
   // expected-note at +2 {{initializer of 'j' is not a constant expression}}
-  // expected-error at +1 {{expression is not an integral constant expression}}
+  // expected-error at +1 {{integral constant expression}}
   #pragma omp target parallel for simd aligned(f:j)
   for (I k = 0; k < argc; ++k) { ++k; v += j; }
   #pragma omp target parallel for simd aligned(f)

diff  --git a/clang/test/OpenMP/target_parallel_for_simd_collapse_messages.cpp b/clang/test/OpenMP/target_parallel_for_simd_collapse_messages.cpp
index df1b27d28343..309ba48e73fd 100644
--- a/clang/test/OpenMP/target_parallel_for_simd_collapse_messages.cpp
+++ b/clang/test/OpenMP/target_parallel_for_simd_collapse_messages.cpp
@@ -28,7 +28,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   #pragma omp target parallel for simd collapse () // expected-error {{expected expression}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
   // expected-error at +3 {{expected ')'}} expected-note at +3 {{to match this '('}}
-  // expected-error at +2 2 {{expression is not an integral constant expression}}
+  // expected-error at +2 2 {{integral constant expression}}
   // expected-note at +1 2 {{read of non-const variable 'argc' is not allowed in a constant expression}}
   #pragma omp target parallel for simd collapse (argc 
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
@@ -44,13 +44,13 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
 #endif
   // expected-error at +3 2 {{directive '#pragma omp target parallel for simd' cannot contain more than one 'collapse' clause}}
   // expected-error at +2 {{argument to 'collapse' clause must be a strictly positive integer value}}
-  // expected-error at +1 2 {{expression is not an integral constant expression}}
+  // expected-error at +1 2 {{integral constant expression}}
   #pragma omp target parallel for simd collapse (foobool(argc)), collapse (true), collapse (-5)
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
   #pragma omp target parallel for simd collapse (S) // expected-error {{'S' does not refer to a value}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
   // expected-note at +2 {{read of non-const variable 'j' is not allowed in a constant expression}}
-  // expected-error at +1 {{expression is not an integral constant expression}}
+  // expected-error at +1 {{integral constant expression}}
   #pragma omp target parallel for simd collapse (j=2) // expected-error {{expected ')'}} expected-note {{to match this '('}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
   #pragma omp target parallel for simd collapse (1)
@@ -77,12 +77,12 @@ int main(int argc, char **argv) {
 #if __cplusplus >= 201103L
   // expected-note at +2 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif 
-  #pragma omp target parallel for simd collapse (foobool(1) > 0 ? 1 : 2) // expected-error {{expression is not an integral constant expression}}
+  #pragma omp target parallel for simd collapse (foobool(1) > 0 ? 1 : 2) // expected-error {{integral constant expression}}
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
 #if __cplusplus >= 201103L
   // expected-note at +5 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
-  // expected-error at +3 {{expression is not an integral constant expression}}
+  // expected-error at +3 {{integral constant expression}}
   // expected-error at +2 2 {{directive '#pragma omp target parallel for simd' cannot contain more than one 'collapse' clause}}
   // expected-error at +1 {{argument to 'collapse' clause must be a strictly positive integer value}}
   #pragma omp target parallel for simd collapse (foobool(argc)), collapse (true), collapse (-5) 
@@ -90,7 +90,7 @@ int main(int argc, char **argv) {
   #pragma omp target parallel for simd collapse (S1) // expected-error {{'S1' does not refer to a value}}
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
   // expected-note at +2 {{read of non-const variable 'j' is not allowed in a constant expression}}
-  // expected-error at +1 {{expression is not an integral constant expression}}
+  // expected-error at +1 {{integral constant expression}}
   #pragma omp target parallel for simd collapse (j=2) // expected-error {{expected ')'}} expected-note {{to match this '('}}
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
   // expected-error at +3 {{statement after '#pragma omp target parallel for simd' must be a for loop}}

diff  --git a/clang/test/OpenMP/target_parallel_for_simd_misc_messages.c b/clang/test/OpenMP/target_parallel_for_simd_misc_messages.c
index 29011a2c9ba7..8084a89ad109 100644
--- a/clang/test/OpenMP/target_parallel_for_simd_misc_messages.c
+++ b/clang/test/OpenMP/target_parallel_for_simd_misc_messages.c
@@ -144,11 +144,11 @@ void test_collapse() {
 #pragma omp target parallel for simd collapse(4, 8)
   for (i = 0; i < 16; ++i)
     ; // expected-error {{expected 4 for loops after '#pragma omp target parallel for simd', but found only 1}}
-// expected-error at +1 {{expression is not an integer constant expression}}
+// expected-error at +1 {{integer constant expression}}
 #pragma omp target parallel for simd collapse(2.5)
   for (i = 0; i < 16; ++i)
     ;
-// expected-error at +1 {{expression is not an integer constant expression}}
+// expected-error at +1 {{integer constant expression}}
 #pragma omp target parallel for simd collapse(foo())
   for (i = 0; i < 16; ++i)
     ;
@@ -379,11 +379,11 @@ void test_safelen() {
 #pragma omp target parallel for simd safelen(4, 8)
   for (i = 0; i < 16; ++i)
     ;
-// expected-error at +1 {{expression is not an integer constant expression}}
+// expected-error at +1 {{integer constant expression}}
 #pragma omp target parallel for simd safelen(2.5)
   for (i = 0; i < 16; ++i)
     ;
-// expected-error at +1 {{expression is not an integer constant expression}}
+// expected-error at +1 {{integer constant expression}}
 #pragma omp target parallel for simd safelen(foo())
   for (i = 0; i < 16; ++i)
     ;
@@ -464,11 +464,11 @@ void test_simdlen() {
 #pragma omp target parallel for simd simdlen(4, 8)
   for (i = 0; i < 16; ++i)
     ;
-// expected-error at +1 {{expression is not an integer constant expression}}
+// expected-error at +1 {{integer constant expression}}
 #pragma omp target parallel for simd simdlen(2.5)
   for (i = 0; i < 16; ++i)
     ;
-// expected-error at +1 {{expression is not an integer constant expression}}
+// expected-error at +1 {{integer constant expression}}
 #pragma omp target parallel for simd simdlen(foo())
   for (i = 0; i < 16; ++i)
     ;

diff  --git a/clang/test/OpenMP/target_parallel_for_simd_ordered_messages.cpp b/clang/test/OpenMP/target_parallel_for_simd_ordered_messages.cpp
index 235cbe464f69..ed3e06541978 100644
--- a/clang/test/OpenMP/target_parallel_for_simd_ordered_messages.cpp
+++ b/clang/test/OpenMP/target_parallel_for_simd_ordered_messages.cpp
@@ -57,7 +57,7 @@ T tmain(T argc, S **argv) {
   for (int i = ST; i < N; i++)
     argv[0][i] = argv[0][i] - argv[0][i - ST];
 // expected-note at +2 {{read of non-const variable 'j' is not allowed in a constant expression}}
-// expected-error at +1 {{expression is not an integral constant expression}}
+// expected-error at +1 {{integral constant expression}}
 #pragma omp target parallel for simd ordered(j = 2) // expected-error {{expected ')'}} expected-note {{to match this '('}}
   for (int i = ST; i < N; i++)
     argv[0][i] = argv[0][i] - argv[0][i - ST];
@@ -97,13 +97,13 @@ int main(int argc, char **argv) {
 #if __cplusplus >= 201103L
   // expected-note at +2 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
-#pragma omp target parallel for simd ordered(foobool(1) > 0 ? 1 : 2) // expected-error {{expression is not an integral constant expression}}
+#pragma omp target parallel for simd ordered(foobool(1) > 0 ? 1 : 2) // expected-error {{integral constant expression}}
   for (int i = 4; i < 12; i++)
     argv[0][i] = argv[0][i] - argv[0][i - 4];
 #if __cplusplus >= 201103L
   // expected-note at +5 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
-// expected-error at +3 {{expression is not an integral constant expression}}
+// expected-error at +3 {{integral constant expression}}
 // expected-error at +2 2 {{directive '#pragma omp target parallel for simd' cannot contain more than one 'ordered' clause}}
 // expected-error at +1 {{argument to 'ordered' clause must be a strictly positive integer value}}
 #pragma omp target parallel for simd ordered(foobool(argc)), ordered(true), ordered(-5)
@@ -113,7 +113,7 @@ int main(int argc, char **argv) {
   for (int i = 4; i < 12; i++)
     argv[0][i] = argv[0][i] - argv[0][i - 4];
 // expected-note at +2 {{read of non-const variable 'j' is not allowed in a constant expression}}
-// expected-error at +1 {{expression is not an integral constant expression}}
+// expected-error at +1 {{integral constant expression}}
 #pragma omp target parallel for simd ordered(j = 2) // expected-error {{expected ')'}} expected-note {{to match this '('}}
   for (int i = 4; i < 12; i++)
     argv[0][i] = argv[0][i] - argv[0][i - 4];

diff  --git a/clang/test/OpenMP/target_parallel_for_simd_safelen_messages.cpp b/clang/test/OpenMP/target_parallel_for_simd_safelen_messages.cpp
index 87aaa83a7811..f3d4104deda4 100644
--- a/clang/test/OpenMP/target_parallel_for_simd_safelen_messages.cpp
+++ b/clang/test/OpenMP/target_parallel_for_simd_safelen_messages.cpp
@@ -27,7 +27,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   #pragma omp target parallel for simd safelen () // expected-error {{expected expression}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
   // expected-error at +3 {{expected ')'}} expected-note at +3 {{to match this '('}}
-  // expected-error at +2 2 {{expression is not an integral constant expression}}
+  // expected-error at +2 2 {{integral constant expression}}
   // expected-note at +1 2 {{read of non-const variable 'argc' is not allowed in a constant expression}}
   #pragma omp target parallel for simd safelen (argc 
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
@@ -40,7 +40,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
   // expected-error at +6 2 {{directive '#pragma omp target parallel for simd' cannot contain more than one 'safelen' clause}}
   // expected-error at +5 {{argument to 'safelen' clause must be a strictly positive integer value}}
-  // expected-error at +4 2 {{expression is not an integral constant expression}}
+  // expected-error at +4 2 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +2 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
@@ -49,7 +49,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   #pragma omp target parallel for simd safelen (S) // expected-error {{'S' does not refer to a value}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
 #if __cplusplus <= 199711L
-  // expected-error at +4 2 {{expression is not an integral constant expression}}
+  // expected-error at +4 2 {{integral constant expression}}
 #else
   // expected-error at +2 2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif
@@ -73,13 +73,13 @@ int main(int argc, char **argv) {
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
   #pragma omp target parallel for simd safelen (2+2)) // expected-warning {{extra tokens at the end of '#pragma omp target parallel for simd' are ignored}}
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
-  // expected-error at +4 {{expression is not an integral constant expression}}
+  // expected-error at +4 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +2 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
   #pragma omp target parallel for simd safelen (foobool(1) > 0 ? 1 : 2)
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
-  // expected-error at +6 {{expression is not an integral constant expression}}
+  // expected-error at +6 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +4 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
@@ -90,7 +90,7 @@ int main(int argc, char **argv) {
   #pragma omp target parallel for simd safelen (S1) // expected-error {{'S1' does not refer to a value}}
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
 #if __cplusplus <= 199711L
-  // expected-error at +4 {{expression is not an integral constant expression}}
+  // expected-error at +4 {{integral constant expression}}
 #else
   // expected-error at +2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif

diff  --git a/clang/test/OpenMP/target_parallel_for_simd_simdlen_messages.cpp b/clang/test/OpenMP/target_parallel_for_simd_simdlen_messages.cpp
index 17a931c9f120..9d17d54ded7d 100644
--- a/clang/test/OpenMP/target_parallel_for_simd_simdlen_messages.cpp
+++ b/clang/test/OpenMP/target_parallel_for_simd_simdlen_messages.cpp
@@ -30,7 +30,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
 
 // expected-error at +3 {{expected ')'}} expected-note at +3 {{to match this '('}}
-// expected-error at +2 2 {{expression is not an integral constant expression}}
+// expected-error at +2 2 {{integral constant expression}}
 // expected-note at +1 2 {{read of non-const variable 'argc' is not allowed in a constant expression}}
 #pragma omp target parallel for simd simdlen (argc
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
@@ -47,7 +47,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
 
   // expected-error at +6 2 {{directive '#pragma omp target parallel for simd' cannot contain more than one 'simdlen' clause}}
   // expected-error at +5 {{argument to 'simdlen' clause must be a strictly positive integer value}}
-  // expected-error at +4 2 {{expression is not an integral constant expression}}
+  // expected-error at +4 2 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +2 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
@@ -58,7 +58,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
 
 #if __cplusplus <= 199711L
-  // expected-error at +4 2 {{expression is not an integral constant expression}}
+  // expected-error at +4 2 {{integral constant expression}}
 #else
   // expected-error at +2 2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif
@@ -99,14 +99,14 @@ int main(int argc, char **argv) {
 #pragma omp target parallel for simd simdlen (2+2)) // expected-warning {{extra tokens at the end of '#pragma omp target parallel for simd' are ignored}}
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
 
-  // expected-error at +4 {{expression is not an integral constant expression}}
+  // expected-error at +4 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +2 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
 #pragma omp target parallel for simd simdlen (foobool(1) > 0 ? 1 : 2)
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
 
-  // expected-error at +6 {{expression is not an integral constant expression}}
+  // expected-error at +6 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +4 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
@@ -119,7 +119,7 @@ int main(int argc, char **argv) {
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
 
 #if __cplusplus <= 199711L
-  // expected-error at +4 {{expression is not an integral constant expression}}
+  // expected-error at +4 {{integral constant expression}}
 #else
   // expected-error at +2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif

diff  --git a/clang/test/OpenMP/target_simd_aligned_messages.cpp b/clang/test/OpenMP/target_simd_aligned_messages.cpp
index 3069e702733b..e3b9ec47fba0 100644
--- a/clang/test/OpenMP/target_simd_aligned_messages.cpp
+++ b/clang/test/OpenMP/target_simd_aligned_messages.cpp
@@ -151,7 +151,7 @@ template<class I, class C> int foomain(I argc, C **argv) {
   for (I k = 0; k < argc; ++k) ++k;
   int v = 0;
   // expected-note at +2 {{initializer of 'j' is not a constant expression}}
-  // expected-error at +1 {{expression is not an integral constant expression}}
+  // expected-error at +1 {{integral constant expression}}
   #pragma omp target simd aligned(f:j)
   for (I k = 0; k < argc; ++k) { ++k; v += j; }
   #pragma omp target simd aligned(f)

diff  --git a/clang/test/OpenMP/target_simd_collapse_messages.cpp b/clang/test/OpenMP/target_simd_collapse_messages.cpp
index 89b940221d95..0040816c60c1 100644
--- a/clang/test/OpenMP/target_simd_collapse_messages.cpp
+++ b/clang/test/OpenMP/target_simd_collapse_messages.cpp
@@ -26,7 +26,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   #pragma omp target simd collapse () // expected-error {{expected expression}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
   // expected-error at +3 {{expected ')'}} expected-note at +3 {{to match this '('}}
-  // expected-error at +2 2 {{expression is not an integral constant expression}}
+  // expected-error at +2 2 {{integral constant expression}}
   // expected-note at +1 2 {{read of non-const variable 'argc' is not allowed in a constant expression}}
   #pragma omp target simd collapse (argc 
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
@@ -42,13 +42,13 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
 #endif
   // expected-error at +3 2 {{directive '#pragma omp target simd' cannot contain more than one 'collapse' clause}}
   // expected-error at +2 {{argument to 'collapse' clause must be a strictly positive integer value}}
-  // expected-error at +1 2 {{expression is not an integral constant expression}}
+  // expected-error at +1 2 {{integral constant expression}}
   #pragma omp target simd collapse (foobool(argc)), collapse (true), collapse (-5)
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
   #pragma omp target simd collapse (S) // expected-error {{'S' does not refer to a value}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
   // expected-note at +2 {{read of non-const variable 'j' is not allowed in a constant expression}}
-  // expected-error at +1 {{expression is not an integral constant expression}}
+  // expected-error at +1 {{integral constant expression}}
   #pragma omp target simd collapse (j=2) // expected-error {{expected ')'}} expected-note {{to match this '('}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
   #pragma omp target simd collapse (1)
@@ -75,12 +75,12 @@ int main(int argc, char **argv) {
 #if __cplusplus >= 201103L
   // expected-note at +2 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
-  #pragma omp target simd collapse (foobool(1) > 0 ? 1 : 2) // expected-error {{expression is not an integral constant expression}}
+  #pragma omp target simd collapse (foobool(1) > 0 ? 1 : 2) // expected-error {{integral constant expression}}
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
 #if __cplusplus >= 201103L
   // expected-note at +5 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
-  // expected-error at +3 {{expression is not an integral constant expression}}
+  // expected-error at +3 {{integral constant expression}}
   // expected-error at +2 2 {{directive '#pragma omp target simd' cannot contain more than one 'collapse' clause}}
   // expected-error at +1 {{argument to 'collapse' clause must be a strictly positive integer value}}
   #pragma omp target simd collapse (foobool(argc)), collapse (true), collapse (-5) 
@@ -88,7 +88,7 @@ int main(int argc, char **argv) {
   #pragma omp target simd collapse (S1) // expected-error {{'S1' does not refer to a value}}
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
   // expected-note at +2 {{read of non-const variable 'j' is not allowed in a constant expression}}
-  // expected-error at +1 {{expression is not an integral constant expression}}
+  // expected-error at +1 {{integral constant expression}}
   #pragma omp target simd collapse (j=2) // expected-error {{expected ')'}} expected-note {{to match this '('}}
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
   // expected-error at +3 {{statement after '#pragma omp target simd' must be a for loop}}

diff  --git a/clang/test/OpenMP/target_simd_misc_messages.c b/clang/test/OpenMP/target_simd_misc_messages.c
index 36bbb226f59e..c6b149649046 100644
--- a/clang/test/OpenMP/target_simd_misc_messages.c
+++ b/clang/test/OpenMP/target_simd_misc_messages.c
@@ -144,11 +144,11 @@ void test_collapse() {
 #pragma omp target simd collapse(4, 8)
   for (i = 0; i < 16; ++i)
     ; // expected-error {{expected 4 for loops after '#pragma omp target simd', but found only 1}}
-// expected-error at +1 {{expression is not an integer constant expression}}
+// expected-error at +1 {{integer constant expression}}
 #pragma omp target simd collapse(2.5)
   for (i = 0; i < 16; ++i)
     ;
-// expected-error at +1 {{expression is not an integer constant expression}}
+// expected-error at +1 {{integer constant expression}}
 #pragma omp target simd collapse(foo())
   for (i = 0; i < 16; ++i)
     ;
@@ -369,11 +369,11 @@ void test_safelen() {
 #pragma omp target simd safelen(4, 8)
   for (i = 0; i < 16; ++i)
     ;
-// expected-error at +1 {{expression is not an integer constant expression}}
+// expected-error at +1 {{integer constant expression}}
 #pragma omp target simd safelen(2.5)
   for (i = 0; i < 16; ++i)
     ;
-// expected-error at +1 {{expression is not an integer constant expression}}
+// expected-error at +1 {{integer constant expression}}
 #pragma omp target simd safelen(foo())
   for (i = 0; i < 16; ++i)
     ;
@@ -454,11 +454,11 @@ void test_simdlen() {
 #pragma omp target simd simdlen(4, 8)
   for (i = 0; i < 16; ++i)
     ;
-// expected-error at +1 {{expression is not an integer constant expression}}
+// expected-error at +1 {{integer constant expression}}
 #pragma omp target simd simdlen(2.5)
   for (i = 0; i < 16; ++i)
     ;
-// expected-error at +1 {{expression is not an integer constant expression}}
+// expected-error at +1 {{integer constant expression}}
 #pragma omp target simd simdlen(foo())
   for (i = 0; i < 16; ++i)
     ;

diff  --git a/clang/test/OpenMP/target_simd_safelen_messages.cpp b/clang/test/OpenMP/target_simd_safelen_messages.cpp
index 5e23ba1a74c1..b64af78f72a2 100644
--- a/clang/test/OpenMP/target_simd_safelen_messages.cpp
+++ b/clang/test/OpenMP/target_simd_safelen_messages.cpp
@@ -27,7 +27,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   #pragma omp target simd safelen () // expected-error {{expected expression}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
   // expected-error at +3 {{expected ')'}} expected-note at +3 {{to match this '('}}
-  // expected-error at +2 2 {{expression is not an integral constant expression}}
+  // expected-error at +2 2 {{integral constant expression}}
   // expected-note at +1 2 {{read of non-const variable 'argc' is not allowed in a constant expression}}
   #pragma omp target simd safelen (argc 
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
@@ -40,7 +40,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
   // expected-error at +6 2 {{directive '#pragma omp target simd' cannot contain more than one 'safelen' clause}}
   // expected-error at +5 {{argument to 'safelen' clause must be a strictly positive integer value}}
-  // expected-error at +4 2 {{expression is not an integral constant expression}}
+  // expected-error at +4 2 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +2 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
@@ -49,7 +49,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   #pragma omp target simd safelen (S) // expected-error {{'S' does not refer to a value}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
 #if __cplusplus <= 199711L
-  // expected-error at +4 2 {{expression is not an integral constant expression}}
+  // expected-error at +4 2 {{integral constant expression}}
 #else
   // expected-error at +2 2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif
@@ -73,13 +73,13 @@ int main(int argc, char **argv) {
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
   #pragma omp target simd safelen (2+2)) // expected-warning {{extra tokens at the end of '#pragma omp target simd' are ignored}}
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
-  // expected-error at +4 {{expression is not an integral constant expression}}
+  // expected-error at +4 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +2 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
   #pragma omp target simd safelen (foobool(1) > 0 ? 1 : 2)
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
-  // expected-error at +6 {{expression is not an integral constant expression}}
+  // expected-error at +6 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +4 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
@@ -90,7 +90,7 @@ int main(int argc, char **argv) {
   #pragma omp target simd safelen (S1) // expected-error {{'S1' does not refer to a value}}
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
 #if __cplusplus <= 199711L
-  // expected-error at +4 {{expression is not an integral constant expression}}
+  // expected-error at +4 {{integral constant expression}}
 #else
   // expected-error at +2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif

diff  --git a/clang/test/OpenMP/target_simd_simdlen_messages.cpp b/clang/test/OpenMP/target_simd_simdlen_messages.cpp
index 848770e86a1e..30e8a31069e6 100644
--- a/clang/test/OpenMP/target_simd_simdlen_messages.cpp
+++ b/clang/test/OpenMP/target_simd_simdlen_messages.cpp
@@ -30,7 +30,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
 
 // expected-error at +3 {{expected ')'}} expected-note at +3 {{to match this '('}}
-// expected-error at +2 2 {{expression is not an integral constant expression}}
+// expected-error at +2 2 {{integral constant expression}}
 // expected-note at +1 2 {{read of non-const variable 'argc' is not allowed in a constant expression}}
 #pragma omp target simd simdlen (argc
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
@@ -47,7 +47,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
 
   // expected-error at +6 2 {{directive '#pragma omp target simd' cannot contain more than one 'simdlen' clause}}
   // expected-error at +5 {{argument to 'simdlen' clause must be a strictly positive integer value}}
-  // expected-error at +4 2 {{expression is not an integral constant expression}}
+  // expected-error at +4 2 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +2 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
@@ -58,7 +58,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
 
 #if __cplusplus <= 199711L
-  // expected-error at +4 2 {{expression is not an integral constant expression}}
+  // expected-error at +4 2 {{integral constant expression}}
 #else
   // expected-error at +2 2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif
@@ -99,14 +99,14 @@ int main(int argc, char **argv) {
 #pragma omp target simd simdlen (2+2)) // expected-warning {{extra tokens at the end of '#pragma omp target simd' are ignored}}
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
 
-  // expected-error at +4 {{expression is not an integral constant expression}}
+  // expected-error at +4 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +2 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
 #pragma omp target simd simdlen (foobool(1) > 0 ? 1 : 2)
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
 
-  // expected-error at +6 {{expression is not an integral constant expression}}
+  // expected-error at +6 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +4 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
@@ -119,7 +119,7 @@ int main(int argc, char **argv) {
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
 
 #if __cplusplus <= 199711L
-  // expected-error at +4 {{expression is not an integral constant expression}}
+  // expected-error at +4 {{integral constant expression}}
 #else
   // expected-error at +2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif

diff  --git a/clang/test/OpenMP/target_teams_distribute_collapse_messages.cpp b/clang/test/OpenMP/target_teams_distribute_collapse_messages.cpp
index 43528dad0ebd..550f644b3f2f 100644
--- a/clang/test/OpenMP/target_teams_distribute_collapse_messages.cpp
+++ b/clang/test/OpenMP/target_teams_distribute_collapse_messages.cpp
@@ -33,7 +33,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
     argv[0][i] = argv[0][i] - argv[0][i-ST];
 
 // expected-error at +3 {{expected ')'}} expected-note at +3 {{to match this '('}}
-// expected-error at +2 2 {{expression is not an integral constant expression}}
+// expected-error at +2 2 {{integral constant expression}}
 // expected-note at +1 2 {{read of non-const variable 'argc' is not allowed in a constant expression}}
 #pragma omp target teams distribute collapse (argc 
   for (int i = ST; i < N; i++)
@@ -57,7 +57,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
 #endif
 // expected-error at +3 2 {{directive '#pragma omp target teams distribute' cannot contain more than one 'collapse' clause}}
 // expected-error at +2 {{argument to 'collapse' clause must be a strictly positive integer value}}
-// expected-error at +1 2 {{expression is not an integral constant expression}}
+// expected-error at +1 2 {{integral constant expression}}
 #pragma omp target teams distribute collapse (foobool(argc)), collapse (true), collapse (-5)
   for (int i = ST; i < N; i++)
     argv[0][i] = argv[0][i] - argv[0][i-ST];
@@ -67,7 +67,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
     argv[0][i] = argv[0][i] - argv[0][i-ST];
 
 #if __cplusplus <= 199711L
-  // expected-error at +4 2 {{expression is not an integral constant expression}}
+  // expected-error at +4 2 {{integral constant expression}}
 #else
   // expected-error at +2 2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif
@@ -109,7 +109,7 @@ int main(int argc, char **argv) {
   for (int i = 4; i < 12; i++)
     argv[0][i] = argv[0][i] - argv[0][i-4]; // expected-error {{expected 4 for loops after '#pragma omp target teams distribute', but found only 1}}
 
-// expected-error at +4 {{expression is not an integral constant expression}}
+// expected-error at +4 {{integral constant expression}}
 #if __cplusplus >= 201103L
 // expected-note at +2 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
@@ -120,7 +120,7 @@ int main(int argc, char **argv) {
 #if __cplusplus >= 201103L
   // expected-note at +5{{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
-// expected-error at +3 {{expression is not an integral constant expression}}
+// expected-error at +3 {{integral constant expression}}
 // expected-error at +2 2 {{directive '#pragma omp target teams distribute' cannot contain more than one 'collapse' clause}}
 // expected-error at +1 {{argument to 'collapse' clause must be a strictly positive integer value}}
 #pragma omp target teams distribute collapse (foobool(argc)), collapse (true), collapse (-5) 
@@ -132,7 +132,7 @@ int main(int argc, char **argv) {
     argv[0][i] = argv[0][i] - argv[0][i-4];
 
 #if __cplusplus <= 199711L
-  // expected-error at +4 {{expression is not an integral constant expression}}
+  // expected-error at +4 {{integral constant expression}}
 #else
   // expected-error at +2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif

diff  --git a/clang/test/OpenMP/target_teams_distribute_misc_messages.c b/clang/test/OpenMP/target_teams_distribute_misc_messages.c
index 8fbe7c055b33..42d6605d1525 100644
--- a/clang/test/OpenMP/target_teams_distribute_misc_messages.c
+++ b/clang/test/OpenMP/target_teams_distribute_misc_messages.c
@@ -142,11 +142,11 @@ void test_collapse() {
 #pragma omp target teams distribute collapse(4, 8)
   for (i = 0; i < 16; ++i)
     ; // expected-error {{expected 4 for loops after '#pragma omp target teams distribute', but found only 1}}
-// expected-error at +1 {{expression is not an integer constant expression}}
+// expected-error at +1 {{integer constant expression}}
 #pragma omp target teams distribute collapse(2.5)
   for (i = 0; i < 16; ++i)
     ;
-// expected-error at +1 {{expression is not an integer constant expression}}
+// expected-error at +1 {{integer constant expression}}
 #pragma omp target teams distribute collapse(foo())
   for (i = 0; i < 16; ++i)
     ;

diff  --git a/clang/test/OpenMP/target_teams_distribute_parallel_for_collapse_messages.cpp b/clang/test/OpenMP/target_teams_distribute_parallel_for_collapse_messages.cpp
index 502e4047ea15..4af605c20b79 100644
--- a/clang/test/OpenMP/target_teams_distribute_parallel_for_collapse_messages.cpp
+++ b/clang/test/OpenMP/target_teams_distribute_parallel_for_collapse_messages.cpp
@@ -33,7 +33,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
     argv[0][i] = argv[0][i] - argv[0][i-ST];
 
 // expected-error at +3 {{expected ')'}} expected-note at +3 {{to match this '('}}
-// expected-error at +2 2 {{expression is not an integral constant expression}}
+// expected-error at +2 2 {{integral constant expression}}
 // expected-note at +1 2 {{read of non-const variable 'argc' is not allowed in a constant expression}}
 #pragma omp target teams distribute parallel for collapse (argc 
   for (int i = ST; i < N; i++)
@@ -57,7 +57,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
 #endif
 // expected-error at +3 2 {{directive '#pragma omp target teams distribute parallel for' cannot contain more than one 'collapse' clause}}
 // expected-error at +2 {{argument to 'collapse' clause must be a strictly positive integer value}}
-// expected-error at +1 2 {{expression is not an integral constant expression}}
+// expected-error at +1 2 {{integral constant expression}}
 #pragma omp target teams distribute parallel for collapse (foobool(argc)), collapse (true), collapse (-5)
   for (int i = ST; i < N; i++)
     argv[0][i] = argv[0][i] - argv[0][i-ST];
@@ -69,7 +69,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
 #if __cplusplus >= 201103L
 // expected-error at +4 2 {{integral constant expression must have integral or unscoped enumeration type}}
 #else
-// expected-error at +2 2 {{expression is not an integral constant expression}}
+// expected-error at +2 2 {{integral constant expression}}
 #endif
 #pragma omp target teams distribute parallel for collapse (argv[1]=2) // expected-error {{expected ')'}} expected-note {{to match this '('}}
   for (int i = ST; i < N; i++)
@@ -112,14 +112,14 @@ int main(int argc, char **argv) {
 #if __cplusplus >= 201103L
 // expected-note at +2 {{non-constexpr function 'foobool' cannot be used}}
 #endif
-#pragma omp target teams distribute parallel for collapse (foobool(1) > 0 ? 1 : 2) // expected-error {{expression is not an integral constant expression}}
+#pragma omp target teams distribute parallel for collapse (foobool(1) > 0 ? 1 : 2) // expected-error {{integral constant expression}}
   for (int i = 4; i < 12; i++)
     argv[0][i] = argv[0][i] - argv[0][i-4];
 
 #if __cplusplus >= 201103L
 // expected-note at +5 {{non-constexpr function 'foobool' cannot be used}}
 #endif
-// expected-error at +3 {{expression is not an integral constant expression}}
+// expected-error at +3 {{integral constant expression}}
 // expected-error at +2 2 {{directive '#pragma omp target teams distribute parallel for' cannot contain more than one 'collapse' clause}}
 // expected-error at +1 {{argument to 'collapse' clause must be a strictly positive integer value}}
 #pragma omp target teams distribute parallel for collapse (foobool(argc)), collapse (true), collapse (-5) 
@@ -133,7 +133,7 @@ int main(int argc, char **argv) {
 #if __cplusplus >= 201103L
 // expected-error at +4 {{integral constant expression must have integral or unscoped enumeration type}}
 #else
-// expected-error at +2 {{expression is not an integral constant expression}}
+// expected-error at +2 {{integral constant expression}}
 #endif
 #pragma omp target teams distribute parallel for collapse (argv[1]=2) // expected-error {{expected ')'}} expected-note {{to match this '('}}
   for (int i = 4; i < 12; i++)

diff  --git a/clang/test/OpenMP/target_teams_distribute_parallel_for_misc_messages.c b/clang/test/OpenMP/target_teams_distribute_parallel_for_misc_messages.c
index 0e59e0d18f59..64654f3d293d 100644
--- a/clang/test/OpenMP/target_teams_distribute_parallel_for_misc_messages.c
+++ b/clang/test/OpenMP/target_teams_distribute_parallel_for_misc_messages.c
@@ -142,11 +142,11 @@ void test_collapse() {
 #pragma omp target teams distribute parallel for collapse(4, 8)
   for (i = 0; i < 16; ++i)
     ; // expected-error {{expected 4 for loops after '#pragma omp target teams distribute parallel for', but found only 1}}
-// expected-error at +1 {{expression is not an integer constant expression}}
+// expected-error at +1 {{integer constant expression}}
 #pragma omp target teams distribute parallel for collapse(2.5)
   for (i = 0; i < 16; ++i)
     ;
-// expected-error at +1 {{expression is not an integer constant expression}}
+// expected-error at +1 {{integer constant expression}}
 #pragma omp target teams distribute parallel for collapse(foo())
   for (i = 0; i < 16; ++i)
     ;

diff  --git a/clang/test/OpenMP/target_teams_distribute_parallel_for_simd_aligned_messages.cpp b/clang/test/OpenMP/target_teams_distribute_parallel_for_simd_aligned_messages.cpp
index 4be19a4c76b8..40041bebced9 100644
--- a/clang/test/OpenMP/target_teams_distribute_parallel_for_simd_aligned_messages.cpp
+++ b/clang/test/OpenMP/target_teams_distribute_parallel_for_simd_aligned_messages.cpp
@@ -167,7 +167,7 @@ template<class I, class C> int foomain(I argc, C **argv) {
 
   int v = 0;
 
-#pragma omp target teams distribute parallel for simd aligned(f:j) // expected-note {{initializer of 'j' is not a constant expression}} expected-error {{expression is not an integral constant expression}}
+#pragma omp target teams distribute parallel for simd aligned(f:j) // expected-note {{initializer of 'j' is not a constant expression}} expected-error {{integral constant expression}}
 
   for (I k = 0; k < argc; ++k) { ++k; v += j; }
 

diff  --git a/clang/test/OpenMP/target_teams_distribute_parallel_for_simd_collapse_messages.cpp b/clang/test/OpenMP/target_teams_distribute_parallel_for_simd_collapse_messages.cpp
index 81adc34c4dd4..65be6e150736 100644
--- a/clang/test/OpenMP/target_teams_distribute_parallel_for_simd_collapse_messages.cpp
+++ b/clang/test/OpenMP/target_teams_distribute_parallel_for_simd_collapse_messages.cpp
@@ -33,7 +33,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
     argv[0][i] = argv[0][i] - argv[0][i-ST];
 
 // expected-error at +3 {{expected ')'}} expected-note at +3 {{to match this '('}}
-// expected-error at +2 2 {{expression is not an integral constant expression}}
+// expected-error at +2 2 {{integral constant expression}}
 // expected-note at +1 2 {{read of non-const variable 'argc' is not allowed in a constant expression}}
 #pragma omp target teams distribute parallel for simd collapse (argc 
   for (int i = ST; i < N; i++)
@@ -57,7 +57,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
 #endif
 // expected-error at +3 2 {{directive '#pragma omp target teams distribute parallel for simd' cannot contain more than one 'collapse' clause}}
 // expected-error at +2 {{argument to 'collapse' clause must be a strictly positive integer value}}
-// expected-error at +1 2 {{expression is not an integral constant expression}}
+// expected-error at +1 2 {{integral constant expression}}
 #pragma omp target teams distribute parallel for simd collapse (foobool(argc)), collapse (true), collapse (-5)
   for (int i = ST; i < N; i++)
     argv[0][i] = argv[0][i] - argv[0][i-ST];
@@ -69,7 +69,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
 #if __cplusplus >= 201103L
 // expected-error at +4 2 {{integral constant expression must have integral or unscoped enumeration type}}
 #else
-// expected-error at +2 2 {{expression is not an integral constant expression}}
+// expected-error at +2 2 {{integral constant expression}}
 #endif
 #pragma omp target teams distribute parallel for simd collapse (argv[1]=2) // expected-error {{expected ')'}} expected-note {{to match this '('}}
   for (int i = ST; i < N; i++)
@@ -112,14 +112,14 @@ int main(int argc, char **argv) {
 #if __cplusplus >= 201103L
 // expected-note at +2 {{non-constexpr function 'foobool' cannot be used}}
 #endif
-#pragma omp target teams distribute parallel for simd collapse (foobool(1) > 0 ? 1 : 2) // expected-error {{expression is not an integral constant expression}}
+#pragma omp target teams distribute parallel for simd collapse (foobool(1) > 0 ? 1 : 2) // expected-error {{integral constant expression}}
   for (int i = 4; i < 12; i++)
     argv[0][i] = argv[0][i] - argv[0][i-4];
 
 #if __cplusplus >= 201103L
 // expected-note at +5 {{non-constexpr function 'foobool' cannot be used}}
 #endif
-// expected-error at +3 {{expression is not an integral constant expression}}
+// expected-error at +3 {{integral constant expression}}
 // expected-error at +2 2 {{directive '#pragma omp target teams distribute parallel for simd' cannot contain more than one 'collapse' clause}}
 // expected-error at +1 {{argument to 'collapse' clause must be a strictly positive integer value}}
 #pragma omp target teams distribute parallel for simd collapse (foobool(argc)), collapse (true), collapse (-5) 
@@ -133,7 +133,7 @@ int main(int argc, char **argv) {
 #if __cplusplus >= 201103L
 // expected-error at +4 {{integral constant expression must have integral or unscoped enumeration type}}
 #else
-// expected-error at +2 {{expression is not an integral constant expression}}
+// expected-error at +2 {{integral constant expression}}
 #endif
 #pragma omp target teams distribute parallel for simd collapse (argv[1]=2) // expected-error {{expected ')'}} expected-note {{to match this '('}}
   for (int i = 4; i < 12; i++)

diff  --git a/clang/test/OpenMP/target_teams_distribute_parallel_for_simd_misc_messages.c b/clang/test/OpenMP/target_teams_distribute_parallel_for_simd_misc_messages.c
index 97a7607cdaa3..89a71a964635 100644
--- a/clang/test/OpenMP/target_teams_distribute_parallel_for_simd_misc_messages.c
+++ b/clang/test/OpenMP/target_teams_distribute_parallel_for_simd_misc_messages.c
@@ -144,11 +144,11 @@ void test_collapse() {
 #pragma omp target teams distribute parallel for simd collapse(4, 8)
   for (i = 0; i < 16; ++i)
     ; // expected-error {{expected 4 for loops after '#pragma omp target teams distribute parallel for simd', but found only 1}}
-// expected-error at +1 {{expression is not an integer constant expression}}
+// expected-error at +1 {{integer constant expression}}
 #pragma omp target teams distribute parallel for simd collapse(2.5)
   for (i = 0; i < 16; ++i)
     ;
-// expected-error at +1 {{expression is not an integer constant expression}}
+// expected-error at +1 {{integer constant expression}}
 #pragma omp target teams distribute parallel for simd collapse(foo())
   for (i = 0; i < 16; ++i)
     ;

diff  --git a/clang/test/OpenMP/target_teams_distribute_parallel_for_simd_safelen_messages.cpp b/clang/test/OpenMP/target_teams_distribute_parallel_for_simd_safelen_messages.cpp
index 14ac5da1b58e..5d0eaafb531b 100644
--- a/clang/test/OpenMP/target_teams_distribute_parallel_for_simd_safelen_messages.cpp
+++ b/clang/test/OpenMP/target_teams_distribute_parallel_for_simd_safelen_messages.cpp
@@ -32,7 +32,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
 #pragma omp target teams distribute parallel for simd safelen () // expected-error {{expected expression}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
 
-#pragma omp target teams distribute parallel for simd safelen (argc // expected-note {{to match this '('}} expected-error 2 {{expression is not an integral constant expression}} expected-note 2 {{read of non-const variable 'argc' is not allowed in a constant expression}} expected-error {{expected ')'}}
+#pragma omp target teams distribute parallel for simd safelen (argc // expected-note {{to match this '('}} expected-error 2 {{integral constant expression}} expected-note 2 {{read of non-const variable 'argc' is not allowed in a constant expression}} expected-error {{expected ')'}}
   for (int i = ST; i < N; i++) 
     argv[0][i] = argv[0][i] - argv[0][i-ST];
   
@@ -53,7 +53,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
 #endif
 // expected-error at +3 2 {{directive '#pragma omp target teams distribute parallel for simd' cannot contain more than one 'safelen' clause}}
 // expected-error at +2 {{argument to 'safelen' clause must be a strictly positive integer value}}
-// expected-error at +1 2 {{expression is not an integral constant expression}}
+// expected-error at +1 2 {{integral constant expression}}
 #pragma omp target teams distribute parallel for simd safelen (foobool(argc)), safelen (true), safelen (-5)
   for (int i = ST; i < N; i++)
     argv[0][i] = argv[0][i] - argv[0][i-ST];
@@ -63,7 +63,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
     argv[0][i] = argv[0][i] - argv[0][i-ST];
 
 #if __cplusplus <= 199711L
-  // expected-error at +4 2 {{expression is not an integral constant expression}}
+  // expected-error at +4 2 {{integral constant expression}}
 #else
   // expected-error at +2 2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif
@@ -106,7 +106,7 @@ int main(int argc, char **argv) {
 #if __cplusplus >= 201103L
   // expected-note at +2 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
-#pragma omp target teams distribute parallel for simd safelen (foobool(1) > 0 ? 1 : 2) // expected-error {{expression is not an integral constant expression}}
+#pragma omp target teams distribute parallel for simd safelen (foobool(1) > 0 ? 1 : 2) // expected-error {{integral constant expression}}
   for (int i = 4; i < 12; i++)
     argv[0][i] = argv[0][i] - argv[0][i-4];
 
@@ -115,7 +115,7 @@ int main(int argc, char **argv) {
 #endif
 // expected-error at +3 {{argument to 'safelen' clause must be a strictly positive integer value}}
 // expected-error at +2 2 {{directive '#pragma omp target teams distribute parallel for simd' cannot contain more than one 'safelen' clause}}
-// expected-error at +1 {{expression is not an integral constant expression}}
+// expected-error at +1 {{integral constant expression}}
 #pragma omp target teams distribute parallel for simd safelen (foobool(argc)), safelen (true), safelen (-5)
   for (int i = 4; i < 12; i++)
     argv[0][i] = argv[0][i] - argv[0][i-4];
@@ -125,7 +125,7 @@ int main(int argc, char **argv) {
     argv[0][i] = argv[0][i] - argv[0][i-4];
 
 #if __cplusplus <= 199711L
-  // expected-error at +4 {{expression is not an integral constant expression}}
+  // expected-error at +4 {{integral constant expression}}
 #else
   // expected-error at +2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif

diff  --git a/clang/test/OpenMP/target_teams_distribute_parallel_for_simd_simdlen_messages.cpp b/clang/test/OpenMP/target_teams_distribute_parallel_for_simd_simdlen_messages.cpp
index e0c89d4c9907..2e0f86cfa9bf 100644
--- a/clang/test/OpenMP/target_teams_distribute_parallel_for_simd_simdlen_messages.cpp
+++ b/clang/test/OpenMP/target_teams_distribute_parallel_for_simd_simdlen_messages.cpp
@@ -32,7 +32,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
 #pragma omp target teams distribute parallel for simd safelen () // expected-error {{expected expression}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
 
-#pragma omp target teams distribute parallel for simd safelen (argc // expected-note {{to match this '('}} expected-error 2 {{expression is not an integral constant expression}} expected-note 2 {{read of non-const variable 'argc' is not allowed in a constant expression}} expected-error {{expected ')'}}
+#pragma omp target teams distribute parallel for simd safelen (argc // expected-note {{to match this '('}} expected-error 2 {{integral constant expression}} expected-note 2 {{read of non-const variable 'argc' is not allowed in a constant expression}} expected-error {{expected ')'}}
   for (int i = ST; i < N; i++)
     argv[0][i] = argv[0][i] - argv[0][i-ST];
 
@@ -53,7 +53,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
 #endif
 // expected-error at +3 2 {{directive '#pragma omp target teams distribute parallel for simd' cannot contain more than one 'safelen' clause}}
 // expected-error at +2 {{argument to 'safelen' clause must be a strictly positive integer value}}
-// expected-error at +1 2 {{expression is not an integral constant expression}}
+// expected-error at +1 2 {{integral constant expression}}
 #pragma omp target teams distribute parallel for simd safelen (foobool(argc)), safelen (true), safelen (-5)
   for (int i = ST; i < N; i++)
     argv[0][i] = argv[0][i] - argv[0][i-ST];
@@ -63,7 +63,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
     argv[0][i] = argv[0][i] - argv[0][i-ST];
 
 #if __cplusplus <= 199711L
-  // expected-error at +4 2 {{expression is not an integral constant expression}}
+  // expected-error at +4 2 {{integral constant expression}}
 #else
   // expected-error at +2 2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif
@@ -106,7 +106,7 @@ int main(int argc, char **argv) {
 #if __cplusplus >= 201103L
   // expected-note at +2 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
-#pragma omp target teams distribute parallel for simd safelen (foobool(1) > 0 ? 1 : 2) // expected-error {{expression is not an integral constant expression}}
+#pragma omp target teams distribute parallel for simd safelen (foobool(1) > 0 ? 1 : 2) // expected-error {{integral constant expression}}
   for (int i = 4; i < 12; i++)
     argv[0][i] = argv[0][i] - argv[0][i-4];
 
@@ -115,7 +115,7 @@ int main(int argc, char **argv) {
 #endif
 // expected-error at +3 {{argument to 'safelen' clause must be a strictly positive integer value}}
 // expected-error at +2 2 {{directive '#pragma omp target teams distribute parallel for simd' cannot contain more than one 'safelen' clause}}
-// expected-error at +1 {{expression is not an integral constant expression}}
+// expected-error at +1 {{integral constant expression}}
 #pragma omp target teams distribute parallel for simd safelen (foobool(argc)), safelen (true), safelen (-5)
   for (int i = 4; i < 12; i++)
     argv[0][i] = argv[0][i] - argv[0][i-4];
@@ -125,7 +125,7 @@ int main(int argc, char **argv) {
     argv[0][i] = argv[0][i] - argv[0][i-4];
 
 #if __cplusplus <= 199711L
-  // expected-error at +4 {{expression is not an integral constant expression}}
+  // expected-error at +4 {{integral constant expression}}
 #else
   // expected-error at +2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif

diff  --git a/clang/test/OpenMP/target_teams_distribute_simd_aligned_messages.cpp b/clang/test/OpenMP/target_teams_distribute_simd_aligned_messages.cpp
index 2e70bb3ac43d..8f634db9aff0 100644
--- a/clang/test/OpenMP/target_teams_distribute_simd_aligned_messages.cpp
+++ b/clang/test/OpenMP/target_teams_distribute_simd_aligned_messages.cpp
@@ -167,7 +167,7 @@ template<class I, class C> int foomain(I argc, C **argv) {
 
   int v = 0;
 
-#pragma omp target teams distribute simd aligned(f:j) // expected-note {{initializer of 'j' is not a constant expression}} expected-error {{expression is not an integral constant expression}}
+#pragma omp target teams distribute simd aligned(f:j) // expected-note {{initializer of 'j' is not a constant expression}} expected-error {{integral constant expression}}
 
   for (I k = 0; k < argc; ++k) { ++k; v += j; }
 

diff  --git a/clang/test/OpenMP/target_teams_distribute_simd_collapse_messages.cpp b/clang/test/OpenMP/target_teams_distribute_simd_collapse_messages.cpp
index 612fc728a857..25e99614eb1f 100644
--- a/clang/test/OpenMP/target_teams_distribute_simd_collapse_messages.cpp
+++ b/clang/test/OpenMP/target_teams_distribute_simd_collapse_messages.cpp
@@ -33,7 +33,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
     argv[0][i] = argv[0][i] - argv[0][i-ST];
 
 // expected-error at +3 {{expected ')'}} expected-note at +3 {{to match this '('}}
-// expected-error at +2 2 {{expression is not an integral constant expression}}
+// expected-error at +2 2 {{integral constant expression}}
 // expected-note at +1 2 {{read of non-const variable 'argc' is not allowed in a constant expression}}
 #pragma omp target teams distribute simd collapse (argc
   for (int i = ST; i < N; i++)
@@ -54,7 +54,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
 
 // expected-error at +6 2 {{directive '#pragma omp target teams distribute simd' cannot contain more than one 'collapse' clause}}
 // expected-error at +5 {{argument to 'collapse' clause must be a strictly positive integer value}}
-// expected-error at +4 2 {{expression is not an integral constant expression}}
+// expected-error at +4 2 {{integral constant expression}}
 #if __cplusplus >= 201103L
 // expected-note at +2 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
@@ -67,7 +67,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
     argv[0][i] = argv[0][i] - argv[0][i-ST];
 
 #if __cplusplus <= 199711L
-  // expected-error at +4 2 {{expression is not an integral constant expression}}
+  // expected-error at +4 2 {{integral constant expression}}
 #else
   // expected-error at +2 2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif
@@ -112,11 +112,11 @@ int main(int argc, char **argv) {
 #if __cplusplus >= 201103L
   // expected-note at +2 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
-#pragma omp target teams distribute simd collapse (foobool(1) > 0 ? 1 : 2) // expected-error {{expression is not an integral constant expression}}
+#pragma omp target teams distribute simd collapse (foobool(1) > 0 ? 1 : 2) // expected-error {{integral constant expression}}
   for (int i = 4; i < 12; i++)
     argv[0][i] = argv[0][i] - argv[0][i-4];
 
-// expected-error at +6 {{expression is not an integral constant expression}}
+// expected-error at +6 {{integral constant expression}}
 // expected-error at +5 2 {{directive '#pragma omp target teams distribute simd' cannot contain more than one 'collapse' clause}}
 // expected-error at +4 {{argument to 'collapse' clause must be a strictly positive integer value}}
 #if __cplusplus >= 201103L
@@ -133,7 +133,7 @@ int main(int argc, char **argv) {
 #if __cplusplus >= 201103L
   // expected-error at +4 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #else
-  // expected-error at +2 {{expression is not an integral constant expression}}
+  // expected-error at +2 {{integral constant expression}}
 #endif
 #pragma omp target teams distribute simd collapse (argv[1]=2) // expected-error {{expected ')'}} expected-note {{to match this '('}}
   for (int i = 4; i < 12; i++)

diff  --git a/clang/test/OpenMP/target_teams_distribute_simd_misc_messages.c b/clang/test/OpenMP/target_teams_distribute_simd_misc_messages.c
index 414db21bc253..f577866534c9 100644
--- a/clang/test/OpenMP/target_teams_distribute_simd_misc_messages.c
+++ b/clang/test/OpenMP/target_teams_distribute_simd_misc_messages.c
@@ -144,11 +144,11 @@ void test_collapse() {
 #pragma omp target teams distribute simd collapse(4, 8)
   for (i = 0; i < 16; ++i)
     ; // expected-error {{expected 4 for loops after '#pragma omp target teams distribute simd', but found only 1}}
-// expected-error at +1 {{expression is not an integer constant expression}}
+// expected-error at +1 {{integer constant expression}}
 #pragma omp target teams distribute simd collapse(2.5)
   for (i = 0; i < 16; ++i)
     ;
-// expected-error at +1 {{expression is not an integer constant expression}}
+// expected-error at +1 {{integer constant expression}}
 #pragma omp target teams distribute simd collapse(foo())
   for (i = 0; i < 16; ++i)
     ;

diff  --git a/clang/test/OpenMP/target_teams_distribute_simd_safelen_messages.cpp b/clang/test/OpenMP/target_teams_distribute_simd_safelen_messages.cpp
index 36af17e93547..af055250d171 100644
--- a/clang/test/OpenMP/target_teams_distribute_simd_safelen_messages.cpp
+++ b/clang/test/OpenMP/target_teams_distribute_simd_safelen_messages.cpp
@@ -32,7 +32,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
 #pragma omp target teams distribute simd safelen () // expected-error {{expected expression}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
 
-#pragma omp target teams distribute simd safelen (argc // expected-note {{to match this '('}} expected-error 2 {{expression is not an integral constant expression}} expected-note 2 {{read of non-const variable 'argc' is not allowed in a constant expression}} expected-error {{expected ')'}}
+#pragma omp target teams distribute simd safelen (argc // expected-note {{to match this '('}} expected-error 2 {{integral constant expression}} expected-note 2 {{read of non-const variable 'argc' is not allowed in a constant expression}} expected-error {{expected ')'}}
   for (int i = ST; i < N; i++) 
     argv[0][i] = argv[0][i] - argv[0][i-ST];
   
@@ -53,7 +53,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
 #endif
 // expected-error at +3 2 {{directive '#pragma omp target teams distribute simd' cannot contain more than one 'safelen' clause}}
 // expected-error at +2 {{argument to 'safelen' clause must be a strictly positive integer value}}
-// expected-error at +1 2 {{expression is not an integral constant expression}}
+// expected-error at +1 2 {{integral constant expression}}
 #pragma omp target teams distribute simd safelen (foobool(argc)), safelen (true), safelen (-5)
   for (int i = ST; i < N; i++)
     argv[0][i] = argv[0][i] - argv[0][i-ST];
@@ -63,7 +63,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
     argv[0][i] = argv[0][i] - argv[0][i-ST];
 
 #if __cplusplus <= 199711L
-  // expected-error at +4 2 {{expression is not an integral constant expression}}
+  // expected-error at +4 2 {{integral constant expression}}
 #else
   // expected-error at +2 2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif
@@ -106,7 +106,7 @@ int main(int argc, char **argv) {
 #if __cplusplus >= 201103L
   // expected-note at +2 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
-#pragma omp target teams distribute simd safelen (foobool(1) > 0 ? 1 : 2) // expected-error {{expression is not an integral constant expression}}
+#pragma omp target teams distribute simd safelen (foobool(1) > 0 ? 1 : 2) // expected-error {{integral constant expression}}
   for (int i = 4; i < 12; i++)
     argv[0][i] = argv[0][i] - argv[0][i-4];
 
@@ -115,7 +115,7 @@ int main(int argc, char **argv) {
 #endif
 // expected-error at +3 {{argument to 'safelen' clause must be a strictly positive integer value}}
 // expected-error at +2 2 {{directive '#pragma omp target teams distribute simd' cannot contain more than one 'safelen' clause}}
-// expected-error at +1 {{expression is not an integral constant expression}}
+// expected-error at +1 {{integral constant expression}}
 #pragma omp target teams distribute simd safelen (foobool(argc)), safelen (true), safelen (-5)
   for (int i = 4; i < 12; i++)
     argv[0][i] = argv[0][i] - argv[0][i-4];
@@ -125,7 +125,7 @@ int main(int argc, char **argv) {
     argv[0][i] = argv[0][i] - argv[0][i-4];
 
 #if __cplusplus <= 199711L
-  // expected-error at +4 {{expression is not an integral constant expression}}
+  // expected-error at +4 {{integral constant expression}}
 #else
   // expected-error at +2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif

diff  --git a/clang/test/OpenMP/target_teams_distribute_simd_simdlen_messages.cpp b/clang/test/OpenMP/target_teams_distribute_simd_simdlen_messages.cpp
index 322c64607d03..f54da20babd8 100644
--- a/clang/test/OpenMP/target_teams_distribute_simd_simdlen_messages.cpp
+++ b/clang/test/OpenMP/target_teams_distribute_simd_simdlen_messages.cpp
@@ -32,7 +32,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
 #pragma omp target teams distribute simd safelen () // expected-error {{expected expression}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
 
-#pragma omp target teams distribute simd safelen (argc // expected-note {{to match this '('}} expected-error 2 {{expression is not an integral constant expression}} expected-note 2 {{read of non-const variable 'argc' is not allowed in a constant expression}} expected-error {{expected ')'}}
+#pragma omp target teams distribute simd safelen (argc // expected-note {{to match this '('}} expected-error 2 {{integral constant expression}} expected-note 2 {{read of non-const variable 'argc' is not allowed in a constant expression}} expected-error {{expected ')'}}
   for (int i = ST; i < N; i++) 
     argv[0][i] = argv[0][i] - argv[0][i-ST];
   
@@ -53,7 +53,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
 #endif
 // expected-error at +3 2 {{directive '#pragma omp target teams distribute simd' cannot contain more than one 'safelen' clause}}
 // expected-error at +2 {{argument to 'safelen' clause must be a strictly positive integer value}}
-// expected-error at +1 2 {{expression is not an integral constant expression}}
+// expected-error at +1 2 {{integral constant expression}}
 #pragma omp target teams distribute simd safelen (foobool(argc)), safelen (true), safelen (-5)
   for (int i = ST; i < N; i++)
     argv[0][i] = argv[0][i] - argv[0][i-ST];
@@ -63,7 +63,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
     argv[0][i] = argv[0][i] - argv[0][i-ST];
 
 #if __cplusplus <= 199711L
-  // expected-error at +4 2 {{expression is not an integral constant expression}}
+  // expected-error at +4 2 {{integral constant expression}}
 #else
   // expected-error at +2 2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif
@@ -106,7 +106,7 @@ int main(int argc, char **argv) {
 #if __cplusplus >= 201103L
   // expected-note at +2 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
-#pragma omp target teams distribute simd safelen (foobool(1) > 0 ? 1 : 2) // expected-error {{expression is not an integral constant expression}}
+#pragma omp target teams distribute simd safelen (foobool(1) > 0 ? 1 : 2) // expected-error {{integral constant expression}}
   for (int i = 4; i < 12; i++)
     argv[0][i] = argv[0][i] - argv[0][i-4];
 
@@ -115,7 +115,7 @@ int main(int argc, char **argv) {
 #endif
 // expected-error at +3 {{argument to 'safelen' clause must be a strictly positive integer value}}
 // expected-error at +2 2 {{directive '#pragma omp target teams distribute simd' cannot contain more than one 'safelen' clause}}
-// expected-error at +1 {{expression is not an integral constant expression}}
+// expected-error at +1 {{integral constant expression}}
 #pragma omp target teams distribute simd safelen (foobool(argc)), safelen (true), safelen (-5)
   for (int i = 4; i < 12; i++)
     argv[0][i] = argv[0][i] - argv[0][i-4];
@@ -125,7 +125,7 @@ int main(int argc, char **argv) {
     argv[0][i] = argv[0][i] - argv[0][i-4];
 
 #if __cplusplus <= 199711L
-  // expected-error at +4 {{expression is not an integral constant expression}}
+  // expected-error at +4 {{integral constant expression}}
 #else
   // expected-error at +2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif

diff  --git a/clang/test/OpenMP/taskloop_collapse_messages.cpp b/clang/test/OpenMP/taskloop_collapse_messages.cpp
index 5551a0254e14..d004c929dd0d 100644
--- a/clang/test/OpenMP/taskloop_collapse_messages.cpp
+++ b/clang/test/OpenMP/taskloop_collapse_messages.cpp
@@ -27,7 +27,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   #pragma omp taskloop collapse () // expected-error {{expected expression}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
   // expected-error at +3 {{expected ')'}} expected-note at +3 {{to match this '('}}
-  // expected-error at +2 2 {{expression is not an integral constant expression}}
+  // expected-error at +2 2 {{integral constant expression}}
   // expected-note at +1 2 {{read of non-const variable 'argc' is not allowed in a constant expression}}
   #pragma omp taskloop collapse (argc
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
@@ -40,7 +40,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST]; // expected-error 2 {{expected 2 for loops after '#pragma omp taskloop', but found only 1}}
   // expected-error at +6 2 {{directive '#pragma omp taskloop' cannot contain more than one 'collapse' clause}}
   // expected-error at +5 {{argument to 'collapse' clause must be a strictly positive integer value}}
-  // expected-error at +4 2 {{expression is not an integral constant expression}}
+  // expected-error at +4 2 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +2 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
@@ -49,7 +49,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   #pragma omp taskloop collapse (S) // expected-error {{'S' does not refer to a value}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
 #if __cplusplus <= 199711L
-  // expected-error at +4 2 {{expression is not an integral constant expression}}
+  // expected-error at +4 2 {{integral constant expression}}
 #else
   // expected-error at +2 2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif
@@ -75,13 +75,13 @@ int main(int argc, char **argv) {
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4]; // expected-error {{expected 4 for loops after '#pragma omp taskloop', but found only 1}}
   #pragma omp taskloop collapse (2+2)) // expected-warning {{extra tokens at the end of '#pragma omp taskloop' are ignored}}  expected-note {{as specified in 'collapse' clause}}
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4]; // expected-error {{expected 4 for loops after '#pragma omp taskloop', but found only 1}}
-  // expected-error at +4 {{expression is not an integral constant expression}}
+  // expected-error at +4 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +2 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
   #pragma omp taskloop collapse (foobool(1) > 0 ? 1 : 2)
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
-  // expected-error at +6 {{expression is not an integral constant expression}}
+  // expected-error at +6 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +4 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
@@ -92,7 +92,7 @@ int main(int argc, char **argv) {
   #pragma omp taskloop collapse (S1) // expected-error {{'S1' does not refer to a value}}
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
 #if __cplusplus <= 199711L
-  // expected-error at +4 {{expression is not an integral constant expression}}
+  // expected-error at +4 {{integral constant expression}}
 #else
   // expected-error at +2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif

diff  --git a/clang/test/OpenMP/taskloop_misc_messages.c b/clang/test/OpenMP/taskloop_misc_messages.c
index 795419416204..5805bfe50190 100644
--- a/clang/test/OpenMP/taskloop_misc_messages.c
+++ b/clang/test/OpenMP/taskloop_misc_messages.c
@@ -179,12 +179,12 @@ void test_collapse() {
   for (i = 0; i < 16; ++i)
     ; // expected-error {{expected 4 for loops after '#pragma omp taskloop', but found only 1}}
 #pragma omp parallel
-// expected-error at +1 {{expression is not an integer constant expression}}
+// expected-error at +1 {{integer constant expression}}
 #pragma omp taskloop collapse(2.5)
   for (i = 0; i < 16; ++i)
     ;
 #pragma omp parallel
-// expected-error at +1 {{expression is not an integer constant expression}}
+// expected-error at +1 {{integer constant expression}}
 #pragma omp taskloop collapse(foo())
   for (i = 0; i < 16; ++i)
     ;

diff  --git a/clang/test/OpenMP/taskloop_simd_aligned_messages.cpp b/clang/test/OpenMP/taskloop_simd_aligned_messages.cpp
index c7a62b8f4a2d..aa3331a0e249 100644
--- a/clang/test/OpenMP/taskloop_simd_aligned_messages.cpp
+++ b/clang/test/OpenMP/taskloop_simd_aligned_messages.cpp
@@ -151,7 +151,7 @@ template<class I, class C> int foomain(I argc, C **argv) {
   for (I k = 0; k < argc; ++k) ++k;
   int v = 0;
   // expected-note at +2 {{initializer of 'j' is not a constant expression}}
-  // expected-error at +1 {{expression is not an integral constant expression}}
+  // expected-error at +1 {{integral constant expression}}
   #pragma omp taskloop simd aligned(f:j)
   for (I k = 0; k < argc; ++k) { ++k; v += j; }
   #pragma omp taskloop simd aligned(f)

diff  --git a/clang/test/OpenMP/taskloop_simd_collapse_messages.cpp b/clang/test/OpenMP/taskloop_simd_collapse_messages.cpp
index 7730990ac890..485450966898 100644
--- a/clang/test/OpenMP/taskloop_simd_collapse_messages.cpp
+++ b/clang/test/OpenMP/taskloop_simd_collapse_messages.cpp
@@ -27,7 +27,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   #pragma omp taskloop simd collapse () // expected-error {{expected expression}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
   // expected-error at +3 {{expected ')'}} expected-note at +3 {{to match this '('}}
-  // expected-error at +2 2 {{expression is not an integral constant expression}}
+  // expected-error at +2 2 {{integral constant expression}}
   // expected-note at +1 2 {{read of non-const variable 'argc' is not allowed in a constant expression}}
   #pragma omp taskloop simd collapse (argc 
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
@@ -40,7 +40,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST]; // expected-error 2 {{expected 2 for loops after '#pragma omp taskloop simd', but found only 1}}
   // expected-error at +6 2 {{directive '#pragma omp taskloop simd' cannot contain more than one 'collapse' clause}}
   // expected-error at +5 {{argument to 'collapse' clause must be a strictly positive integer value}}
-  // expected-error at +4 2 {{expression is not an integral constant expression}}
+  // expected-error at +4 2 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +2 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
@@ -49,7 +49,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   #pragma omp taskloop simd collapse (S) // expected-error {{'S' does not refer to a value}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
 #if __cplusplus <= 199711L
-  // expected-error at +4 2 {{expression is not an integral constant expression}}
+  // expected-error at +4 2 {{integral constant expression}}
 #else
   // expected-error at +2 2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif
@@ -75,13 +75,13 @@ int main(int argc, char **argv) {
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4]; // expected-error {{expected 4 for loops after '#pragma omp taskloop simd', but found only 1}}
   #pragma omp taskloop simd collapse (2+2)) // expected-warning {{extra tokens at the end of '#pragma omp taskloop simd' are ignored}}  expected-note {{as specified in 'collapse' clause}}
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4]; // expected-error {{expected 4 for loops after '#pragma omp taskloop simd', but found only 1}}
-  // expected-error at +4 {{expression is not an integral constant expression}}
+  // expected-error at +4 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +2 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
   #pragma omp taskloop simd collapse (foobool(1) > 0 ? 1 : 2)
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
-  // expected-error at +6 {{expression is not an integral constant expression}}
+  // expected-error at +6 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +4 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
@@ -92,7 +92,7 @@ int main(int argc, char **argv) {
   #pragma omp taskloop simd collapse (S1) // expected-error {{'S1' does not refer to a value}}
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
 #if __cplusplus <= 199711L
-  // expected-error at +4 {{expression is not an integral constant expression}}
+  // expected-error at +4 {{integral constant expression}}
 #else
   // expected-error at +2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif

diff  --git a/clang/test/OpenMP/taskloop_simd_misc_messages.c b/clang/test/OpenMP/taskloop_simd_misc_messages.c
index 9e5fb84f4459..cbcfc0d30a4c 100644
--- a/clang/test/OpenMP/taskloop_simd_misc_messages.c
+++ b/clang/test/OpenMP/taskloop_simd_misc_messages.c
@@ -180,12 +180,12 @@ void test_collapse() {
   for (i = 0; i < 16; ++i)
     ; // expected-error {{expected 4 for loops after '#pragma omp taskloop simd', but found only 1}}
 #pragma omp parallel
-// expected-error at +1 {{expression is not an integer constant expression}}
+// expected-error at +1 {{integer constant expression}}
 #pragma omp taskloop simd collapse(2.5)
   for (i = 0; i < 16; ++i)
     ;
 #pragma omp parallel
-// expected-error at +1 {{expression is not an integer constant expression}}
+// expected-error at +1 {{integer constant expression}}
 #pragma omp taskloop simd collapse(foo())
   for (i = 0; i < 16; ++i)
     ;

diff  --git a/clang/test/OpenMP/taskloop_simd_safelen_messages.cpp b/clang/test/OpenMP/taskloop_simd_safelen_messages.cpp
index 8af6dd02cc39..491bc5089eda 100644
--- a/clang/test/OpenMP/taskloop_simd_safelen_messages.cpp
+++ b/clang/test/OpenMP/taskloop_simd_safelen_messages.cpp
@@ -27,7 +27,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   #pragma omp taskloop simd safelen () // expected-error {{expected expression}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
   // expected-error at +3 {{expected ')'}} expected-note at +3 {{to match this '('}}
-  // expected-error at +2 2 {{expression is not an integral constant expression}}
+  // expected-error at +2 2 {{integral constant expression}}
   // expected-note at +1 2 {{read of non-const variable 'argc' is not allowed in a constant expression}}
   #pragma omp taskloop simd safelen (argc 
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
@@ -40,7 +40,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
   // expected-error at +6 2 {{directive '#pragma omp taskloop simd' cannot contain more than one 'safelen' clause}}
   // expected-error at +5 {{argument to 'safelen' clause must be a strictly positive integer value}}
-  // expected-error at +4 2 {{expression is not an integral constant expression}}
+  // expected-error at +4 2 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +2 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
@@ -49,7 +49,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   #pragma omp taskloop simd safelen (S) // expected-error {{'S' does not refer to a value}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
 #if __cplusplus <= 199711L
-  // expected-error at +4 2 {{expression is not an integral constant expression}}
+  // expected-error at +4 2 {{integral constant expression}}
 #else
   // expected-error at +2 2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif
@@ -73,13 +73,13 @@ int main(int argc, char **argv) {
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
   #pragma omp taskloop simd safelen (2+2)) // expected-warning {{extra tokens at the end of '#pragma omp taskloop simd' are ignored}}
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
-  // expected-error at +4 {{expression is not an integral constant expression}}
+  // expected-error at +4 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +2 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
   #pragma omp taskloop simd safelen (foobool(1) > 0 ? 1 : 2)
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
-  // expected-error at +6 {{expression is not an integral constant expression}}
+  // expected-error at +6 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +4 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
@@ -90,7 +90,7 @@ int main(int argc, char **argv) {
   #pragma omp taskloop simd safelen (S1) // expected-error {{'S1' does not refer to a value}}
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
 #if __cplusplus <= 199711L
-  // expected-error at +4 {{expression is not an integral constant expression}}
+  // expected-error at +4 {{integral constant expression}}
 #else
   // expected-error at +2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif

diff  --git a/clang/test/OpenMP/taskloop_simd_simdlen_messages.cpp b/clang/test/OpenMP/taskloop_simd_simdlen_messages.cpp
index 59e4b8b8f005..cd935c9c1dec 100644
--- a/clang/test/OpenMP/taskloop_simd_simdlen_messages.cpp
+++ b/clang/test/OpenMP/taskloop_simd_simdlen_messages.cpp
@@ -27,7 +27,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   #pragma omp taskloop simd simdlen () // expected-error {{expected expression}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
   // expected-error at +3 {{expected ')'}} expected-note at +3 {{to match this '('}}
-  // expected-error at +2 2 {{expression is not an integral constant expression}}
+  // expected-error at +2 2 {{integral constant expression}}
   // expected-note at +1 2 {{read of non-const variable 'argc' is not allowed in a constant expression}}
   #pragma omp taskloop simd simdlen (argc
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
@@ -40,7 +40,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
   // expected-error at +6 2 {{directive '#pragma omp taskloop simd' cannot contain more than one 'simdlen' clause}}
   // expected-error at +5 {{argument to 'simdlen' clause must be a strictly positive integer value}}
-  // expected-error at +4 2 {{expression is not an integral constant expression}}
+  // expected-error at +4 2 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +2 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
@@ -49,7 +49,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   #pragma omp taskloop simd simdlen (S) // expected-error {{'S' does not refer to a value}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
 #if __cplusplus <= 199711L
-  // expected-error at +4 2 {{expression is not an integral constant expression}}
+  // expected-error at +4 2 {{integral constant expression}}
 #else
   // expected-error at +2 2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif
@@ -73,13 +73,13 @@ int main(int argc, char **argv) {
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
   #pragma omp taskloop simd simdlen (2+2)) // expected-warning {{extra tokens at the end of '#pragma omp taskloop simd' are ignored}}
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
-  // expected-error at +4 {{expression is not an integral constant expression}}
+  // expected-error at +4 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +2 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
   #pragma omp taskloop simd simdlen (foobool(1) > 0 ? 1 : 2)
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
-  // expected-error at +6 {{expression is not an integral constant expression}}
+  // expected-error at +6 {{integral constant expression}}
 #if __cplusplus >= 201103L
   // expected-note at +4 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
@@ -90,7 +90,7 @@ int main(int argc, char **argv) {
   #pragma omp taskloop simd simdlen (S1) // expected-error {{'S1' does not refer to a value}}
   for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
 #if __cplusplus <= 199711L
-  // expected-error at +4 {{expression is not an integral constant expression}}
+  // expected-error at +4 {{integral constant expression}}
 #else
   // expected-error at +2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif

diff  --git a/clang/test/OpenMP/teams_distribute_collapse_messages.cpp b/clang/test/OpenMP/teams_distribute_collapse_messages.cpp
index 35a2d1708576..f6c9fd948b30 100644
--- a/clang/test/OpenMP/teams_distribute_collapse_messages.cpp
+++ b/clang/test/OpenMP/teams_distribute_collapse_messages.cpp
@@ -36,7 +36,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
     argv[0][i] = argv[0][i] - argv[0][i-ST];
 
 // expected-error at +4 {{expected ')'}} expected-note at +4 {{to match this '('}}
-// expected-error at +3 2 {{expression is not an integral constant expression}}
+// expected-error at +3 2 {{integral constant expression}}
 // expected-note at +2 2 {{read of non-const variable 'argc' is not allowed in a constant expression}}
 #pragma omp target
 #pragma omp teams distribute collapse (argc 
@@ -64,7 +64,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
 #endif
 // expected-error at +4 2 {{directive '#pragma omp teams distribute' cannot contain more than one 'collapse' clause}}
 // expected-error at +3 {{argument to 'collapse' clause must be a strictly positive integer value}}
-// expected-error at +2 2 {{expression is not an integral constant expression}}
+// expected-error at +2 2 {{integral constant expression}}
 #pragma omp target
 #pragma omp teams distribute collapse (foobool(argc)), collapse (true), collapse (-5)
   for (int i = ST; i < N; i++)
@@ -78,7 +78,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
 #if __cplusplus >= 201103L
 // expected-error at +5 2 {{integral constant expression must have integral or unscoped enumeration type}}
 #else
-// expected-error at +3 2 {{expression is not an integral constant expression}}
+// expected-error at +3 2 {{integral constant expression}}
 #endif
 #pragma omp target
 #pragma omp teams distribute collapse (argv[1]=2) // expected-error {{expected ')'}} expected-note {{to match this '('}}
@@ -131,14 +131,14 @@ int main(int argc, char **argv) {
 // expected-note at +3 {{non-constexpr function 'foobool' cannot be used}}
 #endif
 #pragma omp target
-#pragma omp teams distribute collapse (foobool(1) > 0 ? 1 : 2) // expected-error {{expression is not an integral constant expression}}
+#pragma omp teams distribute collapse (foobool(1) > 0 ? 1 : 2) // expected-error {{integral constant expression}}
   for (int i = 4; i < 12; i++)
     argv[0][i] = argv[0][i] - argv[0][i-4];
 
 #if __cplusplus >= 201103L
 // expected-note at +6 {{non-constexpr function 'foobool' cannot be used}}
 #endif
-// expected-error at +4 {{expression is not an integral constant expression}}
+// expected-error at +4 {{integral constant expression}}
 // expected-error at +3 2 {{directive '#pragma omp teams distribute' cannot contain more than one 'collapse' clause}}
 // expected-error at +2 {{argument to 'collapse' clause must be a strictly positive integer value}}
 #pragma omp target
@@ -154,7 +154,7 @@ int main(int argc, char **argv) {
 #if __cplusplus >= 201103L
 // expected-error at +5 {{integral constant expression must have integral or unscoped enumeration type}}
 #else
-// expected-error at +3 {{expression is not an integral constant expression}}
+// expected-error at +3 {{integral constant expression}}
 #endif
 #pragma omp target
 #pragma omp teams distribute collapse (argv[1]=2) // expected-error {{expected ')'}} expected-note {{to match this '('}}

diff  --git a/clang/test/OpenMP/teams_distribute_parallel_for_collapse_messages.cpp b/clang/test/OpenMP/teams_distribute_parallel_for_collapse_messages.cpp
index 0c8a2e6108d6..1c83ac83785c 100644
--- a/clang/test/OpenMP/teams_distribute_parallel_for_collapse_messages.cpp
+++ b/clang/test/OpenMP/teams_distribute_parallel_for_collapse_messages.cpp
@@ -36,7 +36,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
     argv[0][i] = argv[0][i] - argv[0][i-ST];
 
 // expected-error at +4 {{expected ')'}} expected-note at +4 {{to match this '('}}
-// expected-error at +3 2 {{expression is not an integral constant expression}}
+// expected-error at +3 2 {{integral constant expression}}
 // expected-note at +2 2 {{read of non-const variable 'argc' is not allowed in a constant expression}}
 #pragma omp target
 #pragma omp teams distribute parallel for collapse (argc 
@@ -64,7 +64,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
 #endif
 // expected-error at +4 2 {{directive '#pragma omp teams distribute parallel for' cannot contain more than one 'collapse' clause}}
 // expected-error at +3 {{argument to 'collapse' clause must be a strictly positive integer value}}
-// expected-error at +2 2 {{expression is not an integral constant expression}}
+// expected-error at +2 2 {{integral constant expression}}
 #pragma omp target
 #pragma omp teams distribute parallel for collapse (foobool(argc)), collapse (true), collapse (-5)
   for (int i = ST; i < N; i++)
@@ -77,7 +77,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
 #if __cplusplus >= 201103L
 // expected-error at +5 2 {{integral constant expression must have integral or unscoped enumeration type}}
 #else
-// expected-error at +3 2 {{expression is not an integral constant expression}}
+// expected-error at +3 2 {{integral constant expression}}
 #endif
 #pragma omp target
 #pragma omp teams distribute parallel for collapse (argv[1]=2) // expected-error {{expected ')'}} expected-note {{to match this '('}}
@@ -130,14 +130,14 @@ int main(int argc, char **argv) {
 // expected-note at +3 {{non-constexpr function 'foobool' cannot be used}}
 #endif
 #pragma omp target
-#pragma omp teams distribute parallel for collapse (foobool(1) > 0 ? 1 : 2) // expected-error {{expression is not an integral constant expression}}
+#pragma omp teams distribute parallel for collapse (foobool(1) > 0 ? 1 : 2) // expected-error {{integral constant expression}}
   for (int i = 4; i < 12; i++)
     argv[0][i] = argv[0][i] - argv[0][i-4];
 
 #if __cplusplus >= 201103L
 // expected-note at +6 {{non-constexpr function 'foobool' cannot be used}}
 #endif
-// expected-error at +4 {{expression is not an integral constant expression}}
+// expected-error at +4 {{integral constant expression}}
 // expected-error at +3 2 {{directive '#pragma omp teams distribute parallel for' cannot contain more than one 'collapse' clause}}
 // expected-error at +2 {{argument to 'collapse' clause must be a strictly positive integer value}}
 #pragma omp target
@@ -153,7 +153,7 @@ int main(int argc, char **argv) {
 #if __cplusplus >= 201103L
 // expected-error at +5 {{integral constant expression must have integral or unscoped enumeration type}}
 #else
-// expected-error at +3 {{expression is not an integral constant expression}}
+// expected-error at +3 {{integral constant expression}}
 #endif
 #pragma omp target
 #pragma omp teams distribute parallel for collapse (argv[1]=2) // expected-error {{expected ')'}} expected-note {{to match this '('}}

diff  --git a/clang/test/OpenMP/teams_distribute_parallel_for_simd_aligned_messages.cpp b/clang/test/OpenMP/teams_distribute_parallel_for_simd_aligned_messages.cpp
index 7d2dd958dea1..f585cb03baaa 100644
--- a/clang/test/OpenMP/teams_distribute_parallel_for_simd_aligned_messages.cpp
+++ b/clang/test/OpenMP/teams_distribute_parallel_for_simd_aligned_messages.cpp
@@ -195,7 +195,7 @@ template<class I, class C> int foomain(I argc, C **argv) {
   int v = 0;
 
 #pragma omp target
-#pragma omp teams distribute parallel for simd aligned(f:j) // expected-note {{initializer of 'j' is not a constant expression}} expected-error {{expression is not an integral constant expression}}
+#pragma omp teams distribute parallel for simd aligned(f:j) // expected-note {{initializer of 'j' is not a constant expression}} expected-error {{integral constant expression}}
 
   for (I k = 0; k < argc; ++k) { ++k; v += j; }
 

diff  --git a/clang/test/OpenMP/teams_distribute_parallel_for_simd_collapse_messages.cpp b/clang/test/OpenMP/teams_distribute_parallel_for_simd_collapse_messages.cpp
index 032ab9c4495b..8558f1b31bde 100644
--- a/clang/test/OpenMP/teams_distribute_parallel_for_simd_collapse_messages.cpp
+++ b/clang/test/OpenMP/teams_distribute_parallel_for_simd_collapse_messages.cpp
@@ -36,7 +36,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
     argv[0][i] = argv[0][i] - argv[0][i-ST];
 
 // expected-error at +4 {{expected ')'}} expected-note at +4 {{to match this '('}}
-// expected-error at +3 2 {{expression is not an integral constant expression}}
+// expected-error at +3 2 {{integral constant expression}}
 // expected-note at +2 2 {{read of non-const variable 'argc' is not allowed in a constant expression}}
 #pragma omp target
 #pragma omp teams distribute parallel for simd collapse (argc 
@@ -64,7 +64,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
 #endif
 // expected-error at +4 2 {{directive '#pragma omp teams distribute parallel for simd' cannot contain more than one 'collapse' clause}}
 // expected-error at +3 {{argument to 'collapse' clause must be a strictly positive integer value}}
-// expected-error at +2 2 {{expression is not an integral constant expression}}
+// expected-error at +2 2 {{integral constant expression}}
 #pragma omp target
 #pragma omp teams distribute parallel for simd collapse (foobool(argc)), collapse (true), collapse (-5)
   for (int i = ST; i < N; i++)
@@ -77,7 +77,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
 #if __cplusplus >= 201103L
 // expected-error at +5 2 {{integral constant expression must have integral or unscoped enumeration type}}
 #else
-// expected-error at +3 2 {{expression is not an integral constant expression}}
+// expected-error at +3 2 {{integral constant expression}}
 #endif
 #pragma omp target
 #pragma omp teams distribute parallel for simd collapse (argv[1]=2) // expected-error {{expected ')'}} expected-note {{to match this '('}}
@@ -130,14 +130,14 @@ int main(int argc, char **argv) {
 // expected-note at +3 {{non-constexpr function 'foobool' cannot be used}}
 #endif
 #pragma omp target
-#pragma omp teams distribute parallel for simd collapse (foobool(1) > 0 ? 1 : 2) // expected-error {{expression is not an integral constant expression}}
+#pragma omp teams distribute parallel for simd collapse (foobool(1) > 0 ? 1 : 2) // expected-error {{integral constant expression}}
   for (int i = 4; i < 12; i++)
     argv[0][i] = argv[0][i] - argv[0][i-4];
 
 #if __cplusplus >= 201103L
 // expected-note at +6 {{non-constexpr function 'foobool' cannot be used}}
 #endif
-// expected-error at +4 {{expression is not an integral constant expression}}
+// expected-error at +4 {{integral constant expression}}
 // expected-error at +3 2 {{directive '#pragma omp teams distribute parallel for simd' cannot contain more than one 'collapse' clause}}
 // expected-error at +2 {{argument to 'collapse' clause must be a strictly positive integer value}}
 #pragma omp target
@@ -153,7 +153,7 @@ int main(int argc, char **argv) {
 #if __cplusplus >= 201103L
 // expected-error at +5 {{integral constant expression must have integral or unscoped enumeration type}}
 #else
-// expected-error at +3 {{expression is not an integral constant expression}}
+// expected-error at +3 {{integral constant expression}}
 #endif
 #pragma omp target
 #pragma omp teams distribute parallel for simd collapse (argv[1]=2) // expected-error {{expected ')'}} expected-note {{to match this '('}}

diff  --git a/clang/test/OpenMP/teams_distribute_parallel_for_simd_safelen_messages.cpp b/clang/test/OpenMP/teams_distribute_parallel_for_simd_safelen_messages.cpp
index 3e455d29348e..019427fe3f3e 100644
--- a/clang/test/OpenMP/teams_distribute_parallel_for_simd_safelen_messages.cpp
+++ b/clang/test/OpenMP/teams_distribute_parallel_for_simd_safelen_messages.cpp
@@ -36,7 +36,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
 
 #pragma omp target
-#pragma omp teams distribute parallel for simd safelen (argc  // expected-note {{to match this '('}} expected-error 2 {{expression is not an integral constant expression}} expected-note 2 {{read of non-const variable 'argc' is not allowed in a constant expression}} expected-error {{expected ')'}}
+#pragma omp teams distribute parallel for simd safelen (argc  // expected-note {{to match this '('}} expected-error 2 {{integral constant expression}} expected-note 2 {{read of non-const variable 'argc' is not allowed in a constant expression}} expected-error {{expected ')'}}
   for (int i = ST; i < N; i++) 
     argv[0][i] = argv[0][i] - argv[0][i-ST];
   
@@ -61,7 +61,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
 #pragma omp target
 // expected-error at +3 2 {{directive '#pragma omp teams distribute parallel for simd' cannot contain more than one 'safelen' clause}}
 // expected-error at +2 {{argument to 'safelen' clause must be a strictly positive integer value}}
-// expected-error at +1 2 {{expression is not an integral constant expression}}
+// expected-error at +1 2 {{integral constant expression}}
 #pragma omp teams distribute parallel for simd safelen (foobool(argc)), safelen (true), safelen (-5)
   for (int i = ST; i < N; i++)
     argv[0][i] = argv[0][i] - argv[0][i-ST];
@@ -72,7 +72,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
     argv[0][i] = argv[0][i] - argv[0][i-ST];
 
 #if __cplusplus <= 199711L
-  // expected-error at +5 2 {{expression is not an integral constant expression}}
+  // expected-error at +5 2 {{integral constant expression}}
 #else
   // expected-error at +3 2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif
@@ -124,7 +124,7 @@ int main(int argc, char **argv) {
   // expected-note at +3 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
 #pragma omp target
-#pragma omp teams distribute parallel for simd safelen (foobool(1) > 0 ? 1 : 2) // expected-error {{expression is not an integral constant expression}}
+#pragma omp teams distribute parallel for simd safelen (foobool(1) > 0 ? 1 : 2) // expected-error {{integral constant expression}}
   for (int i = 4; i < 12; i++)
     argv[0][i] = argv[0][i] - argv[0][i-4];
 
@@ -134,7 +134,7 @@ int main(int argc, char **argv) {
 #pragma omp target
 // expected-error at +3 {{argument to 'safelen' clause must be a strictly positive integer value}}
 // expected-error at +2 2 {{directive '#pragma omp teams distribute parallel for simd' cannot contain more than one 'safelen' clause}}
-// expected-error at +1 {{expression is not an integral constant expression}}
+// expected-error at +1 {{integral constant expression}}
 #pragma omp teams distribute parallel for simd safelen (foobool(argc)), safelen (true), safelen (-5)
   for (int i = 4; i < 12; i++)
     argv[0][i] = argv[0][i] - argv[0][i-4];
@@ -145,7 +145,7 @@ int main(int argc, char **argv) {
     argv[0][i] = argv[0][i] - argv[0][i-4];
 
 #if __cplusplus <= 199711L
-  // expected-error at +5 {{expression is not an integral constant expression}}
+  // expected-error at +5 {{integral constant expression}}
 #else
   // expected-error at +3 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif

diff  --git a/clang/test/OpenMP/teams_distribute_parallel_for_simd_simdlen_messages.cpp b/clang/test/OpenMP/teams_distribute_parallel_for_simd_simdlen_messages.cpp
index 3e455d29348e..019427fe3f3e 100644
--- a/clang/test/OpenMP/teams_distribute_parallel_for_simd_simdlen_messages.cpp
+++ b/clang/test/OpenMP/teams_distribute_parallel_for_simd_simdlen_messages.cpp
@@ -36,7 +36,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
 
 #pragma omp target
-#pragma omp teams distribute parallel for simd safelen (argc  // expected-note {{to match this '('}} expected-error 2 {{expression is not an integral constant expression}} expected-note 2 {{read of non-const variable 'argc' is not allowed in a constant expression}} expected-error {{expected ')'}}
+#pragma omp teams distribute parallel for simd safelen (argc  // expected-note {{to match this '('}} expected-error 2 {{integral constant expression}} expected-note 2 {{read of non-const variable 'argc' is not allowed in a constant expression}} expected-error {{expected ')'}}
   for (int i = ST; i < N; i++) 
     argv[0][i] = argv[0][i] - argv[0][i-ST];
   
@@ -61,7 +61,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
 #pragma omp target
 // expected-error at +3 2 {{directive '#pragma omp teams distribute parallel for simd' cannot contain more than one 'safelen' clause}}
 // expected-error at +2 {{argument to 'safelen' clause must be a strictly positive integer value}}
-// expected-error at +1 2 {{expression is not an integral constant expression}}
+// expected-error at +1 2 {{integral constant expression}}
 #pragma omp teams distribute parallel for simd safelen (foobool(argc)), safelen (true), safelen (-5)
   for (int i = ST; i < N; i++)
     argv[0][i] = argv[0][i] - argv[0][i-ST];
@@ -72,7 +72,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
     argv[0][i] = argv[0][i] - argv[0][i-ST];
 
 #if __cplusplus <= 199711L
-  // expected-error at +5 2 {{expression is not an integral constant expression}}
+  // expected-error at +5 2 {{integral constant expression}}
 #else
   // expected-error at +3 2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif
@@ -124,7 +124,7 @@ int main(int argc, char **argv) {
   // expected-note at +3 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
 #pragma omp target
-#pragma omp teams distribute parallel for simd safelen (foobool(1) > 0 ? 1 : 2) // expected-error {{expression is not an integral constant expression}}
+#pragma omp teams distribute parallel for simd safelen (foobool(1) > 0 ? 1 : 2) // expected-error {{integral constant expression}}
   for (int i = 4; i < 12; i++)
     argv[0][i] = argv[0][i] - argv[0][i-4];
 
@@ -134,7 +134,7 @@ int main(int argc, char **argv) {
 #pragma omp target
 // expected-error at +3 {{argument to 'safelen' clause must be a strictly positive integer value}}
 // expected-error at +2 2 {{directive '#pragma omp teams distribute parallel for simd' cannot contain more than one 'safelen' clause}}
-// expected-error at +1 {{expression is not an integral constant expression}}
+// expected-error at +1 {{integral constant expression}}
 #pragma omp teams distribute parallel for simd safelen (foobool(argc)), safelen (true), safelen (-5)
   for (int i = 4; i < 12; i++)
     argv[0][i] = argv[0][i] - argv[0][i-4];
@@ -145,7 +145,7 @@ int main(int argc, char **argv) {
     argv[0][i] = argv[0][i] - argv[0][i-4];
 
 #if __cplusplus <= 199711L
-  // expected-error at +5 {{expression is not an integral constant expression}}
+  // expected-error at +5 {{integral constant expression}}
 #else
   // expected-error at +3 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif

diff  --git a/clang/test/OpenMP/teams_distribute_simd_aligned_messages.cpp b/clang/test/OpenMP/teams_distribute_simd_aligned_messages.cpp
index fa1f29053333..05996a60d8d2 100644
--- a/clang/test/OpenMP/teams_distribute_simd_aligned_messages.cpp
+++ b/clang/test/OpenMP/teams_distribute_simd_aligned_messages.cpp
@@ -195,7 +195,7 @@ template<class I, class C> int foomain(I argc, C **argv) {
   int v = 0;
 
 #pragma omp target
-#pragma omp teams distribute simd aligned(f:j) // expected-note {{initializer of 'j' is not a constant expression}} expected-error {{expression is not an integral constant expression}}
+#pragma omp teams distribute simd aligned(f:j) // expected-note {{initializer of 'j' is not a constant expression}} expected-error {{integral constant expression}}
 
   for (I k = 0; k < argc; ++k) { ++k; v += j; }
 

diff  --git a/clang/test/OpenMP/teams_distribute_simd_collapse_messages.cpp b/clang/test/OpenMP/teams_distribute_simd_collapse_messages.cpp
index 75c7c619022c..e7ce4d94386f 100644
--- a/clang/test/OpenMP/teams_distribute_simd_collapse_messages.cpp
+++ b/clang/test/OpenMP/teams_distribute_simd_collapse_messages.cpp
@@ -36,7 +36,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
     argv[0][i] = argv[0][i] - argv[0][i-ST];
 
 // expected-error at +4 {{expected ')'}} expected-note at +4 {{to match this '('}}
-// expected-error at +3 2 {{expression is not an integral constant expression}}
+// expected-error at +3 2 {{integral constant expression}}
 // expected-note at +2 2 {{read of non-const variable 'argc' is not allowed in a constant expression}}
 #pragma omp target
 #pragma omp teams distribute simd collapse (argc 
@@ -61,7 +61,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
 
 // expected-error at +7 2 {{directive '#pragma omp teams distribute simd' cannot contain more than one 'collapse' clause}}
 // expected-error at +6 {{argument to 'collapse' clause must be a strictly positive integer value}}
-// expected-error at +5 2 {{expression is not an integral constant expression}}
+// expected-error at +5 2 {{integral constant expression}}
 #if __cplusplus >= 201103L
 // expected-note at +3 2 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
@@ -75,7 +75,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
     argv[0][i] = argv[0][i] - argv[0][i-ST];
 
 #if __cplusplus <= 199711L
-  // expected-error at +5 2 {{expression is not an integral constant expression}}
+  // expected-error at +5 2 {{integral constant expression}}
 #else
   // expected-error at +3 2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif
@@ -130,11 +130,11 @@ int main(int argc, char **argv) {
   // expected-note at +3 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
 #pragma omp target
-#pragma omp teams distribute simd collapse (foobool(1) > 0 ? 1 : 2) // expected-error {{expression is not an integral constant expression}}
+#pragma omp teams distribute simd collapse (foobool(1) > 0 ? 1 : 2) // expected-error {{integral constant expression}}
   for (int i = 4; i < 12; i++)
     argv[0][i] = argv[0][i] - argv[0][i-4];
 
-// expected-error at +7 {{expression is not an integral constant expression}}
+// expected-error at +7 {{integral constant expression}}
 // expected-error at +6 2 {{directive '#pragma omp teams distribute simd' cannot contain more than one 'collapse' clause}}
 // expected-error at +5 {{argument to 'collapse' clause must be a strictly positive integer value}}
 #if __cplusplus >= 201103L
@@ -153,7 +153,7 @@ int main(int argc, char **argv) {
 #if __cplusplus >= 201103L
   // expected-error at +5 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #else
-  // expected-error at +3 {{expression is not an integral constant expression}}
+  // expected-error at +3 {{integral constant expression}}
 #endif
 #pragma omp target
 #pragma omp teams distribute simd collapse (argv[1]=2) // expected-error {{expected ')'}} expected-note {{to match this '('}}

diff  --git a/clang/test/OpenMP/teams_distribute_simd_safelen_messages.cpp b/clang/test/OpenMP/teams_distribute_simd_safelen_messages.cpp
index 0a2ccf3da8e0..fe83ffdca020 100644
--- a/clang/test/OpenMP/teams_distribute_simd_safelen_messages.cpp
+++ b/clang/test/OpenMP/teams_distribute_simd_safelen_messages.cpp
@@ -36,7 +36,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
 
 #pragma omp target
-#pragma omp teams distribute simd safelen (argc  // expected-note {{to match this '('}} expected-error 2 {{expression is not an integral constant expression}} expected-note 2 {{read of non-const variable 'argc' is not allowed in a constant expression}} expected-error {{expected ')'}}
+#pragma omp teams distribute simd safelen (argc  // expected-note {{to match this '('}} expected-error 2 {{integral constant expression}} expected-note 2 {{read of non-const variable 'argc' is not allowed in a constant expression}} expected-error {{expected ')'}}
   for (int i = ST; i < N; i++) 
     argv[0][i] = argv[0][i] - argv[0][i-ST];
   
@@ -61,7 +61,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
 #pragma omp target
 // expected-error at +3 2 {{directive '#pragma omp teams distribute simd' cannot contain more than one 'safelen' clause}}
 // expected-error at +2 {{argument to 'safelen' clause must be a strictly positive integer value}}
-// expected-error at +1 2 {{expression is not an integral constant expression}}
+// expected-error at +1 2 {{integral constant expression}}
 #pragma omp teams distribute simd safelen (foobool(argc)), safelen (true), safelen (-5)
   for (int i = ST; i < N; i++)
     argv[0][i] = argv[0][i] - argv[0][i-ST];
@@ -72,7 +72,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
     argv[0][i] = argv[0][i] - argv[0][i-ST];
 
 #if __cplusplus <= 199711L
-  // expected-error at +5 2 {{expression is not an integral constant expression}}
+  // expected-error at +5 2 {{integral constant expression}}
 #else
   // expected-error at +3 2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif
@@ -124,7 +124,7 @@ int main(int argc, char **argv) {
   // expected-note at +3 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
 #pragma omp target
-#pragma omp teams distribute simd safelen (foobool(1) > 0 ? 1 : 2) // expected-error {{expression is not an integral constant expression}}
+#pragma omp teams distribute simd safelen (foobool(1) > 0 ? 1 : 2) // expected-error {{integral constant expression}}
   for (int i = 4; i < 12; i++)
     argv[0][i] = argv[0][i] - argv[0][i-4];
 
@@ -134,7 +134,7 @@ int main(int argc, char **argv) {
 #pragma omp target
 // expected-error at +3 {{argument to 'safelen' clause must be a strictly positive integer value}}
 // expected-error at +2 2 {{directive '#pragma omp teams distribute simd' cannot contain more than one 'safelen' clause}}
-// expected-error at +1 {{expression is not an integral constant expression}}
+// expected-error at +1 {{integral constant expression}}
 #pragma omp teams distribute simd safelen (foobool(argc)), safelen (true), safelen (-5)
   for (int i = 4; i < 12; i++)
     argv[0][i] = argv[0][i] - argv[0][i-4];
@@ -145,7 +145,7 @@ int main(int argc, char **argv) {
     argv[0][i] = argv[0][i] - argv[0][i-4];
 
 #if __cplusplus <= 199711L
-  // expected-error at +5 {{expression is not an integral constant expression}}
+  // expected-error at +5 {{integral constant expression}}
 #else
   // expected-error at +3 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif

diff  --git a/clang/test/OpenMP/teams_distribute_simd_simdlen_messages.cpp b/clang/test/OpenMP/teams_distribute_simd_simdlen_messages.cpp
index 0a2ccf3da8e0..fe83ffdca020 100644
--- a/clang/test/OpenMP/teams_distribute_simd_simdlen_messages.cpp
+++ b/clang/test/OpenMP/teams_distribute_simd_simdlen_messages.cpp
@@ -36,7 +36,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
   for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST];
 
 #pragma omp target
-#pragma omp teams distribute simd safelen (argc  // expected-note {{to match this '('}} expected-error 2 {{expression is not an integral constant expression}} expected-note 2 {{read of non-const variable 'argc' is not allowed in a constant expression}} expected-error {{expected ')'}}
+#pragma omp teams distribute simd safelen (argc  // expected-note {{to match this '('}} expected-error 2 {{integral constant expression}} expected-note 2 {{read of non-const variable 'argc' is not allowed in a constant expression}} expected-error {{expected ')'}}
   for (int i = ST; i < N; i++) 
     argv[0][i] = argv[0][i] - argv[0][i-ST];
   
@@ -61,7 +61,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
 #pragma omp target
 // expected-error at +3 2 {{directive '#pragma omp teams distribute simd' cannot contain more than one 'safelen' clause}}
 // expected-error at +2 {{argument to 'safelen' clause must be a strictly positive integer value}}
-// expected-error at +1 2 {{expression is not an integral constant expression}}
+// expected-error at +1 2 {{integral constant expression}}
 #pragma omp teams distribute simd safelen (foobool(argc)), safelen (true), safelen (-5)
   for (int i = ST; i < N; i++)
     argv[0][i] = argv[0][i] - argv[0][i-ST];
@@ -72,7 +72,7 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here}}
     argv[0][i] = argv[0][i] - argv[0][i-ST];
 
 #if __cplusplus <= 199711L
-  // expected-error at +5 2 {{expression is not an integral constant expression}}
+  // expected-error at +5 2 {{integral constant expression}}
 #else
   // expected-error at +3 2 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif
@@ -124,7 +124,7 @@ int main(int argc, char **argv) {
   // expected-note at +3 {{non-constexpr function 'foobool' cannot be used in a constant expression}}
 #endif
 #pragma omp target
-#pragma omp teams distribute simd safelen (foobool(1) > 0 ? 1 : 2) // expected-error {{expression is not an integral constant expression}}
+#pragma omp teams distribute simd safelen (foobool(1) > 0 ? 1 : 2) // expected-error {{integral constant expression}}
   for (int i = 4; i < 12; i++)
     argv[0][i] = argv[0][i] - argv[0][i-4];
 
@@ -134,7 +134,7 @@ int main(int argc, char **argv) {
 #pragma omp target
 // expected-error at +3 {{argument to 'safelen' clause must be a strictly positive integer value}}
 // expected-error at +2 2 {{directive '#pragma omp teams distribute simd' cannot contain more than one 'safelen' clause}}
-// expected-error at +1 {{expression is not an integral constant expression}}
+// expected-error at +1 {{integral constant expression}}
 #pragma omp teams distribute simd safelen (foobool(argc)), safelen (true), safelen (-5)
   for (int i = 4; i < 12; i++)
     argv[0][i] = argv[0][i] - argv[0][i-4];
@@ -145,7 +145,7 @@ int main(int argc, char **argv) {
     argv[0][i] = argv[0][i] - argv[0][i-4];
 
 #if __cplusplus <= 199711L
-  // expected-error at +5 {{expression is not an integral constant expression}}
+  // expected-error at +5 {{integral constant expression}}
 #else
   // expected-error at +3 {{integral constant expression must have integral or unscoped enumeration type, not 'char *'}}
 #endif

diff  --git a/clang/test/PCH/cxx-constexpr.cpp b/clang/test/PCH/cxx-constexpr.cpp
index 13f04a79477b..cce3fd851217 100644
--- a/clang/test/PCH/cxx-constexpr.cpp
+++ b/clang/test/PCH/cxx-constexpr.cpp
@@ -16,7 +16,8 @@ const int b = a;
 #else
 
 const int a = 5;
-typedef int T[b]; // expected-error {{variable length array}} expected-error {{must be an integer constant expression}}
+typedef int T[b]; // expected-error {{variable length array}} expected-error {{must be an integer constant expression}} expected-note {{initializer of 'b'}}
+// expected-note at 14 {{here}}
 typedef int T[5];
 
 #endif

diff  --git a/clang/test/Sema/bitfield.c b/clang/test/Sema/bitfield.c
index 13e9480a378b..03b2a22d3ed9 100644
--- a/clang/test/Sema/bitfield.c
+++ b/clang/test/Sema/bitfield.c
@@ -8,7 +8,7 @@ struct a {
   // rdar://6081627
   int b : 33; // expected-error{{width of bit-field 'b' (33 bits) exceeds width of its type (32 bits)}}
 
-  int c : (1 + 0.25); // expected-error{{expression is not an integer constant expression}}
+  int c : (1 + 0.25); // expected-error{{integer constant expression must have integer type}}
   int d : (int)(1 + 0.25); 
 
   // rdar://6138816

diff  --git a/clang/test/Sema/c89.c b/clang/test/Sema/c89.c
index 89eda9362608..1c0494d8e5a3 100644
--- a/clang/test/Sema/c89.c
+++ b/clang/test/Sema/c89.c
@@ -65,7 +65,7 @@ void test10 (int x[*]); /* expected-warning {{variable length arrays are a C99 f
 void test11 (int x[static 4]); /* expected-warning {{static array size is a C99 feature}} */
 
 void test12 (int x[const 4]) { /* expected-warning {{qualifier in array size is a C99 feature}} */
-  int Y[x[1]]; /* expected-warning {{variable length arrays are a C99 feature}} */
+  int Y[x[1]]; /* expected-warning {{variable length arrays are a C99 feature}} expected-note {{parameter 'x'}} */
 }
 
 /* PR4074 */

diff  --git a/clang/test/Sema/complex-int.c b/clang/test/Sema/complex-int.c
index 52ea44dd77fb..f73b338c4010 100644
--- a/clang/test/Sema/complex-int.c
+++ b/clang/test/Sema/complex-int.c
@@ -22,8 +22,8 @@ switch (arr) { // expected-error{{statement requires expression of integer type
   case xx: ;
 }
 switch (ii) {
-  case brr: ; // expected-error{{expression is not an integer constant expression}}
-  case xx: ; // expected-error{{expression is not an integer constant expression}}
+  case brr: ; // expected-error{{integer constant expression must have integer type}}
+  case xx: ; // expected-error{{integer constant expression must have integer type}}
 }
 }
 

diff  --git a/clang/test/Sema/warn-vla.c b/clang/test/Sema/warn-vla.c
index 01fe45173bbb..28b8a72877a0 100644
--- a/clang/test/Sema/warn-vla.c
+++ b/clang/test/Sema/warn-vla.c
@@ -2,11 +2,11 @@
 // RUN: %clang_cc1 -std=c89 -fsyntax-only -verify -Wvla %s
 
 void test1(int n) {
-  int v[n]; // expected-warning {{variable length array used}}
+  int v[n]; // expected-warning {{variable length array}}
 }
 
-void test2(int n, int v[n]) { // expected-warning {{variable length array used}}
+void test2(int n, int v[n]) { // expected-warning {{variable length array}}
 }
 
-void test3(int n, int v[n]); // expected-warning {{variable length array used}}
+void test3(int n, int v[n]); // expected-warning {{variable length array}}
 

diff  --git a/clang/test/SemaCXX/c99-variable-length-array-cxx11.cpp b/clang/test/SemaCXX/c99-variable-length-array-cxx11.cpp
index 68858410ec76..20eceec5032d 100644
--- a/clang/test/SemaCXX/c99-variable-length-array-cxx11.cpp
+++ b/clang/test/SemaCXX/c99-variable-length-array-cxx11.cpp
@@ -17,13 +17,13 @@ struct POD {
 };
 
 // We allow VLAs of POD types, only.
-void vla(int N) {
-  int array1[N]; // expected-warning{{variable length arrays are a C99 feature}}
-  POD array2[N]; // expected-warning{{variable length arrays are a C99 feature}}
-  StillPOD array3[N]; // expected-warning{{variable length arrays are a C99 feature}}
-  StillPOD2 array4[N][3]; // expected-warning{{variable length arrays are a C99 feature}}
+void vla(int N) { // expected-note 5{{here}}
+  int array1[N]; // expected-warning{{variable length arrays are a C99 feature}} expected-note {{variable 'N'}}
+  POD array2[N]; // expected-warning{{variable length arrays are a C99 feature}} expected-note {{variable 'N'}}
+  StillPOD array3[N]; // expected-warning{{variable length arrays are a C99 feature}} expected-note {{variable 'N'}}
+  StillPOD2 array4[N][3]; // expected-warning{{variable length arrays are a C99 feature}} expected-note {{variable 'N'}}
   NonPOD array5[N]; // expected-error{{no matching constructor for initialization of 'NonPOD [N]'}}
-  // expected-warning at -1{{variable length arrays are a C99 feature}}
+  // expected-warning at -1{{variable length arrays are a C99 feature}} expected-note at -1 {{variable 'N'}}
   // expected-note at -16{{candidate constructor not viable}}
   // expected-note at -18{{candidate constructor (the implicit copy constructor) not viable}}
   // expected-note at -19{{candidate constructor (the implicit move constructor) not viable}}

diff  --git a/clang/test/SemaCXX/c99-variable-length-array.cpp b/clang/test/SemaCXX/c99-variable-length-array.cpp
index 5fd7e3749f7d..d5c3845d1e2f 100644
--- a/clang/test/SemaCXX/c99-variable-length-array.cpp
+++ b/clang/test/SemaCXX/c99-variable-length-array.cpp
@@ -12,6 +12,9 @@ struct POD {
   int y;
 };
 
+// expected-note@* 1+{{read of non-const variable}}
+// expected-note@* 1+{{declared here}}
+
 // We allow VLAs of POD types, only.
 void vla(int N) {
   int array1[N]; // expected-warning{{variable length arrays are a C99 feature}}
@@ -74,7 +77,7 @@ void test_accept_array(int N) {
 }
 
 // Variably-modified types cannot be used in local classes.
-void local_classes(int N) { // expected-note {{declared here}}
+void local_classes(int N) {
   struct X {
     int size;
     int array[N]; // expected-error{{fields must have a constant size: 'variable length array in structure' extension will never be supported}} \
@@ -97,7 +100,7 @@ namespace rdar8020206 {
   template<typename T>
   void f(int i) {
     const unsigned value = i;
-    int array[value * i]; // expected-warning 2{{variable length arrays are a C99 feature}}
+    int array[value * i]; // expected-warning 2{{variable length arrays are a C99 feature}} expected-note 2{{initializer of 'value' is not a constant}}
   }
 
   template void f<int>(int); // expected-note{{instantiation of}}
@@ -149,7 +152,7 @@ namespace pr18633 {
   const int A1::sz2 = 11;
   template<typename T>
   void func () {
-    int arr[A1::sz]; // expected-warning{{variable length arrays are a C99 feature}}
+    int arr[A1::sz]; // expected-warning{{variable length arrays are a C99 feature}} expected-note {{initializer of 'sz' is unknown}}
   }
   template<typename T>
   void func2 () {

diff  --git a/clang/test/SemaCXX/constant-expression-cxx11.cpp b/clang/test/SemaCXX/constant-expression-cxx11.cpp
index c3529fc68266..4b844177790a 100644
--- a/clang/test/SemaCXX/constant-expression-cxx11.cpp
+++ b/clang/test/SemaCXX/constant-expression-cxx11.cpp
@@ -1567,8 +1567,8 @@ namespace RecursiveOpaqueExpr {
 
 namespace VLASizeof {
 
-  void f(int k) {
-    int arr[k]; // expected-warning {{C99}}
+  void f(int k) { // expected-note {{here}}
+    int arr[k]; // expected-warning {{C99}} expected-note {{non-const variable 'k'}}
     constexpr int n = 1 +
         sizeof(arr) // expected-error {{constant expression}}
         * 3;

diff  --git a/clang/test/SemaCXX/constant-expression.cpp b/clang/test/SemaCXX/constant-expression.cpp
index 69e846bf0ec2..82f9657d84f6 100644
--- a/clang/test/SemaCXX/constant-expression.cpp
+++ b/clang/test/SemaCXX/constant-expression.cpp
@@ -107,15 +107,15 @@ extern const int recurse1;
 // recurse2 cannot be used in a constant expression because it is not
 // initialized by a constant expression. The same expression appearing later in
 // the TU would be a constant expression, but here it is not.
-const int recurse2 = recurse1;
+const int recurse2 = recurse1; // expected-note {{here}}
 const int recurse1 = 1;
 int array1[recurse1]; // ok
-int array2[recurse2]; // expected-warning {{variable length array}} expected-warning {{integer constant expression}}
+int array2[recurse2]; // expected-warning {{variable length array}} expected-warning {{integer constant expression}} expected-note {{initializer of 'recurse2' is not a constant expression}}
 
 namespace FloatConvert {
   typedef int a[(int)42.3];
   typedef int a[(int)42.997];
-  typedef int b[(long long)4e20]; // expected-warning {{variable length}} expected-error {{variable length}} expected-warning {{'long long' is a C++11 extension}}
+  typedef int b[(long long)4e20]; // expected-warning {{variable length}} expected-error {{variable length}} expected-warning {{'long long' is a C++11 extension}} expected-note {{value 4.0E+20 is outside the range of representable values}}
 }
 
 // PR12626

diff  --git a/clang/test/SemaCXX/vla-consruct.cpp b/clang/test/SemaCXX/vla-construct.cpp
similarity index 85%
rename from clang/test/SemaCXX/vla-consruct.cpp
rename to clang/test/SemaCXX/vla-construct.cpp
index 09b73704eb07..32526c24b0e0 100644
--- a/clang/test/SemaCXX/vla-consruct.cpp
+++ b/clang/test/SemaCXX/vla-construct.cpp
@@ -23,8 +23,8 @@ void print(int n, int a, int b, int c, int d) {
 void test(int n) {
   S array_t[n][n+1];
 # ifdef PE
-   // expected-error at -2 {{variable length arrays are a C99 feature}}
-   // expected-error at -3 {{variable length arrays are a C99 feature}}
+   // expected-error at -2 {{variable length arrays are a C99 feature}} expected-note at -2 {{read of non-const}} expected-note at -3 {{here}}
+   // expected-error at -3 {{variable length arrays are a C99 feature}} expected-note at -3 {{read of non-const}} expected-note at -4 {{here}}
 # endif
   int sizeof_S = sizeof(S);
   int sizeof_array_t_0_0 = sizeof(array_t[0][0]);
@@ -38,11 +38,11 @@ int main()
   try {
     test(2);
   } catch(int e) {
-    printf("expeption %d\n", e);
+    printf("exception %d\n", e);
   }
   try {
     test(3);
   } catch(int e) {
-    printf("expeption %d", e);
+    printf("exception %d", e);
   }
 }

diff  --git a/clang/test/SemaCXX/warn-vla.cpp b/clang/test/SemaCXX/warn-vla.cpp
index 081f1c7b21a8..3514264efb2a 100644
--- a/clang/test/SemaCXX/warn-vla.cpp
+++ b/clang/test/SemaCXX/warn-vla.cpp
@@ -1,27 +1,27 @@
 // RUN: %clang_cc1 -fsyntax-only -verify -Wvla %s
 
-void test1(int n) {
-  int v[n]; // expected-warning {{variable length array used}}
+void test1(int n) { // expected-note {{here}}
+  int v[n]; // expected-warning {{variable length array}} expected-note {{variable 'n'}}
 }
 
-void test2(int n, int v[n]) { // expected-warning {{variable length array used}}
+void test2(int n, int v[n]) { // expected-warning {{variable length array}} expected-note {{variable 'n'}} expected-note {{here}}
 }
 
-void test3(int n, int v[n]); // expected-warning {{variable length array used}}
+void test3(int n, int v[n]); // expected-warning {{variable length array}} expected-note {{variable 'n'}} expected-note {{here}}
 
 template<typename T>
-void test4(int n) {
-  int v[n]; // expected-warning {{variable length array used}}
+void test4(int n) { // expected-note {{here}}
+  int v[n]; // expected-warning {{variable length array}} expected-note {{variable 'n'}}
 }
 
 template<typename T>
-void test5(int n, int v[n]) { // expected-warning {{variable length array used}}
+void test5(int n, int v[n]) { // expected-warning {{variable length array}} expected-note {{variable 'n'}} expected-note {{here}}
 }
 
 template<typename T>
-void test6(int n, int v[n]); // expected-warning {{variable length array used}}
+void test6(int n, int v[n]); // expected-warning {{variable length array}} expected-note {{variable 'n'}} expected-note {{here}}
 
 template<typename T>
-void test7(int n, T v[n]) { // expected-warning {{variable length array used}}
+void test7(int n, T v[n]) { // expected-warning {{variable length array}} expected-note {{variable 'n'}} expected-note {{here}}
 }
 

diff  --git a/clang/test/SemaObjC/class-bitfield.m b/clang/test/SemaObjC/class-bitfield.m
index a225d1157f5f..07d690a94a9d 100644
--- a/clang/test/SemaObjC/class-bitfield.m
+++ b/clang/test/SemaObjC/class-bitfield.m
@@ -7,7 +7,7 @@ @interface X
   // rdar://6081627
   int b : 33; // expected-error{{width of bit-field 'b' (33 bits) exceeds width of its type (32 bits)}}
 
-  int c : (1 + 0.25); // expected-error{{expression is not an integer constant expression}}
+  int c : (1 + 0.25); // expected-error{{integer constant expression must have integer type}}
   int d : (int)(1 + 0.25); 
 
   // rdar://6138816

diff  --git a/clang/test/SemaTemplate/instantiate-self.cpp b/clang/test/SemaTemplate/instantiate-self.cpp
index 7ada925d2d42..78f54ae7752f 100644
--- a/clang/test/SemaTemplate/instantiate-self.cpp
+++ b/clang/test/SemaTemplate/instantiate-self.cpp
@@ -62,10 +62,11 @@ namespace test5 {
 namespace test6 {
   template<typename T> constexpr T f(T);
   template<typename T> constexpr T g(T t) {
-    typedef int arr[f(T())]; // expected-error {{variable length array}}
+    // FIXME: It'd be nice to say that the function is currently being defined, rather than being undefined.
+    typedef int arr[f(T())]; // expected-error {{variable length array}} expected-note {{undefined function 'f<int>'}}
     return t;
   }
-  template<typename T> constexpr T f(T t) {
+  template<typename T> constexpr T f(T t) { // expected-note {{declared here}}
     typedef int arr[g(T())]; // expected-error {{zero size array}} expected-note {{instantiation of}}
     return t;
   }


        


More information about the cfe-commits mailing list