Commit 85d87497 by Jakub Jelinek Committed by Jakub Jelinek

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
parent d863d143
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>
* sbitmap.h (sbitmap_copy): Rename bitmap_copy.
/* 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.
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++)
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)
......@@ -981,7 +984,9 @@ dce_process_block (basic_block bb, bool redo_out, bitmap au,
if (debug.used && !bitmap_empty_p (debug.used))
for (def_rec = DF_INSN_DEFS (insn); *def_rec; def_rec++)
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);
......
......@@ -684,7 +684,8 @@ dead_debug_insert_temp (struct dead_debug_local *debug, unsigned int uregno,
DEBUG_EXPR_TREE_DECL (dval), breg,
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);
else
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
insert the debug insn after INSN. REG is expected to be set at
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);
......
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