Author: dim
Date: Thu Mar 14 19:41:16 2019
New Revision: 345144
URL: https://svnweb.freebsd.org/changeset/base/345144

Log:
  Vendor import of clang release_80 branch r356034:
  https://llvm.org/svn/llvm-project/cfe/branches/release_80@356034

Modified:
  vendor/clang/dist-release_80/lib/AST/ExprConstant.cpp
  vendor/clang/dist-release_80/test/SemaCXX/constant-expression-cxx1y.cpp
  vendor/clang/dist-release_80/test/SemaCXX/enable_if.cpp

Modified: vendor/clang/dist-release_80/lib/AST/ExprConstant.cpp
==============================================================================
--- vendor/clang/dist-release_80/lib/AST/ExprConstant.cpp       Thu Mar 14 
19:41:13 2019        (r345143)
+++ vendor/clang/dist-release_80/lib/AST/ExprConstant.cpp       Thu Mar 14 
19:41:16 2019        (r345144)
@@ -10985,6 +10985,7 @@ bool Expr::EvaluateAsConstantExpr(EvalResult &Result, 
                                   const ASTContext &Ctx) const {
   EvalInfo::EvaluationMode EM = EvalInfo::EM_ConstantExpression;
   EvalInfo Info(Ctx, Result, EM);
+  Info.InConstantContext = true;
   if (!::Evaluate(Result.Val, Info, this))
     return false;
 
@@ -11625,6 +11626,7 @@ bool Expr::EvaluateWithSubstitution(APValue &Value, AS
                                     const Expr *This) const {
   Expr::EvalStatus Status;
   EvalInfo Info(Ctx, Status, EvalInfo::EM_ConstantExpressionUnevaluated);
+  Info.InConstantContext = true;
 
   LValue ThisVal;
   const LValue *ThisPtr = nullptr;
@@ -11708,6 +11710,7 @@ bool Expr::isPotentialConstantExprUnevaluated(Expr *E,
 
   EvalInfo Info(FD->getASTContext(), Status,
                 EvalInfo::EM_PotentialConstantExpressionUnevaluated);
+  Info.InConstantContext = true;
 
   // Fabricate a call stack frame to give the arguments a plausible cover 
story.
   ArrayRef<const Expr*> Args;

Modified: 
vendor/clang/dist-release_80/test/SemaCXX/constant-expression-cxx1y.cpp
==============================================================================
--- vendor/clang/dist-release_80/test/SemaCXX/constant-expression-cxx1y.cpp     
Thu Mar 14 19:41:13 2019        (r345143)
+++ vendor/clang/dist-release_80/test/SemaCXX/constant-expression-cxx1y.cpp     
Thu Mar 14 19:41:16 2019        (r345144)
@@ -1135,3 +1135,27 @@ constexpr bool indirect_builtin_constant_p(const char 
   return __builtin_constant_p(*__s);
 }
 constexpr bool n = indirect_builtin_constant_p("a");
+
+__attribute__((enable_if(indirect_builtin_constant_p("a") == n, "OK")))
+int test_in_enable_if() { return 0; }
+int n2 = test_in_enable_if();
+
+template <bool n = indirect_builtin_constant_p("a")>
+int test_in_template_param() { return 0; }
+int n3 = test_in_template_param();
+
+void test_in_case(int n) {
+  switch (n) {
+    case indirect_builtin_constant_p("abc"):
+    break;
+  }
+}
+enum InEnum1 {
+  ONE = indirect_builtin_constant_p("abc")
+};
+enum InEnum2 : int {
+  TWO = indirect_builtin_constant_p("abc")
+};
+enum class InEnum3 {
+  THREE = indirect_builtin_constant_p("abc")
+};

Modified: vendor/clang/dist-release_80/test/SemaCXX/enable_if.cpp
==============================================================================
--- vendor/clang/dist-release_80/test/SemaCXX/enable_if.cpp     Thu Mar 14 
19:41:13 2019        (r345143)
+++ vendor/clang/dist-release_80/test/SemaCXX/enable_if.cpp     Thu Mar 14 
19:41:16 2019        (r345144)
@@ -514,3 +514,11 @@ namespace TypeOfFn {
 
   static_assert(is_same<__typeof__(foo)*, decltype(&foo)>::value, "");
 }
+
+namespace InConstantContext {
+void foo(const char *s) 
__attribute__((enable_if(((void)__builtin_constant_p(*s), true), "trap"))) {}
+
+void test() {
+  InConstantContext::foo("abc");
+}
+} // namespace InConstantContext
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to