On 10/10/19 8:08 PM, Marek Polacek wrote:
The concepts merge brought this bit

@@ -26326,9 +26559,9 @@ build_non_dependent_expr (tree expr)
      unexpected recursive instantiations.  */
        && !parsing_nsdmi ()
        /* Don't do this during concept expansion either and for
-         the same reason.  */
-      && !expanding_concept ())
-    fold_non_dependent_expr (expr, tf_none);
+    the same reason.  */
+      && !parsing_constraint_expression_p ())
+    fold_non_dependent_expr (expr);

Weird.


    STRIP_ANY_LOCATION_WRAPPER (expr);

(which I'm not finding in the ChangeLog).  Dropping tf_none means that
fold_non_dependent_expr will use tf_warning_or_error by default, and in
this test that causes an error:

   template<bool> struct cond;

   template<int> struct S {
     void f(int i) {
       cond<__builtin_constant_p(i)>();
     }
   };

   S<1> s;

where it complains that cond<false> is incomplete.  Which it is, but we're not
actually instantiating the function f, so we need not issue an error.  It's
broken a bunch of tests if --enable-checking=extra is in effect.  This patch
brings that tf_none back.  We will still complain if we do instantiate f.

Bootstrapped/regtested on x86_64-linux, ok for trunk?

OK, thanks.

Jason

Reply via email to