re PR c++/93046 (ICE in cp_gimplify_init_expr)
PR c++/93046 * cp-gimplify.c (cp_gimplify_init_expr): Don't look through TARGET_EXPR if it has been gimplified already. * g++.dg/ext/cond4.C: New test. From-SVN: r279884
This commit is contained in:
parent
48cb874a04
commit
72036b59a0
@ -1,3 +1,9 @@
|
||||
2010-01-05 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR c++/93046
|
||||
* cp-gimplify.c (cp_gimplify_init_expr): Don't look through
|
||||
TARGET_EXPR if it has been gimplified already.
|
||||
|
||||
2020-01-03 Jason Merrill <jason@redhat.com>
|
||||
|
||||
PR c++/93033 - incorrect tree node sharing with array init.
|
||||
|
@ -523,7 +523,7 @@ cp_gimplify_init_expr (tree *expr_p, gimple_seq *pre_p)
|
||||
think that such code never uses the TARGET_EXPR as an initializer. If
|
||||
I'm wrong, we'll abort because the temp won't have any RTL. In that
|
||||
case, I guess we'll need to replace references somehow. */
|
||||
if (TREE_CODE (from) == TARGET_EXPR)
|
||||
if (TREE_CODE (from) == TARGET_EXPR && TARGET_EXPR_INITIAL (from))
|
||||
from = TARGET_EXPR_INITIAL (from);
|
||||
|
||||
/* If we might need to clean up a partially constructed object, break down
|
||||
|
@ -1,3 +1,8 @@
|
||||
2010-01-05 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR c++/93046
|
||||
* g++.dg/ext/cond4.C: New test.
|
||||
|
||||
2020-01-04 Tobias Burnus <tobias@codesourcery.com>
|
||||
|
||||
PR fortran/91640
|
||||
|
14
gcc/testsuite/g++.dg/ext/cond4.C
Normal file
14
gcc/testsuite/g++.dg/ext/cond4.C
Normal file
@ -0,0 +1,14 @@
|
||||
// PR c++/93046
|
||||
// { dg-do compile }
|
||||
// { dg-options "" }
|
||||
|
||||
struct S {
|
||||
S (int);
|
||||
operator bool ();
|
||||
};
|
||||
|
||||
S
|
||||
foo ()
|
||||
{
|
||||
return S (1) ? : S (2);
|
||||
}
|
Loading…
Reference in New Issue
Block a user