diff options
author | Jeffrey A Law <law@cygnus.com> | 1999-04-09 00:29:45 +0000 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 1999-04-08 18:29:45 -0600 |
commit | 01e752d38660cea601a177fdee8f89cc9ceadbca (patch) | |
tree | f69054cfc57cab1d087f04fe8e176fefa5db654c /gcc/reload1.c | |
parent | 3fb2a045ec1d3022b441ed5495a915ac42d63b51 (diff) | |
download | gcc-01e752d38660cea601a177fdee8f89cc9ceadbca.zip gcc-01e752d38660cea601a177fdee8f89cc9ceadbca.tar.gz gcc-01e752d38660cea601a177fdee8f89cc9ceadbca.tar.bz2 |
cse.c (flush_hash_table): New function.
* cse.c (flush_hash_table): New function.
(cse_insn): Flush the hash table when we encounter a volatile asm.
(cse_basic_block): Use flush_hash_table instead of doing it
inline.
* reload1.c (reload_cse_regs_1): Flush known register values if
we encounter a volatile asm.
From-SVN: r26304
Diffstat (limited to 'gcc/reload1.c')
-rw-r--r-- | gcc/reload1.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/gcc/reload1.c b/gcc/reload1.c index 3f5e097..e97e98e 100644 --- a/gcc/reload1.c +++ b/gcc/reload1.c @@ -8740,6 +8740,14 @@ reload_cse_regs_1 (first) reload_cse_invalidate_mem (callmem); } + + /* Forget all the register values at a volatile asm. */ + if (GET_CODE (insn) == INSN + && GET_CODE (PATTERN (insn)) == ASM_OPERANDS + && MEM_VOLATILE_P (PATTERN (insn))) + for (i = 0; i < FIRST_PSEUDO_REGISTER; i++) + reg_values[i] = 0; + body = PATTERN (insn); if (GET_CODE (body) == SET) { |