+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.
elem = TREE_CHAIN (elem))
;
- if (elem)
+ if (elem && !TREE_SIDE_EFFECTS (elem))
return expand_expr (fold (TREE_VALUE (elem)), target,
tmode, ro_modifier);
}
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);