diff options
| author | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-04-04 22:48:16 +0000 |
|---|---|---|
| committer | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-04-04 22:48:16 +0000 |
| commit | a57f4c4d4a19fac9f03f87e0febf5aafd620e991 (patch) | |
| tree | c50a81e1530b951737c4b5d0f4c98d2ce62b0881 | |
| parent | aff9e6561ee30f3802fe5993a64cdcd7a53146b4 (diff) | |
| download | ppe42-gcc-a57f4c4d4a19fac9f03f87e0febf5aafd620e991.tar.gz ppe42-gcc-a57f4c4d4a19fac9f03f87e0febf5aafd620e991.zip | |
PR opt/6165
* alias.c (true_dependence): Force (mem:blk (scratch)) to conflict.
(write_dependence_p): Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@51882 138bc75d-0d04-0410-961f-82ee72b054a4
| -rw-r--r-- | gcc/ChangeLog | 6 | ||||
| -rw-r--r-- | gcc/alias.c | 14 |
2 files changed, 20 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 23e407a49de..d14b04c413f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,11 @@ 2002-04-04 Richard Henderson <rth@redhat.com> + PR opt/6165 + * alias.c (true_dependence): Force (mem:blk (scratch)) to conflict. + (write_dependence_p): Likewise. + +2002-04-04 Richard Henderson <rth@redhat.com> + * predict.c (estimate_bb_frequencies): Do frequency calculation with a volatile temporary. diff --git a/gcc/alias.c b/gcc/alias.c index 42d8e18210d..29da8ffafb3 100644 --- a/gcc/alias.c +++ b/gcc/alias.c @@ -2039,6 +2039,13 @@ true_dependence (mem, mem_mode, x, varies) if (MEM_VOLATILE_P (x) && MEM_VOLATILE_P (mem)) return 1; + /* (mem:BLK (scratch)) is a special mechanism to conflict with everything. + This is used in epilogue deallocation functions. */ + if (GET_MODE (x) == BLKmode && GET_CODE (XEXP (x, 0)) == SCRATCH) + return 1; + if (GET_MODE (mem) == BLKmode && GET_CODE (XEXP (mem, 0)) == SCRATCH) + return 1; + if (DIFFERENT_ALIAS_SETS_P (x, mem)) return 0; @@ -2173,6 +2180,13 @@ write_dependence_p (mem, x, writep) if (MEM_VOLATILE_P (x) && MEM_VOLATILE_P (mem)) return 1; + /* (mem:BLK (scratch)) is a special mechanism to conflict with everything. + This is used in epilogue deallocation functions. */ + if (GET_MODE (x) == BLKmode && GET_CODE (XEXP (x, 0)) == SCRATCH) + return 1; + if (GET_MODE (mem) == BLKmode && GET_CODE (XEXP (mem, 0)) == SCRATCH) + return 1; + if (DIFFERENT_ALIAS_SETS_P (x, mem)) return 0; |

