aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2009-10-14 19:05:45 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2009-10-14 19:05:45 +0200
commit4f2a9af8626ef22fe1129a84c76f40f77a88c2ec (patch)
tree2266435d3a1ce217b2074a875954ca7c75d0fd50
parent1833192f30abf95ec0124033882e6bcb64552e6f (diff)
downloadgcc-4f2a9af8626ef22fe1129a84c76f40f77a88c2ec.zip
gcc-4f2a9af8626ef22fe1129a84c76f40f77a88c2ec.tar.gz
gcc-4f2a9af8626ef22fe1129a84c76f40f77a88c2ec.tar.bz2
tree-parloops.c (separate_decls_in_region_debug_bind): Drop debug stmts setting DEBUG_EXPR_DECLs.
* tree-parloops.c (separate_decls_in_region_debug_bind): Drop debug stmts setting DEBUG_EXPR_DECLs. * cfgexpand.c (expand_debug_expr): Ignore zero-length bitfields. Don't crash if mode1 is VOIDmode. From-SVN: r152772
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/cfgexpand.c9
-rw-r--r--gcc/tree-parloops.c2
3 files changed, 18 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 79906ed..2f653f9 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,11 @@
+2009-10-14 Jakub Jelinek <jakub@redhat.com>
+
+ * tree-parloops.c (separate_decls_in_region_debug_bind): Drop debug
+ stmts setting DEBUG_EXPR_DECLs.
+
+ * cfgexpand.c (expand_debug_expr): Ignore zero-length bitfields.
+ Don't crash if mode1 is VOIDmode.
+
2009-09-26 Vladimir Makarov <vmakarov@redhat.com>
* params.def (PARAM_IRA_LOOP_RESERVED_REGS): New.
diff --git a/gcc/cfgexpand.c b/gcc/cfgexpand.c
index 6882954..4f317d9 100644
--- a/gcc/cfgexpand.c
+++ b/gcc/cfgexpand.c
@@ -2524,6 +2524,9 @@ expand_debug_expr (tree exp)
&mode1, &unsignedp, &volatilep, false);
rtx orig_op0;
+ if (bitsize == 0)
+ return NULL;
+
orig_op0 = op0 = expand_debug_expr (tem);
if (!op0)
@@ -2561,6 +2564,9 @@ expand_debug_expr (tree exp)
if (MEM_P (op0))
{
+ if (mode1 == VOIDmode)
+ /* Bitfield. */
+ mode1 = smallest_mode_for_size (bitsize, MODE_INT);
if (bitpos >= BITS_PER_UNIT)
{
op0 = adjust_address_nv (op0, mode1, bitpos / BITS_PER_UNIT);
@@ -2568,7 +2574,8 @@ expand_debug_expr (tree exp)
}
else if (bitpos < 0)
{
- int units = (-bitpos + BITS_PER_UNIT - 1) / BITS_PER_UNIT;
+ HOST_WIDE_INT units
+ = (-bitpos + BITS_PER_UNIT - 1) / BITS_PER_UNIT;
op0 = adjust_address_nv (op0, mode1, units);
bitpos += units * BITS_PER_UNIT;
}
diff --git a/gcc/tree-parloops.c b/gcc/tree-parloops.c
index 12b4ac0..681e046 100644
--- a/gcc/tree-parloops.c
+++ b/gcc/tree-parloops.c
@@ -715,6 +715,8 @@ separate_decls_in_region_debug_bind (gimple stmt,
void **slot, **dslot;
var = gimple_debug_bind_get_var (stmt);
+ if (TREE_CODE (var) == DEBUG_EXPR_DECL)
+ return true;
gcc_assert (DECL_P (var) && SSA_VAR_P (var));
ielt.uid = DECL_UID (var);
dslot = htab_find_slot_with_hash (decl_copies, &ielt, ielt.uid, NO_INSERT);