Commit 8e9f20cf by Jakub Jelinek Committed by Jakub Jelinek

re PR c++/55652 (ICE (segfault) with templates and structs)

	PR c++/55652
	* typeck2.c (merge_exception_specifiers): Don't call operand_equal_p
	if noex is NULL.

	* g++.dg/cpp0x/noexcept19.C: New test.

From-SVN: r194479
parent 5944e3a8
2012-12-13 Jakub Jelinek <jakub@redhat.com>
PR c++/55652
* typeck2.c (merge_exception_specifiers): Don't call operand_equal_p
if noex is NULL.
2012-12-11 Jason Merrill <jason@redhat.com>
PR c++/54883
......
......@@ -1871,7 +1871,7 @@ merge_exception_specifiers (tree list, tree add, tree fn)
/* If ADD is a deferred noexcept, we must have been called from
process_subob_fn. For implicitly declared functions, we build up
a list of functions to consider at instantiation time. */
if (operand_equal_p (noex, boolean_true_node, 0))
if (noex && operand_equal_p (noex, boolean_true_node, 0))
noex = NULL_TREE;
gcc_assert (fn && (!noex || is_overloaded_fn (noex)));
noex = build_overload (fn, noex);
......
2012-12-13 Jakub Jelinek <jakub@redhat.com>
PR c++/55652
* g++.dg/cpp0x/noexcept19.C: New test.
2012-12-13 Richard Biener <rguenther@suse.de>
PR lto/55660
......
// PR c++/55652
// { dg-do compile }
// { dg-options "-std=c++11" }
template <typename T>
struct A
{
static const bool a = false;
};
template <typename X, typename Y = A <X>>
struct B
{
B () noexcept (A <Y>::a) {}
};
template <typename X, typename Y>
struct C
{
X x;
Y y;
};
struct D
{
D () throw (int);
};
C <D, B <D>> c;
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment