On Thu, Mar 22, 2018 at 02:02:01PM -0400, Jason Merrill wrote:
> He hadn't yet checked in the relevant change, "Disable
> auto_is_implicit_function_template_parm_p while parsing attributes".
> That should happen soon.
> 
> > but with
> > the following patch we don't ICE, because args is NULL and
> > tsubst_copy starts with:
> > 14945     if (t == NULL_TREE || t == error_mark_node || args == NULL_TREE)
> > 14946       return t;
> > So, do you still want the FIX_TRUNC_EXPR handling removed or fixed (as done
> > in the first patch)?
> 
> Hmm, let's make it gcc_unreachable then.

So like this?  Passes make check-c++-all on current trunk, where the above
patch from Alex is already in.

2018-03-23  Jakub Jelinek  <ja...@redhat.com>

        PR c++/84942
        * pt.c (tsubst_copy_and_build) <case FIX_TRUNC_EXPR>: Replace
        cp_build_unary_op call with gcc_unreachable ().

        * g++.dg/cpp1y/pr84942.C: New test.

--- gcc/cp/pt.c.jj      2018-03-23 09:49:38.063519286 +0100
+++ gcc/cp/pt.c 2018-03-23 09:51:24.232501064 +0100
@@ -17514,8 +17514,7 @@ tsubst_copy_and_build (tree t,
                                complain|decltype_flag));
 
     case FIX_TRUNC_EXPR:
-      RETURN (cp_build_unary_op (FIX_TRUNC_EXPR, RECUR (TREE_OPERAND (t, 0)),
-                                false, complain));
+      gcc_unreachable ();    
 
     case ADDR_EXPR:
       op1 = TREE_OPERAND (t, 0);
--- gcc/testsuite/g++.dg/cpp1y/pr84942.C.jj     2018-03-23 09:50:16.320512716 
+0100
+++ gcc/testsuite/g++.dg/cpp1y/pr84942.C        2018-03-23 09:52:33.408489183 
+0100
@@ -0,0 +1,6 @@
+// PR c++/84942
+// { dg-do compile { target c++14 } }
+// { dg-options "-w" }
+
+int a(__attribute__((b((int)__builtin_inf() * 1ULL / auto))));
+// { dg-error "expected primary-expression before" "" { target *-*-* } .-1 }


        Jakub

Reply via email to