Commit e69decfd by Mark Mitchell Committed by Mark Mitchell

expr.c (expand_expr, [...]): Do not replace an array element with the known…

expr.c (expand_expr, [...]): Do not replace an array element with the known initializing value if...

	* expr.c (expand_expr, case ARRAY_REF): Do not replace
	an array element with the known initializing value if it has
	side-effects.

	* toplev.c (rest_of_compilation): Remove dead code before
	purge_addressof.

From-SVN: r43120
parent 3bce8a01
2001-06-09 Mark Mitchell <mark@codesourcery.com>
* expr.c (expand_expr, case ARRAY_REF): Do not replace
an array element with the known initializing value if it has
side-effects.
* toplev.c (rest_of_compilation): Remove dead code before
purge_addressof.
2001-06-09 Neil Booth <neil@daikokuya.demon.co.uk>
* cppinit.c (print_help): Document -fpreprocessed.
......
......@@ -6891,7 +6891,7 @@ expand_expr (exp, target, tmode, modifier)
elem = TREE_CHAIN (elem))
;
if (elem)
if (elem && !TREE_SIDE_EFFECTS (elem))
return expand_expr (fold (TREE_VALUE (elem)), target,
tmode, ro_modifier);
}
......
......@@ -3031,6 +3031,16 @@ rest_of_compilation (decl)
timevar_pop (TV_JUMP);
}
/* It's important to remove dead code before we call
purge_addressof. Sometimes, the only ADDRESSOFs for a REG
will be dead, and if we don't get rid of them, we will end up
committing ourselves to dumping the REG to the stack
unnecessarily. */
find_basic_blocks (insns, max_reg_num (), rtl_dump_file);
cleanup_cfg ();
life_analysis (insns, rtl_dump_file,
PROP_SCAN_DEAD_CODE | PROP_KILL_DEAD_CODE);
/* The second pass of jump optimization is likely to have
removed a bunch more instructions. */
renumber_insns (rtl_dump_file);
......
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