re PR tree-optimization/21839 (ICE for missing V_DEFS caused by salias with empty structures)
2005-06-01 Daniel Berlin <dberlin@dberlin.org> Fix PR tree-optimization/21839 * gimplify.c (zero_sized_field_decl): New function. (gimplify_init_ctor_eval): Use it. From-SVN: r100477
This commit is contained in:
parent
39da352fad
commit
292a398fb7
@ -1,3 +1,10 @@
|
||||
2005-06-01 Daniel Berlin <dberlin@dberlin.org>
|
||||
|
||||
Fix PR tree-optimization/21839
|
||||
|
||||
* gimplify.c (zero_sized_field_decl): New function.
|
||||
(gimplify_init_ctor_eval): Use it.
|
||||
|
||||
2005-06-01 Josh Conner <jconner@apple.com>
|
||||
|
||||
PR 21478
|
||||
@ -199,7 +206,6 @@
|
||||
|
||||
* Makefile.in: Update dependencies.
|
||||
|
||||
|
||||
2005-06-01 Danny Smith <dannysmith@users.sourceforge.net>
|
||||
|
||||
* config/i386/cygming.h (NO_PROFILE_COUNTERS): Define.
|
||||
|
@ -2501,6 +2501,17 @@ gimplify_init_ctor_eval_range (tree object, tree lower, tree upper,
|
||||
pre_p);
|
||||
}
|
||||
|
||||
/* Return true if FDECL is accessing a field that is zero sized. */
|
||||
|
||||
static bool
|
||||
zero_sized_field_decl (tree fdecl)
|
||||
{
|
||||
if (TREE_CODE (fdecl) == FIELD_DECL && DECL_SIZE (fdecl)
|
||||
&& integer_zerop (DECL_SIZE (fdecl)))
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
/* A subroutine of gimplify_init_constructor. Generate individual
|
||||
MODIFY_EXPRs for a CONSTRUCTOR. OBJECT is the LHS against which the
|
||||
assignments should happen. LIST is the CONSTRUCTOR_ELTS of the
|
||||
@ -2533,6 +2544,9 @@ gimplify_init_ctor_eval (tree object, tree list, tree *pre_p, bool cleared)
|
||||
so we don't have to figure out what's missing ourselves. */
|
||||
gcc_assert (purpose);
|
||||
|
||||
if (zero_sized_field_decl (purpose))
|
||||
continue;
|
||||
|
||||
/* If we have a RANGE_EXPR, we have to build a loop to assign the
|
||||
whole range. */
|
||||
if (TREE_CODE (purpose) == RANGE_EXPR)
|
||||
|
12
gcc/testsuite/gcc.c-torture/compile/pr21839.c
Normal file
12
gcc/testsuite/gcc.c-torture/compile/pr21839.c
Normal file
@ -0,0 +1,12 @@
|
||||
typedef struct { } spinlock_t;
|
||||
typedef struct {
|
||||
unsigned sequence;
|
||||
spinlock_t lock;
|
||||
} seqlock_t;
|
||||
void ext3_new_inode(seqlock_t *rsv_seqlock)
|
||||
{
|
||||
*rsv_seqlock = (seqlock_t) { 0, (spinlock_t) { } };
|
||||
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user