cse.c (fold_rtx): Avoid building of (CONST (MINUS (CONST_INT) (SYMBOL_REF)))
* cse.c (fold_rtx): Avoid building of (CONST (MINUS (CONST_INT) (SYMBOL_REF))) From-SVN: r87156
This commit is contained in:
parent
c4817ba67e
commit
ec666d23ca
2 changed files with 13 additions and 1 deletions
|
@ -1,5 +1,8 @@
|
|||
2004-09-07 Jan Hubicka <jh@suse.cz>
|
||||
|
||||
* cse.c (fold_rtx): Avoid building of
|
||||
(CONST (MINUS (CONST_INT) (SYMBOL_REF)))
|
||||
|
||||
* tree-ssa-pre.c (grand_bitmap_obstack): New.
|
||||
(value_insert_into_set_bitmap, bitmap_set_new): Use the obstack.
|
||||
(init_pre): Initialize obstack.
|
||||
|
|
11
gcc/cse.c
11
gcc/cse.c
|
@ -3787,7 +3787,16 @@ fold_rtx (rtx x, rtx insn)
|
|||
new = simplify_unary_operation (code, mode,
|
||||
const_arg0 ? const_arg0 : folded_arg0,
|
||||
mode_arg0);
|
||||
if (new != 0 && is_const)
|
||||
/* NEG of PLUS could be converted into MINUS, but that causes
|
||||
expressions of the form
|
||||
(CONST (MINUS (CONST_INT) (SYMBOL_REF)))
|
||||
which many ports mistakenly treat as LEGITIMATE_CONSTANT_P.
|
||||
FIXME: those ports should be fixed. */
|
||||
if (new != 0 && is_const
|
||||
&& GET_CODE (new) == PLUS
|
||||
&& (GET_CODE (XEXP (new, 0)) == SYMBOL_REF
|
||||
|| GET_CODE (XEXP (new, 0)) == LABEL_REF)
|
||||
&& GET_CODE (XEXP (new, 1)) == CONST_INT)
|
||||
new = gen_rtx_CONST (mode, new);
|
||||
}
|
||||
break;
|
||||
|
|
Loading…
Add table
Reference in a new issue