re PR c++/64994 (Firefox build error: ICE: in cxx_eval_call_expression, at cp/constexpr.c:1353)

PR c++/64994
	* constexpr.c (cxx_eval_call_expression): Walk the clone list.

From-SVN: r220589
This commit is contained in:
Jason Merrill 2015-02-10 12:20:01 -05:00 committed by Jason Merrill
parent 082908e33d
commit 0ec052fe44
3 changed files with 37 additions and 2 deletions

View File

@ -1,3 +1,8 @@
2015-02-10 Jason Merrill <jason@redhat.com>
PR c++/64994
* constexpr.c (cxx_eval_call_expression): Walk the clone list.
2015-02-10 Jan Hubicka <hubicka@ucw.cz>
PR ipa/64982

View File

@ -1348,8 +1348,12 @@ cxx_eval_call_expression (const constexpr_ctx *ctx, tree t,
if (DECL_SAVED_TREE (fun) == NULL_TREE
&& (DECL_CONSTRUCTOR_P (fun) || DECL_DESTRUCTOR_P (fun)))
/* The maybe-in-charge 'tor had its DECL_SAVED_TREE
cleared, try the first clone. */
fun = DECL_CHAIN (fun);
cleared, try a clone. */
for (fun = DECL_CHAIN (fun);
fun && DECL_CLONED_FUNCTION_P (fun);
fun = DECL_CHAIN (fun))
if (DECL_SAVED_TREE (fun))
break;
gcc_assert (DECL_SAVED_TREE (fun));
tree parms, res;

View File

@ -0,0 +1,26 @@
// PR c++/64994
// { dg-do compile { target c++11 } }
class TimeStamp {
public:
constexpr TimeStamp() : mValue() {}
int mValue;
};
class A {
class B;
A(bool);
};
class C {
TimeStamp mFadeBeginTime;
};
class A::B {
public:
B(int) {}
TimeStamp mPrevEventTime[1];
};
A::A(bool) {
new C;
B(0);
}