Commit 292a398f by Daniel Berlin Committed by Daniel Berlin

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
parent 39da352f
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)
......
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) { } };
}
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