cse.c (cse_insn): Enable subsitution inside libcall only for REG, SUBREG, MEM.
� * cse.c (cse_insn): Enable subsitution inside libcall only for REG, SUBREG, MEM. * rtlanal.c (replace_rtx): Prohibit replaces in CONST_DOUBLE. From-SVN: r21435
This commit is contained in:
parent
4d17a06f32
commit
1ed0205e35
3 changed files with 20 additions and 4 deletions
|
@ -1,3 +1,9 @@
|
|||
1998-07-28 Vladimir N. Makarov <vmakarov@cygnus.com>
|
||||
|
||||
* cse.c (cse_insn): Enable subsitution inside libcall only for REG,
|
||||
SUBREG, MEM.
|
||||
* rtlanal.c (replace_rtx): Prohibit replaces in CONST_DOUBLE.
|
||||
|
||||
Tue Jul 28 11:33:09 1998 Mark Mitchell <mark@markmitchell.com>
|
||||
|
||||
* cplus-dem.c (type_kind_t): New type.
|
||||
|
|
10
gcc/cse.c
10
gcc/cse.c
|
@ -6117,8 +6117,9 @@ record_jump_cond (code, mode, op0, op1, reversed_nonequality)
|
|||
Then install the new sources and destinations in the table
|
||||
of available values.
|
||||
|
||||
If IN_LIBCALL_BLOCK is nonzero, don't record any equivalence made in
|
||||
the insn. */
|
||||
If LIBCALL_INSN is nonzero, don't record any equivalence made in
|
||||
the insn. It means that INSN is inside libcall block. In this
|
||||
case LIBCALL_INSN is the corresponding insn with REG_LIBCALL. */
|
||||
|
||||
/* Data on one SET contained in the instruction. */
|
||||
|
||||
|
@ -6948,7 +6949,10 @@ cse_insn (insn, libcall_insn)
|
|||
/* If we just made a substitution inside a libcall, then we
|
||||
need to make the same substitution in any notes attached
|
||||
to the RETVAL insn. */
|
||||
if (libcall_insn)
|
||||
if (libcall_insn
|
||||
&& (GET_CODE (old_src) == REG
|
||||
|| GET_CODE (old_src) == SUBREG
|
||||
|| GET_CODE (old_src) == MEM))
|
||||
replace_rtx (REG_NOTES (libcall_insn), old_src,
|
||||
canon_reg (SET_SRC (sets[i].rtl), insn));
|
||||
|
||||
|
|
|
@ -1765,7 +1765,8 @@ inequality_comparisons_p (x)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/* Replace any occurrence of FROM in X with TO.
|
||||
/* Replace any occurrence of FROM in X with TO. The function does
|
||||
not enter into CONST_DOUBLE for the replace.
|
||||
|
||||
Note that copying is not done so X must not be shared unless all copies
|
||||
are to be modified. */
|
||||
|
@ -1777,6 +1778,11 @@ replace_rtx (x, from, to)
|
|||
register int i, j;
|
||||
register char *fmt;
|
||||
|
||||
/* The following prevents loops occurrence when we change MEM in
|
||||
CONST_DOUBLE onto the same CONST_DOUBLE. */
|
||||
if (x != 0 && GET_CODE (x) == CONST_DOUBLE)
|
||||
return x;
|
||||
|
||||
if (x == from)
|
||||
return to;
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue