re PR middle-end/40026 (ICE during gimplify_init_constructor)
2009-05-11 Paolo Bonzini <bonzini@gnu.org> PR tree-optimization/40026 * gimplify.c (gimplify_init_constructor): Change initial conditional to assertion. Rewrite TREE_OPERAND (*expr_p, 1) after optimize_compound_literals_in_ctor. testsuite: 2009-05-11 Paolo Bonzini <bonzini@gnu.org> * gcc.c-torture/compile/pr40026.c: New testcase. From-SVN: r147386
This commit is contained in:
parent
c260f01fcc
commit
f5a1f0d01f
@ -1,3 +1,10 @@
|
||||
2009-05-11 Paolo Bonzini <bonzini@gnu.org>
|
||||
|
||||
PR tree-optimization/40026
|
||||
* gimplify.c (gimplify_init_constructor): Change initial conditional
|
||||
to assertion. Rewrite TREE_OPERAND (*expr_p, 1) after
|
||||
optimize_compound_literals_in_ctor.
|
||||
|
||||
2009-05-11 Nathan Sidwell <nathan@codesourcery.com>
|
||||
|
||||
* config/m68k/m68k-devices.def (52274, 52277, 5301x, 5225x, 51xx):
|
||||
|
@ -3643,14 +3643,11 @@ static enum gimplify_status
|
||||
gimplify_init_constructor (tree *expr_p, gimple_seq *pre_p, gimple_seq *post_p,
|
||||
bool want_value, bool notify_temp_creation)
|
||||
{
|
||||
tree object, new_ctor;
|
||||
tree ctor = TREE_OPERAND (*expr_p, 1);
|
||||
tree type = TREE_TYPE (ctor);
|
||||
tree object, ctor, type;
|
||||
enum gimplify_status ret;
|
||||
VEC(constructor_elt,gc) *elts;
|
||||
|
||||
if (TREE_CODE (ctor) != CONSTRUCTOR)
|
||||
return GS_UNHANDLED;
|
||||
gcc_assert (TREE_CODE (TREE_OPERAND (*expr_p, 1)) == CONSTRUCTOR);
|
||||
|
||||
if (!notify_temp_creation)
|
||||
{
|
||||
@ -3661,8 +3658,10 @@ gimplify_init_constructor (tree *expr_p, gimple_seq *pre_p, gimple_seq *post_p,
|
||||
}
|
||||
|
||||
object = TREE_OPERAND (*expr_p, 0);
|
||||
new_ctor = optimize_compound_literals_in_ctor (ctor);
|
||||
elts = CONSTRUCTOR_ELTS (new_ctor);
|
||||
ctor = TREE_OPERAND (*expr_p, 1) =
|
||||
optimize_compound_literals_in_ctor (TREE_OPERAND (*expr_p, 1));
|
||||
type = TREE_TYPE (ctor);
|
||||
elts = CONSTRUCTOR_ELTS (ctor);
|
||||
ret = GS_ALL_DONE;
|
||||
|
||||
switch (TREE_CODE (type))
|
||||
|
@ -1,3 +1,7 @@
|
||||
2009-05-11 Paolo Bonzini <bonzini@gnu.org>
|
||||
|
||||
* gcc.c-torture/compile/pr40026.c: New testcase.
|
||||
|
||||
2009-05-11 Janus Weil <janus@gcc.gnu.org>
|
||||
|
||||
PR fortran/40089
|
||||
|
15
gcc/testsuite/gcc.c-torture/compile/pr40026.c
Normal file
15
gcc/testsuite/gcc.c-torture/compile/pr40026.c
Normal file
@ -0,0 +1,15 @@
|
||||
typedef struct {
|
||||
unsigned long bits;
|
||||
} S;
|
||||
struct T {
|
||||
S span;
|
||||
int flags;
|
||||
};
|
||||
|
||||
struct T f(int x)
|
||||
{
|
||||
return (struct T) {
|
||||
.span = (S) { 0UL },
|
||||
.flags = (x ? 256 : 0),
|
||||
};
|
||||
}
|
Loading…
Reference in New Issue
Block a user