diff options
author | Zdenek Dvorak <dvorakz@suse.cz> | 2005-11-11 14:38:07 +0100 |
---|---|---|
committer | Zdenek Dvorak <rakdver@gcc.gnu.org> | 2005-11-11 13:38:07 +0000 |
commit | 301a8f9577f730dcb680760b84e258e62cafd01f (patch) | |
tree | 264b1d4b309fb3dd1c6c9dfa913eb3a2c785120e /gcc | |
parent | 8a4c09c8336cb51f5ab9712da5eaf49d3f25ecc6 (diff) | |
download | gcc-301a8f9577f730dcb680760b84e258e62cafd01f.zip gcc-301a8f9577f730dcb680760b84e258e62cafd01f.tar.gz gcc-301a8f9577f730dcb680760b84e258e62cafd01f.tar.bz2 |
re PR rtl-optimization/22509 (elemental.f90 testsuite failure (-fweb))
PR rtl-optimization/22509
* local-alloc.c (memref_used_between_p): Check whether a function call
could not reference the memref.
From-SVN: r106783
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/local-alloc.c | 15 |
2 files changed, 19 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 0337eb2..c9f0917 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2005-11-11 Zdenek Dvorak <dvorakz@suse.cz> + + PR rtl-optimization/22509 + * local-alloc.c (memref_used_between_p): Check whether a function call + could not reference the memref. + 2005-11-11 Ulrich Weigand <uweigand@de.ibm.com> * postreload.c (reload_cse_simplify_operands): Fix bug in sorting diff --git a/gcc/local-alloc.c b/gcc/local-alloc.c index 4ee4991..0380ff9 100644 --- a/gcc/local-alloc.c +++ b/gcc/local-alloc.c @@ -762,8 +762,19 @@ memref_used_between_p (rtx memref, rtx start, rtx end) for (insn = NEXT_INSN (start); insn != NEXT_INSN (end); insn = NEXT_INSN (insn)) - if (INSN_P (insn) && memref_referenced_p (memref, PATTERN (insn))) - return 1; + { + if (!INSN_P (insn)) + continue; + + if (memref_referenced_p (memref, PATTERN (insn))) + return 1; + + /* Nonconst functions may access memory. */ + if (CALL_P (insn) + && (! CONST_OR_PURE_CALL_P (insn) + || pure_call_p (insn))) + return 1; + } return 0; } |