diff options
author | Jim Wilson <wilson@cygnus.com> | 2000-08-25 21:50:06 +0000 |
---|---|---|
committer | Jim Wilson <wilson@gcc.gnu.org> | 2000-08-25 14:50:06 -0700 |
commit | d51ff7cb78e8de31e871d19aaa9990eb2e881969 (patch) | |
tree | f0c898675419e8d912e9e12b38239b8cfc4d2098 /gcc | |
parent | caa511fdfa952a7fff177e3f4963ec4e1f3f9166 (diff) | |
download | gcc-d51ff7cb78e8de31e871d19aaa9990eb2e881969.zip gcc-d51ff7cb78e8de31e871d19aaa9990eb2e881969.tar.gz gcc-d51ff7cb78e8de31e871d19aaa9990eb2e881969.tar.bz2 |
Fix IA-64 abort on testcase with switch statement that can be optimized away.
* cse.c (cse_insn): Don't pass label subtraction to force_const_mem.
From-SVN: r35992
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 2 | ||||
-rw-r--r-- | gcc/cse.c | 8 |
2 files changed, 10 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4a8ed4a..6424cae 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,7 @@ 2000-08-25 Jim Wilson <wilson@cygnus.com> + * cse.c (cse_insn): Don't pass label subtraction to force_const_mem. + * function.c (gen_mem_addressof): Clear MEM_ALIAS_SET if no decl. 2000-08-25 Greg McGary <greg@mcgary.org> @@ -5328,8 +5328,16 @@ cse_insn (insn, libcall_insn) else if (constant_pool_entries_cost && CONSTANT_P (trial) + /* Reject cases that will abort in decode_rtx_const. + On the alpha when simplifying a switch, we get + (const (truncate (minus (label_ref) (label_ref)))). */ && ! (GET_CODE (trial) == CONST && GET_CODE (XEXP (trial, 0)) == TRUNCATE) + /* Likewise on IA-64, except without the truncate. */ + && ! (GET_CODE (trial) == CONST + && GET_CODE (XEXP (trial, 0)) == MINUS + && GET_CODE (XEXP (XEXP (trial, 0), 0)) == LABEL_REF + && GET_CODE (XEXP (XEXP (trial, 0), 1)) == LABEL_REF) && (src_folded == 0 || (GET_CODE (src_folded) != MEM && ! src_folded_force_flag)) |