[gcc r12-6847] c++: Fix non-portable default argument of make_auto_1 [PR104197]

Patrick Palka ppalka@gcc.gnu.org
Mon Jan 24 16:48:18 GMT 2022


https://gcc.gnu.org/g:b1aa2a3cf1ba233ccd5a49fde85a2ca7e5f620e9

commit r12-6847-gb1aa2a3cf1ba233ccd5a49fde85a2ca7e5f620e9
Author: Patrick Palka <ppalka@redhat.com>
Date:   Mon Jan 24 11:47:13 2022 -0500

    c++: Fix non-portable default argument of make_auto_1 [PR104197]
    
    Avoid using the macro current_template_depth, which expands to an
    expression that uses __FUNCTION__, within the signature of a function.
    
            PR c++/104197
    
    gcc/cp/ChangeLog:
    
            * pt.cc (make_auto_1): Use -1 as a placeholder default argument
            for level.

Diff:
---
 gcc/cp/pt.cc | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/gcc/cp/pt.cc b/gcc/cp/pt.cc
index bba62a5800a..8f50b9c4d3c 100644
--- a/gcc/cp/pt.cc
+++ b/gcc/cp/pt.cc
@@ -28477,9 +28477,10 @@ make_args_non_dependent (vec<tree, va_gc> *args)
    by default.  If set_canonical is true, we set TYPE_CANONICAL on it.  */
 
 static tree
-make_auto_1 (tree name, bool set_canonical,
-	     int level = current_template_depth + 1)
+make_auto_1 (tree name, bool set_canonical, int level = -1)
 {
+  if (level == -1)
+    level = current_template_depth + 1;
   tree au = cxx_make_type (TEMPLATE_TYPE_PARM);
   TYPE_NAME (au) = build_decl (input_location, TYPE_DECL, name, au);
   TYPE_STUB_DECL (au) = TYPE_NAME (au);


More information about the Gcc-cvs mailing list