ira.c (validate_equiv_mem): Remove code to avoid invalidation of readonly memory equivalances for...

* ira.c (validate_equiv_mem): Remove code to avoid invalidation
	of readonly memory equivalances for const/pure calls.

From-SVN: r166309
This commit is contained in:
Jeff Law 2010-11-04 07:15:33 -06:00 committed by Jeff Law
parent 2a2651b797
commit a22265a4f9
2 changed files with 11 additions and 2 deletions

View file

@ -1,3 +1,8 @@
2010-11-04 Jeff Law <law@redhat.com>
* ira.c (validate_equiv_mem): Remove code to avoid invalidation
of readonly memory equivalances for const/pure calls.
2010-11-04 Richard Guenther <rguenther@suse.de>
PR tree-optimization/45733

View file

@ -1915,8 +1915,12 @@ validate_equiv_mem (rtx start, rtx reg, rtx memref)
if (find_reg_note (insn, REG_DEAD, reg))
return 1;
if (CALL_P (insn) && ! MEM_READONLY_P (memref)
&& ! RTL_CONST_OR_PURE_CALL_P (insn))
/* This used to ignore readonly memory and const/pure calls. The problem
is the equivalent form may reference a pseudo which gets assigned a
call clobbered hard reg. When we later replace REG with its
equivalent form, the value in the call-clobbered reg has been
changed and all hell breaks loose. */
if (CALL_P (insn))
return 0;
note_stores (PATTERN (insn), validate_equiv_mem_from_store, NULL);