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);
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 issuing an error seems
overzealous (though not wrong), and it breaks a bunch of tests. This patch
brings that tf_none back. We will still complain if we do instantiate f.
* pt.c (build_non_dependent_expr): Call fold_non_dependent_expr
with tf_none.
* g++.dg/template/builtin2.C: New test.
From-SVN: r276906
+2019-10-11 Marek Polacek <polacek@redhat.com>
+
+ PR c++/92049 - extra error with -fchecking=2.
+ * pt.c (build_non_dependent_expr): Call fold_non_dependent_expr
+ with tf_none.
+
2019-10-11 Paolo Carlini <paolo.carlini@oracle.com>
* typeck.c (cp_build_binary_op): Do not handle RROTATE_EXPR and
/* Don't do this during concept processing either and for
the same reason. */
&& !processing_constraint_expression_p ())
- fold_non_dependent_expr (expr);
+ fold_non_dependent_expr (expr, tf_none);
STRIP_ANY_LOCATION_WRAPPER (expr);
+2019-10-11 Marek Polacek <polacek@redhat.com>
+
+ PR c++/92049 - extra error with -fchecking=2.
+ * g++.dg/template/builtin2.C: New test.
+
2019-10-11 Jim Wilson <jimw@sifive.com>
PR rtl-optimization/91860
--- /dev/null
+// PR c++/92049 - extra error with -fchecking=2.
+// { dg-do compile { target c++11 } }
+// { dg-additional-options "-fchecking=2" }
+
+#include "builtin1.C"