re PR debug/54953 (New sra-1.c FAILs on powerpc)
PR debug/54953 * valtrack.h (DEBUG_TEMP_AFTER_WITH_REG_FORCE): New. * valtrack.c (dead_debug_insert_temp): Use emit_debug_insn_after even for where == DEBUG_TEMP_AFTER_WITH_REG_FORCE. * dce.c (word_dce_process_block, dce_process_block): Pass DEBUG_TEMP_AFTER_WITH_REG_FORCE if insn is needed and therefore not going to be eliminated. From-SVN: r192978
This commit is contained in:
parent
d863d14312
commit
85d874975a
@ -1,3 +1,13 @@
|
|||||||
|
2012-10-30 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
PR debug/54953
|
||||||
|
* valtrack.h (DEBUG_TEMP_AFTER_WITH_REG_FORCE): New.
|
||||||
|
* valtrack.c (dead_debug_insert_temp): Use emit_debug_insn_after
|
||||||
|
even for where == DEBUG_TEMP_AFTER_WITH_REG_FORCE.
|
||||||
|
* dce.c (word_dce_process_block, dce_process_block): Pass
|
||||||
|
DEBUG_TEMP_AFTER_WITH_REG_FORCE if insn is needed and therefore
|
||||||
|
not going to be eliminated.
|
||||||
|
|
||||||
2012-10-29 Lawrence Crowl <crowl@google.com>
|
2012-10-29 Lawrence Crowl <crowl@google.com>
|
||||||
|
|
||||||
* sbitmap.h (sbitmap_copy): Rename bitmap_copy.
|
* sbitmap.h (sbitmap_copy): Rename bitmap_copy.
|
||||||
|
11
gcc/dce.c
11
gcc/dce.c
@ -1,5 +1,5 @@
|
|||||||
/* RTL dead code elimination.
|
/* RTL dead code elimination.
|
||||||
Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011
|
Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
|
||||||
Free Software Foundation, Inc.
|
Free Software Foundation, Inc.
|
||||||
|
|
||||||
This file is part of GCC.
|
This file is part of GCC.
|
||||||
@ -880,7 +880,10 @@ word_dce_process_block (basic_block bb, bool redo_out,
|
|||||||
|
|
||||||
for (def_rec = DF_INSN_DEFS (insn); *def_rec; def_rec++)
|
for (def_rec = DF_INSN_DEFS (insn); *def_rec; def_rec++)
|
||||||
dead_debug_insert_temp (&debug, DF_REF_REGNO (*def_rec), insn,
|
dead_debug_insert_temp (&debug, DF_REF_REGNO (*def_rec), insn,
|
||||||
DEBUG_TEMP_BEFORE_WITH_VALUE);
|
marked_insn_p (insn)
|
||||||
|
&& !control_flow_insn_p (insn)
|
||||||
|
? DEBUG_TEMP_AFTER_WITH_REG_FORCE
|
||||||
|
: DEBUG_TEMP_BEFORE_WITH_VALUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dump_file)
|
if (dump_file)
|
||||||
@ -981,7 +984,9 @@ dce_process_block (basic_block bb, bool redo_out, bitmap au,
|
|||||||
if (debug.used && !bitmap_empty_p (debug.used))
|
if (debug.used && !bitmap_empty_p (debug.used))
|
||||||
for (def_rec = DF_INSN_DEFS (insn); *def_rec; def_rec++)
|
for (def_rec = DF_INSN_DEFS (insn); *def_rec; def_rec++)
|
||||||
dead_debug_insert_temp (&debug, DF_REF_REGNO (*def_rec), insn,
|
dead_debug_insert_temp (&debug, DF_REF_REGNO (*def_rec), insn,
|
||||||
DEBUG_TEMP_BEFORE_WITH_VALUE);
|
needed && !control_flow_insn_p (insn)
|
||||||
|
? DEBUG_TEMP_AFTER_WITH_REG_FORCE
|
||||||
|
: DEBUG_TEMP_BEFORE_WITH_VALUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
dead_debug_local_finish (&debug, NULL);
|
dead_debug_local_finish (&debug, NULL);
|
||||||
|
@ -684,7 +684,8 @@ dead_debug_insert_temp (struct dead_debug_local *debug, unsigned int uregno,
|
|||||||
DEBUG_EXPR_TREE_DECL (dval), breg,
|
DEBUG_EXPR_TREE_DECL (dval), breg,
|
||||||
VAR_INIT_STATUS_INITIALIZED);
|
VAR_INIT_STATUS_INITIALIZED);
|
||||||
|
|
||||||
if (where == DEBUG_TEMP_AFTER_WITH_REG)
|
if (where == DEBUG_TEMP_AFTER_WITH_REG
|
||||||
|
|| where == DEBUG_TEMP_AFTER_WITH_REG_FORCE)
|
||||||
bind = emit_debug_insn_after (bind, insn);
|
bind = emit_debug_insn_after (bind, insn);
|
||||||
else
|
else
|
||||||
bind = emit_debug_insn_before (bind, insn);
|
bind = emit_debug_insn_before (bind, insn);
|
||||||
|
@ -131,7 +131,12 @@ enum debug_temp_where
|
|||||||
/* Bind a newly-created debug temporary to a REG for UREGNO, and
|
/* Bind a newly-created debug temporary to a REG for UREGNO, and
|
||||||
insert the debug insn after INSN. REG is expected to be set at
|
insert the debug insn after INSN. REG is expected to be set at
|
||||||
INSN. */
|
INSN. */
|
||||||
DEBUG_TEMP_AFTER_WITH_REG = 1
|
DEBUG_TEMP_AFTER_WITH_REG = 1,
|
||||||
|
/* Like DEBUG_TEMP_AFTER_WITH_REG, but force addition of a debug
|
||||||
|
temporary even if there is just a single debug use. This is used
|
||||||
|
on regs that are becoming REG_DEAD on INSN and so uses of the
|
||||||
|
reg later on are invalid. */
|
||||||
|
DEBUG_TEMP_AFTER_WITH_REG_FORCE = 2
|
||||||
};
|
};
|
||||||
|
|
||||||
extern void dead_debug_global_init (struct dead_debug_global *, bitmap);
|
extern void dead_debug_global_init (struct dead_debug_global *, bitmap);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user