[debug-early] fix problem with template parameter packs

Aldy Hernandez aldyh@redhat.com
Tue May 26 17:02:00 GMT 2015


On 05/06/2015 12:28 PM, Jason Merrill wrote:
> On 05/05/2015 04:33 PM, Aldy Hernandez wrote:
>> On 05/05/2015 02:08 PM, Jason Merrill wrote:
>>> On 05/04/2015 09:29 PM, Aldy Hernandez wrote:
>>>> The code handling parameter DIEs needed a little tweaking for variable
>>>> length template arguments.  I've relaxed the original assert, but this
>>>> may require tweaking at branch review time-- hopefully later this week.
>>>
>>> What testcase motivated this?  We're within a formal_parameter_pack, but
>>
>> Pretty much every other test in the libstdc++-v3 testsuite was failing
>> with the ICE I elided in my patch.
>>
>> I wasn't able to narrow it down to a tiny test, but I can do so if you
>> want. ??
>
> I think that would be helpful so we can decide what we want the debug
> output to look like.
>
> Jason
>
>

Removing the aforementioned patch from the branch with the attached 
one-liner, you can reproduce on the following reduced testcase (-O -g 
-quiet -std=gnu++14):

template < typename _Tp >
_Tp forward ()
{
};

template < typename blahblah >
class vector
{
public:
   template < typename ... _Args > void emplace_back (_Args ...);
   template < typename ... _Args > void _M_emplace_back_aux (_Args ...);
};

template < typename _Tp >
template < typename ... _Args >
void
vector <_Tp >::emplace_back (_Args ...)
{
   _M_emplace_back_aux (forward < _Args > ...);
}

void
foobar ()
{
   vector < int >myvecint;
   myvecint.emplace_back (0, 0);
}

-------------- next part --------------
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
index 7502fbc..4f3b484 100644
--- a/gcc/dwarf2out.c
+++ b/gcc/dwarf2out.c
@@ -18006,6 +18006,7 @@ gen_formal_parameter_die (tree node, tree origin, bool emit_name_p,
 	    }
 	  else
 	    {
+	      gcc_unreachable();
 	      /* Reuse DIE even with a differing context.
 
 		 This happens when called through


More information about the Gcc-patches mailing list