<div dir="ltr">It triggered a test failure for targeting i686 (seems also for arm)<div>See also; <a href="http://bb.pgr.jp/builders/test-clang-i686-linux-RA/builds/3566">http://bb.pgr.jp/builders/test-clang-i686-linux-RA/builds/3566</a></div></div><br><div class="gmail_quote"><div dir="ltr">On Tue, Jun 13, 2017 at 6:59 AM Nick Lewycky via cfe-commits <<a href="mailto:cfe-commits@lists.llvm.org">cfe-commits@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: nicholas<br>
Date: Mon Jun 12 16:59:18 2017<br>
New Revision: 305239<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=305239&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=305239&view=rev</a><br>
Log:<br>
Revert r301742 which made ExprConstant checking apply to all full-exprs.<br>
<br>
This patch also exposed pre-existing bugs in clang, see PR32864 and PR33140#c3 .<br>
<br>
Modified:<br>
    cfe/trunk/include/clang/Sema/Sema.h<br>
    cfe/trunk/lib/AST/ExprConstant.cpp<br>
    cfe/trunk/lib/Sema/SemaChecking.cpp<br>
    cfe/trunk/test/OpenMP/distribute_parallel_for_simd_aligned_messages.cpp<br>
    cfe/trunk/test/OpenMP/distribute_simd_aligned_messages.cpp<br>
    cfe/trunk/test/OpenMP/for_simd_aligned_messages.cpp<br>
    cfe/trunk/test/OpenMP/parallel_for_simd_aligned_messages.cpp<br>
    cfe/trunk/test/OpenMP/simd_aligned_messages.cpp<br>
    cfe/trunk/test/OpenMP/target_parallel_for_simd_aligned_messages.cpp<br>
    cfe/trunk/test/OpenMP/target_simd_aligned_messages.cpp<br>
    cfe/trunk/test/OpenMP/target_teams_distribute_parallel_for_simd_aligned_messages.cpp<br>
    cfe/trunk/test/OpenMP/target_teams_distribute_simd_aligned_messages.cpp<br>
    cfe/trunk/test/OpenMP/taskloop_simd_aligned_messages.cpp<br>
    cfe/trunk/test/OpenMP/teams_distribute_parallel_for_simd_aligned_messages.cpp<br>
    cfe/trunk/test/OpenMP/teams_distribute_simd_aligned_messages.cpp<br>
    cfe/trunk/test/Sema/integer-overflow.c<br>
<br>
Modified: cfe/trunk/include/clang/Sema/Sema.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Sema/Sema.h?rev=305239&r1=305238&r2=305239&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Sema/Sema.h?rev=305239&r1=305238&r2=305239&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/include/clang/Sema/Sema.h (original)<br>
+++ cfe/trunk/include/clang/Sema/Sema.h Mon Jun 12 16:59:18 2017<br>
@@ -10273,6 +10273,7 @@ private:<br>
   void CheckFloatComparison(SourceLocation Loc, Expr* LHS, Expr* RHS);<br>
   void CheckImplicitConversions(Expr *E, SourceLocation CC = SourceLocation());<br>
   void CheckBoolLikeConversion(Expr *E, SourceLocation CC);<br>
+  void CheckForIntOverflow(Expr *E);<br>
   void CheckUnsequencedOperations(Expr *E);<br>
<br>
   /// \brief Perform semantic checks on a completed expression. This will either<br>
<br>
Modified: cfe/trunk/lib/AST/ExprConstant.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/ExprConstant.cpp?rev=305239&r1=305238&r2=305239&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/ExprConstant.cpp?rev=305239&r1=305238&r2=305239&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/lib/AST/ExprConstant.cpp (original)<br>
+++ cfe/trunk/lib/AST/ExprConstant.cpp Mon Jun 12 16:59:18 2017<br>
@@ -6226,10 +6226,6 @@ bool RecordExprEvaluator::VisitInitListE<br>
     // the initializer list.<br>
     ImplicitValueInitExpr VIE(HaveInit ? Info.Ctx.IntTy : Field->getType());<br>
     const Expr *Init = HaveInit ? E->getInit(ElementNo++) : &VIE;<br>
-    if (Init->isValueDependent()) {<br>
-      Success = false;<br>
-      continue;<br>
-    }<br>
<br>
     // Temporarily override This, in case there's a CXXDefaultInitExpr in here.<br>
     ThisOverrideRAII ThisOverride(*Info.CurrentCall, &This,<br>
@@ -9940,8 +9936,7 @@ static bool EvaluateAsRValue(EvalInfo &I<br>
 }<br>
<br>
 static bool FastEvaluateAsRValue(const Expr *Exp, Expr::EvalResult &Result,<br>
-                                 const ASTContext &Ctx, bool &IsConst,<br>
-                                 bool IsCheckingForOverflow) {<br>
+                                 const ASTContext &Ctx, bool &IsConst) {<br>
   // Fast-path evaluations of integer literals, since we sometimes see files<br>
   // containing vast quantities of these.<br>
   if (const IntegerLiteral *L = dyn_cast<IntegerLiteral>(Exp)) {<br>
@@ -9962,7 +9957,7 @@ static bool FastEvaluateAsRValue(const E<br>
   // performance problems. Only do so in C++11 for now.<br>
   if (Exp->isRValue() && (Exp->getType()->isArrayType() ||<br>
                           Exp->getType()->isRecordType()) &&<br>
-      !Ctx.getLangOpts().CPlusPlus11 && !IsCheckingForOverflow) {<br>
+      !Ctx.getLangOpts().CPlusPlus11) {<br>
     IsConst = false;<br>
     return true;<br>
   }<br>
@@ -9977,7 +9972,7 @@ static bool FastEvaluateAsRValue(const E<br>
 /// will be applied to the result.<br>
 bool Expr::EvaluateAsRValue(EvalResult &Result, const ASTContext &Ctx) const {<br>
   bool IsConst;<br>
-  if (FastEvaluateAsRValue(this, Result, Ctx, IsConst, false))<br>
+  if (FastEvaluateAsRValue(this, Result, Ctx, IsConst))<br>
     return IsConst;<br>
<br>
   EvalInfo Info(Ctx, Result, EvalInfo::EM_IgnoreSideEffects);<br>
@@ -10102,7 +10097,7 @@ APSInt Expr::EvaluateKnownConstInt(const<br>
 void Expr::EvaluateForOverflow(const ASTContext &Ctx) const {<br>
   bool IsConst;<br>
   EvalResult EvalResult;<br>
-  if (!FastEvaluateAsRValue(this, EvalResult, Ctx, IsConst, true)) {<br>
+  if (!FastEvaluateAsRValue(this, EvalResult, Ctx, IsConst)) {<br>
     EvalInfo Info(Ctx, EvalResult, EvalInfo::EM_EvaluateForOverflow);<br>
     (void)::EvaluateAsRValue(Info, this, EvalResult.Val);<br>
   }<br>
<br>
Modified: cfe/trunk/lib/Sema/SemaChecking.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaChecking.cpp?rev=305239&r1=305238&r2=305239&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaChecking.cpp?rev=305239&r1=305238&r2=305239&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/lib/Sema/SemaChecking.cpp (original)<br>
+++ cfe/trunk/lib/Sema/SemaChecking.cpp Mon Jun 12 16:59:18 2017<br>
@@ -9935,6 +9935,28 @@ void Sema::CheckBoolLikeConversion(Expr<br>
   ::CheckBoolLikeConversion(*this, E, CC);<br>
 }<br>
<br>
+/// Diagnose when expression is an integer constant expression and its evaluation<br>
+/// results in integer overflow<br>
+void Sema::CheckForIntOverflow (Expr *E) {<br>
+  // Use a work list to deal with nested struct initializers.<br>
+  SmallVector<Expr *, 2> Exprs(1, E);<br>
+<br>
+  do {<br>
+    Expr *E = Exprs.pop_back_val();<br>
+<br>
+    if (isa<BinaryOperator>(E->IgnoreParenCasts())) {<br>
+      E->IgnoreParenCasts()->EvaluateForOverflow(Context);<br>
+      continue;<br>
+    }<br>
+<br>
+    if (auto InitList = dyn_cast<InitListExpr>(E))<br>
+      Exprs.append(InitList->inits().begin(), InitList->inits().end());<br>
+<br>
+    if (isa<ObjCBoxedExpr>(E))<br>
+      E->IgnoreParenCasts()->EvaluateForOverflow(Context);<br>
+  } while (!Exprs.empty());<br>
+}<br>
+<br>
 namespace {<br>
 /// \brief Visitor for expressions which looks for unsequenced operations on the<br>
 /// same object.<br>
@@ -10436,7 +10458,7 @@ void Sema::CheckCompletedExpr(Expr *E, S<br>
   if (!E->isInstantiationDependent())<br>
     CheckUnsequencedOperations(E);<br>
   if (!IsConstexpr && !E->isValueDependent())<br>
-    E->EvaluateForOverflow(Context);<br>
+    CheckForIntOverflow(E);<br>
   DiagnoseMisalignedMembers();<br>
 }<br>
<br>
<br>
Modified: cfe/trunk/test/OpenMP/distribute_parallel_for_simd_aligned_messages.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/OpenMP/distribute_parallel_for_simd_aligned_messages.cpp?rev=305239&r1=305238&r2=305239&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/OpenMP/distribute_parallel_for_simd_aligned_messages.cpp?rev=305239&r1=305238&r2=305239&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/test/OpenMP/distribute_parallel_for_simd_aligned_messages.cpp (original)<br>
+++ cfe/trunk/test/OpenMP/distribute_parallel_for_simd_aligned_messages.cpp Mon Jun 12 16:59:18 2017<br>
@@ -134,8 +134,9 @@ S3 h; // expected-note 2 {{'h' defined h<br>
 template<class I, class C> int foomain(I argc, C **argv) {<br>
   I e(argc);<br>
   I g(argc);<br>
-  int i; // expected-note {{'i' defined here}}<br>
-  // expected-note@+1 {{declared here}}<br>
+  int i; // expected-note {{declared here}} expected-note {{'i' defined here}}<br>
+  // expected-note@+2 {{declared here}}<br>
+  // expected-note@+1 {{reference to 'i' is not a constant expression}}<br>
   int &j = i;<br>
<br>
 #pragma omp target<br>
<br>
Modified: cfe/trunk/test/OpenMP/distribute_simd_aligned_messages.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/OpenMP/distribute_simd_aligned_messages.cpp?rev=305239&r1=305238&r2=305239&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/OpenMP/distribute_simd_aligned_messages.cpp?rev=305239&r1=305238&r2=305239&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/test/OpenMP/distribute_simd_aligned_messages.cpp (original)<br>
+++ cfe/trunk/test/OpenMP/distribute_simd_aligned_messages.cpp Mon Jun 12 16:59:18 2017<br>
@@ -134,8 +134,9 @@ S3 h; // expected-note 2 {{'h' defined h<br>
 template<class I, class C> int foomain(I argc, C **argv) {<br>
   I e(argc);<br>
   I g(argc);<br>
-  int i; // expected-note {{'i' defined here}}<br>
-  // expected-note@+1 {{declared here}}<br>
+  int i; // expected-note {{declared here}} expected-note {{'i' defined here}}<br>
+  // expected-note@+2 {{declared here}}<br>
+  // expected-note@+1 {{reference to 'i' is not a constant expression}}<br>
   int &j = i;<br>
<br>
 #pragma omp target<br>
<br>
Modified: cfe/trunk/test/OpenMP/for_simd_aligned_messages.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/OpenMP/for_simd_aligned_messages.cpp?rev=305239&r1=305238&r2=305239&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/OpenMP/for_simd_aligned_messages.cpp?rev=305239&r1=305238&r2=305239&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/test/OpenMP/for_simd_aligned_messages.cpp (original)<br>
+++ cfe/trunk/test/OpenMP/for_simd_aligned_messages.cpp Mon Jun 12 16:59:18 2017<br>
@@ -107,8 +107,9 @@ S3 h; // expected-note 2 {{'h' defined h<br>
 template<class I, class C> int foomain(I argc, C **argv) {<br>
   I e(argc);<br>
   I g(argc);<br>
-  int i; // expected-note {{'i' defined here}}<br>
-  // expected-note@+1 {{declared here}}<br>
+  int i; // expected-note {{declared here}} expected-note {{'i' defined here}}<br>
+  // expected-note@+2 {{declared here}}<br>
+  // expected-note@+1 {{reference to 'i' is not a constant expression}}<br>
   int &j = i;<br>
   #pragma omp for simd aligned // expected-error {{expected '(' after 'aligned'}}<br>
   for (I k = 0; k < argc; ++k) ++k;<br>
<br>
Modified: cfe/trunk/test/OpenMP/parallel_for_simd_aligned_messages.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/OpenMP/parallel_for_simd_aligned_messages.cpp?rev=305239&r1=305238&r2=305239&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/OpenMP/parallel_for_simd_aligned_messages.cpp?rev=305239&r1=305238&r2=305239&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/test/OpenMP/parallel_for_simd_aligned_messages.cpp (original)<br>
+++ cfe/trunk/test/OpenMP/parallel_for_simd_aligned_messages.cpp Mon Jun 12 16:59:18 2017<br>
@@ -107,8 +107,9 @@ S3 h; // expected-note 2 {{'h' defined h<br>
 template<class I, class C> int foomain(I argc, C **argv) {<br>
   I e(argc);<br>
   I g(argc);<br>
-  int i; // expected-note {{'i' defined here}}<br>
-  // expected-note@+1 {{declared here}}<br>
+  int i; // expected-note {{declared here}} expected-note {{'i' defined here}}<br>
+  // expected-note@+2 {{declared here}}<br>
+  // expected-note@+1 {{reference to 'i' is not a constant expression}}<br>
   int &j = i;<br>
   #pragma omp parallel for simd aligned // expected-error {{expected '(' after 'aligned'}}<br>
   for (I k = 0; k < argc; ++k) ++k;<br>
<br>
Modified: cfe/trunk/test/OpenMP/simd_aligned_messages.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/OpenMP/simd_aligned_messages.cpp?rev=305239&r1=305238&r2=305239&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/OpenMP/simd_aligned_messages.cpp?rev=305239&r1=305238&r2=305239&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/test/OpenMP/simd_aligned_messages.cpp (original)<br>
+++ cfe/trunk/test/OpenMP/simd_aligned_messages.cpp Mon Jun 12 16:59:18 2017<br>
@@ -107,8 +107,9 @@ S3 h; // expected-note 2 {{'h' defined h<br>
 template<class I, class C> int foomain(I argc, C **argv) {<br>
   I e(argc);<br>
   I g(argc);<br>
-  int i; // expected-note {{'i' defined here}}<br>
-  // expected-note@+1 {{declared here}}<br>
+  int i; // expected-note {{declared here}} expected-note {{'i' defined here}}<br>
+  // expected-note@+2 {{declared here}}<br>
+  // expected-note@+1 {{reference to 'i' is not a constant expression}}<br>
   int &j = i;<br>
   #pragma omp simd aligned // expected-error {{expected '(' after 'aligned'}}<br>
   for (I k = 0; k < argc; ++k) ++k;<br>
<br>
Modified: cfe/trunk/test/OpenMP/target_parallel_for_simd_aligned_messages.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/OpenMP/target_parallel_for_simd_aligned_messages.cpp?rev=305239&r1=305238&r2=305239&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/OpenMP/target_parallel_for_simd_aligned_messages.cpp?rev=305239&r1=305238&r2=305239&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/test/OpenMP/target_parallel_for_simd_aligned_messages.cpp (original)<br>
+++ cfe/trunk/test/OpenMP/target_parallel_for_simd_aligned_messages.cpp Mon Jun 12 16:59:18 2017<br>
@@ -107,8 +107,9 @@ S3 h; // expected-note 2 {{'h' defined h<br>
 template<class I, class C> int foomain(I argc, C **argv) {<br>
   I e(argc);<br>
   I g(argc);<br>
-  int i; // expected-note {{'i' defined here}}<br>
-  // expected-note@+1 {{declared here}}<br>
+  int i; // expected-note {{declared here}} expected-note {{'i' defined here}}<br>
+  // expected-note@+2 {{declared here}}<br>
+  // expected-note@+1 {{reference to 'i' is not a constant expression}}<br>
   int &j = i;<br>
   #pragma omp target parallel for simd aligned // expected-error {{expected '(' after 'aligned'}}<br>
   for (I k = 0; k < argc; ++k) ++k;<br>
<br>
Modified: cfe/trunk/test/OpenMP/target_simd_aligned_messages.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/OpenMP/target_simd_aligned_messages.cpp?rev=305239&r1=305238&r2=305239&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/OpenMP/target_simd_aligned_messages.cpp?rev=305239&r1=305238&r2=305239&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/test/OpenMP/target_simd_aligned_messages.cpp (original)<br>
+++ cfe/trunk/test/OpenMP/target_simd_aligned_messages.cpp Mon Jun 12 16:59:18 2017<br>
@@ -107,8 +107,9 @@ S3 h; // expected-note 2 {{'h' defined h<br>
 template<class I, class C> int foomain(I argc, C **argv) {<br>
   I e(argc);<br>
   I g(argc);<br>
-  int i; // expected-note {{'i' defined here}}<br>
-  // expected-note@+1 {{declared here}}<br>
+  int i; // expected-note {{declared here}} expected-note {{'i' defined here}}<br>
+  // expected-note@+2 {{declared here}}<br>
+  // expected-note@+1 {{reference to 'i' is not a constant expression}}<br>
   int &j = i;<br>
   #pragma omp target simd aligned // expected-error {{expected '(' after 'aligned'}}<br>
   for (I k = 0; k < argc; ++k) ++k;<br>
<br>
Modified: cfe/trunk/test/OpenMP/target_teams_distribute_parallel_for_simd_aligned_messages.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/OpenMP/target_teams_distribute_parallel_for_simd_aligned_messages.cpp?rev=305239&r1=305238&r2=305239&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/OpenMP/target_teams_distribute_parallel_for_simd_aligned_messages.cpp?rev=305239&r1=305238&r2=305239&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/test/OpenMP/target_teams_distribute_parallel_for_simd_aligned_messages.cpp (original)<br>
+++ cfe/trunk/test/OpenMP/target_teams_distribute_parallel_for_simd_aligned_messages.cpp Mon Jun 12 16:59:18 2017<br>
@@ -110,8 +110,9 @@ S3 h; // expected-note 2 {{'h' defined h<br>
 template<class I, class C> int foomain(I argc, C **argv) {<br>
   I e(argc);<br>
   I g(argc);<br>
-  int i; // expected-note {{'i' defined here}}<br>
-  // expected-note@+1 {{declared here}}<br>
+  int i; // expected-note {{declared here}} expected-note {{'i' defined here}}<br>
+  // expected-note@+2 {{declared here}}<br>
+  // expected-note@+1 {{reference to 'i' is not a constant expression}}<br>
   int &j = i;<br>
<br>
 #pragma omp target teams distribute parallel for simd aligned // expected-error {{expected '(' after 'aligned'}}<br>
<br>
Modified: cfe/trunk/test/OpenMP/target_teams_distribute_simd_aligned_messages.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/OpenMP/target_teams_distribute_simd_aligned_messages.cpp?rev=305239&r1=305238&r2=305239&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/OpenMP/target_teams_distribute_simd_aligned_messages.cpp?rev=305239&r1=305238&r2=305239&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/test/OpenMP/target_teams_distribute_simd_aligned_messages.cpp (original)<br>
+++ cfe/trunk/test/OpenMP/target_teams_distribute_simd_aligned_messages.cpp Mon Jun 12 16:59:18 2017<br>
@@ -110,8 +110,9 @@ S3 h; // expected-note 2 {{'h' defined h<br>
 template<class I, class C> int foomain(I argc, C **argv) {<br>
   I e(argc);<br>
   I g(argc);<br>
-  int i; // expected-note {{'i' defined here}}<br>
-  // expected-note@+1 {{declared here}}<br>
+  int i; // expected-note {{declared here}} expected-note {{'i' defined here}}<br>
+  // expected-note@+2 {{declared here}}<br>
+  // expected-note@+1 {{reference to 'i' is not a constant expression}}<br>
   int &j = i;<br>
<br>
 #pragma omp target teams distribute simd aligned // expected-error {{expected '(' after 'aligned'}}<br>
<br>
Modified: cfe/trunk/test/OpenMP/taskloop_simd_aligned_messages.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/OpenMP/taskloop_simd_aligned_messages.cpp?rev=305239&r1=305238&r2=305239&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/OpenMP/taskloop_simd_aligned_messages.cpp?rev=305239&r1=305238&r2=305239&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/test/OpenMP/taskloop_simd_aligned_messages.cpp (original)<br>
+++ cfe/trunk/test/OpenMP/taskloop_simd_aligned_messages.cpp Mon Jun 12 16:59:18 2017<br>
@@ -107,8 +107,9 @@ S3 h; // expected-note 2 {{'h' defined h<br>
 template<class I, class C> int foomain(I argc, C **argv) {<br>
   I e(argc);<br>
   I g(argc);<br>
-  int i; // expected-note {{'i' defined here}}<br>
-  // expected-note@+1 {{declared here}}<br>
+  int i; // expected-note {{declared here}} expected-note {{'i' defined here}}<br>
+  // expected-note@+2 {{declared here}}<br>
+  // expected-note@+1 {{reference to 'i' is not a constant expression}}<br>
   int &j = i;<br>
   #pragma omp taskloop simd aligned // expected-error {{expected '(' after 'aligned'}}<br>
   for (I k = 0; k < argc; ++k) ++k;<br>
<br>
Modified: cfe/trunk/test/OpenMP/teams_distribute_parallel_for_simd_aligned_messages.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/OpenMP/teams_distribute_parallel_for_simd_aligned_messages.cpp?rev=305239&r1=305238&r2=305239&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/OpenMP/teams_distribute_parallel_for_simd_aligned_messages.cpp?rev=305239&r1=305238&r2=305239&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/test/OpenMP/teams_distribute_parallel_for_simd_aligned_messages.cpp (original)<br>
+++ cfe/trunk/test/OpenMP/teams_distribute_parallel_for_simd_aligned_messages.cpp Mon Jun 12 16:59:18 2017<br>
@@ -123,8 +123,9 @@ S3 h; // expected-note 2 {{'h' defined h<br>
 template<class I, class C> int foomain(I argc, C **argv) {<br>
   I e(argc);<br>
   I g(argc);<br>
-  int i; // expected-note {{'i' defined here}}<br>
-  // expected-note@+1 {{declared here}}<br>
+  int i; // expected-note {{declared here}} expected-note {{'i' defined here}}<br>
+  // expected-note@+2 {{declared here}}<br>
+  // expected-note@+1 {{reference to 'i' is not a constant expression}}<br>
   int &j = i;<br>
<br>
 #pragma omp target<br>
<br>
Modified: cfe/trunk/test/OpenMP/teams_distribute_simd_aligned_messages.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/OpenMP/teams_distribute_simd_aligned_messages.cpp?rev=305239&r1=305238&r2=305239&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/OpenMP/teams_distribute_simd_aligned_messages.cpp?rev=305239&r1=305238&r2=305239&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/test/OpenMP/teams_distribute_simd_aligned_messages.cpp (original)<br>
+++ cfe/trunk/test/OpenMP/teams_distribute_simd_aligned_messages.cpp Mon Jun 12 16:59:18 2017<br>
@@ -123,8 +123,9 @@ S3 h; // expected-note 2 {{'h' defined h<br>
 template<class I, class C> int foomain(I argc, C **argv) {<br>
   I e(argc);<br>
   I g(argc);<br>
-  int i; // expected-note {{'i' defined here}}<br>
-  // expected-note@+1 {{declared here}}<br>
+  int i; // expected-note {{declared here}} expected-note {{'i' defined here}}<br>
+  // expected-note@+2 {{declared here}}<br>
+  // expected-note@+1 {{reference to 'i' is not a constant expression}}<br>
   int &j = i;<br>
<br>
 #pragma omp target<br>
<br>
Modified: cfe/trunk/test/Sema/integer-overflow.c<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Sema/integer-overflow.c?rev=305239&r1=305238&r2=305239&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Sema/integer-overflow.c?rev=305239&r1=305238&r2=305239&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/test/Sema/integer-overflow.c (original)<br>
+++ cfe/trunk/test/Sema/integer-overflow.c Mon Jun 12 16:59:18 2017<br>
@@ -152,13 +152,7 @@ uint64_t check_integer_overflows(int i)<br>
   uint64_t b2 = b[4608 * 1024 * 1024] + 1;<br>
<br>
 // expected-warning@+1 2{{overflow in expression; result is 536870912 with type 'int'}}<br>
-  int j1 = i ? (4608 * 1024 * 1024) : (4608 * 1024 * 1024);<br>
-<br>
-// expected-warning@+1 {{overflow in expression; result is 536870912 with type 'int'}}<br>
-  int j2 = -(4608 * 1024 * 1024);<br>
-<br>
-// expected-warning@+1 {{overflow in expression; result is 536870912 with type 'int'}}<br>
-  uint64_t j3 = b[4608 * 1024 * 1024];<br>
+  (void)((i ? (4608 * 1024 * 1024) : (4608 * 1024 * 1024)) + 1);<br>
<br>
 // expected-warning@+1 2{{overflow in expression; result is 536870912 with type 'int'}}<br>
   return ((4608 * 1024 * 1024) + ((uint64_t)(4608 * 1024 * 1024)));<br>
<br>
<br>
_______________________________________________<br>
cfe-commits mailing list<br>
<a href="mailto:cfe-commits@lists.llvm.org" target="_blank">cfe-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits</a><br>
</blockquote></div>