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);
}

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

Reply via email to