re PR c++/41754 (initializer list internal compiler segfault)

PR c++/41754
	* call.c (compare_ics): Avoid bad union use when
	comparing two ck_lists.

From-SVN: r153788
This commit is contained in:
Jason Merrill 2009-11-01 01:06:42 -04:00 committed by Jason Merrill
parent cc1e250414
commit 691a1b27dc
4 changed files with 31 additions and 2 deletions

View File

@ -1,3 +1,9 @@
2009-10-31 Jason Merrill <jason@redhat.com>
PR c++/41754
* call.c (compare_ics): Avoid bad union use when
comparing two ck_lists.
2009-10-30 Jerry Quinn <jlquinn@optonline.net>
* mangle.c (mangle_type_string_for_rtti): Reapply 153734.

View File

@ -6617,8 +6617,9 @@ compare_ics (conversion *ics1, conversion *ics2)
/* We couldn't make up our minds; try to figure it out below. */
}
if (ics1->ellipsis_p)
/* Both conversions are ellipsis conversions. */
if (ics1->ellipsis_p || ics1->kind == ck_list)
/* Both conversions are ellipsis conversions or both are building a
std::initializer_list. */
return 0;
/* User-defined conversion sequence U1 is a better conversion sequence

View File

@ -1,3 +1,8 @@
2009-10-31 Jason Merrill <jason@redhat.com>
PR c++/41754
* g++.dg/cpp0x/initlist25.C: New.
2009-10-31 Eric Botcazou <ebotcazou@adacore.com>
* gnat.dg/specs/rep_clause4.ads: New test.

View File

@ -0,0 +1,17 @@
// PR c++/41754
// { dg-options -std=c++0x }
// { dg-do run }
#include <map>
#include <string>
#include <iostream>
using namespace std;
int main()
{
map<string, string> m;
m.insert({{"t", "t"}, {"y", "y"}});
return 0;
}