mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-01-27 20:44:55 +08:00
m32r.md, [...]: Add some comments regarding use of dead_or_set_p.
* m32r.md, mips.md, mn10200.md, mn10300.md, pyr.md: Add some comments regarding use of dead_or_set_p. From-SVN: r17514
This commit is contained in:
parent
e95f01957f
commit
4b6bb562de
@ -1,3 +1,8 @@
|
||||
Tue Jan 27 23:01:55 1998 Mike Stump (mrs@wrs.com)
|
||||
|
||||
* m32r.md, mips.md, mn10200.md, mn10300.md, pyr.md: Add
|
||||
some comments regarding use of dead_or_set_p.
|
||||
|
||||
Tue Jan 27 22:14:48 1998 Todd Vierling <tv@pobox.com>
|
||||
|
||||
* fixincludes: Tweak fix for struct exception in math.h
|
||||
|
@ -1,4 +1,4 @@
|
||||
;; Machine description of the M32R/D cpu for GNU C compiler
|
||||
;; Machine description of the Mitsubishi M32R cpu for GNU C compiler
|
||||
;; Copyright (C) 1996, 1997 Free Software Foundation, Inc.
|
||||
|
||||
;; This file is part of GNU CC.
|
||||
@ -191,7 +191,7 @@
|
||||
|
||||
(define_insn "*movsi_insn"
|
||||
[(set (match_operand:SI 0 "move_dest_operand" "=r,r,r,r,r,r,r,m")
|
||||
;; FIXME: Do we need a const_double constraint here for large unsigned values?
|
||||
;; ??? Do we need a const_double constraint here for large unsigned values?
|
||||
(match_operand:SI 1 "move_src_operand" "r,I,J,MQ,L,N,m,r"))]
|
||||
"register_operand (operands[0], SImode) || register_operand (operands[1], SImode)"
|
||||
"@
|
||||
@ -221,7 +221,7 @@
|
||||
int shift;
|
||||
|
||||
/* In all cases we will emit two instructions. However we try to
|
||||
use 2 byte instructions whereever possible. We can assume the
|
||||
use 2 byte instructions wherever possible. We can assume the
|
||||
constant isn't loadable with any of ldi, ld24, or seth. */
|
||||
|
||||
/* See if we can load a 24 bit unsigned value and invert it. */
|
||||
@ -265,7 +265,7 @@
|
||||
;; [then seth + ld/st would work for any object in the area]. Doing this
|
||||
;; would require special handling of _SDA_BASE_ (its value would be
|
||||
;; (.sdata + 32K) & 0xffff0000) and reloc computations would be different
|
||||
;; [I think]. What to do about this is defered until later and for now we
|
||||
;; [I think]. What to do about this is deferred until later and for now we
|
||||
;; require .sdata to be in the first 16M.
|
||||
|
||||
(define_expand "movsi_sda"
|
||||
@ -584,7 +584,7 @@
|
||||
(set_attr "length" "4,*")])
|
||||
|
||||
;; Sign extension instructions.
|
||||
;; FIXME: See v850.md.
|
||||
;; ??? See v850.md.
|
||||
|
||||
;; These patterns originally accepted general_operands, however, slightly
|
||||
;; better code is generated by only accepting register_operands, and then
|
||||
@ -901,7 +901,7 @@
|
||||
;;
|
||||
;; On the m32r it is more efficient to use the bxxz instructions and
|
||||
;; thus merge the compare and branch into one instruction, so they are
|
||||
;; prefered.
|
||||
;; preferred.
|
||||
|
||||
(define_expand "cmpsi"
|
||||
[(set (reg:CC 17)
|
||||
@ -1463,6 +1463,8 @@
|
||||
[(set (mem:SI (plus:SI (match_operand:SI 0 "register_operand" "r")
|
||||
(const_int 4)))
|
||||
(match_operand:SI 1 "register_operand" "r"))]
|
||||
;; ??? This is WRONG, dead_or_set_p cannot be used after reload
|
||||
;; because the REG_DEAD notes are not maintained after reload.
|
||||
"dead_or_set_p (insn, operands[0])"
|
||||
"st %1,@+%0"
|
||||
[(set_attr "type" "store")
|
||||
|
@ -9771,6 +9771,8 @@ move\\t%0,%z4\\n\\
|
||||
"TARGET_MIPS16
|
||||
&& GET_CODE (operands[0]) == REG
|
||||
&& REGNO (operands[0]) == 24
|
||||
;; ??? This is WRONG, dead_or_set_p cannot be used after reload
|
||||
;; because the REG_DEAD notes are not maintained after reload.
|
||||
&& dead_or_set_p (insn, operands[0])
|
||||
&& GET_CODE (operands[1]) == REG
|
||||
&& M16_REG_P (REGNO (operands[1]))"
|
||||
@ -9796,6 +9798,8 @@ move\\t%0,%z4\\n\\
|
||||
"TARGET_MIPS16 && TARGET_64BIT
|
||||
&& GET_CODE (operands[0]) == REG
|
||||
&& REGNO (operands[0]) == 24
|
||||
;; ??? This is WRONG, dead_or_set_p cannot be used after reload
|
||||
;; because the REG_DEAD notes are not maintained after reload.
|
||||
&& dead_or_set_p (insn, operands[0])
|
||||
&& GET_CODE (operands[1]) == REG
|
||||
&& M16_REG_P (REGNO (operands[1]))"
|
||||
@ -9827,6 +9831,8 @@ move\\t%0,%z4\\n\\
|
||||
&& REGNO (operands[1]) == 24
|
||||
&& GET_CODE (operands[0]) == REG
|
||||
&& M16_REG_P (REGNO (operands[0]))
|
||||
;; ??? This is WRONG, dead_or_set_p cannot be used after reload
|
||||
;; because the REG_DEAD notes are not maintained after reload.
|
||||
&& dead_or_set_p (insn, operands[0])"
|
||||
"*
|
||||
{
|
||||
@ -9852,6 +9858,8 @@ move\\t%0,%z4\\n\\
|
||||
&& REGNO (operands[1]) == 24
|
||||
&& GET_CODE (operands[0]) == REG
|
||||
&& M16_REG_P (REGNO (operands[0]))
|
||||
;; ??? This is WRONG, dead_or_set_p cannot be used after reload
|
||||
;; because the REG_DEAD notes are not maintained after reload.
|
||||
&& dead_or_set_p (insn, operands[0])"
|
||||
"*
|
||||
{
|
||||
|
@ -1888,6 +1888,8 @@
|
||||
(set (pc) (if_then_else (ge (cc0) (const_int 0))
|
||||
(match_operand 1 "" "")
|
||||
(pc)))]
|
||||
;; ??? This is WRONG, dead_or_set_p cannot be used after reload
|
||||
;; because the REG_DEAD notes are not maintained after reload.
|
||||
"dead_or_set_p (ins1, operands[0]) && REG_OK_FOR_INDEX_P (operands[0])"
|
||||
"add %0,%0\;bcc %1"
|
||||
[(set_attr "cc" "clobber")])
|
||||
@ -1897,6 +1899,8 @@
|
||||
(set (pc) (if_then_else (lt (cc0) (const_int 0))
|
||||
(match_operand 1 "" "")
|
||||
(pc)))]
|
||||
;; ??? This is WRONG, dead_or_set_p cannot be used after reload
|
||||
;; because the REG_DEAD notes are not maintained after reload.
|
||||
"dead_or_set_p (ins1, operands[0]) && REG_OK_FOR_INDEX_P (operands[0])"
|
||||
"add %0,%0\;bcs %1"
|
||||
[(set_attr "cc" "clobber")])
|
||||
@ -1906,6 +1910,8 @@
|
||||
(set (pc) (if_then_else (ge (cc0) (const_int 0))
|
||||
(pc)
|
||||
(match_operand 1 "" "")))]
|
||||
;; ??? This is WRONG, dead_or_set_p cannot be used after reload
|
||||
;; because the REG_DEAD notes are not maintained after reload.
|
||||
"dead_or_set_p (ins1, operands[0]) && REG_OK_FOR_INDEX_P (operands[0])"
|
||||
"add %0,%0\;bcs %1"
|
||||
[(set_attr "cc" "clobber")])
|
||||
@ -1915,6 +1921,8 @@
|
||||
(set (pc) (if_then_else (lt (cc0) (const_int 0))
|
||||
(pc)
|
||||
(match_operand 1 "" "")))]
|
||||
;; ??? This is WRONG, dead_or_set_p cannot be used after reload
|
||||
;; because the REG_DEAD notes are not maintained after reload.
|
||||
"dead_or_set_p (ins1, operands[0]) && REG_OK_FOR_INDEX_P (operands[0])"
|
||||
"add %0,%0\;bcc %1"
|
||||
[(set_attr "cc" "clobber")])
|
||||
@ -1924,6 +1932,8 @@
|
||||
(set (pc) (if_then_else (ge (cc0) (const_int 0))
|
||||
(match_operand 1 "" "")
|
||||
(pc)))]
|
||||
;; ??? This is WRONG, dead_or_set_p cannot be used after reload
|
||||
;; because the REG_DEAD notes are not maintained after reload.
|
||||
"dead_or_set_p (ins1, operands[0]) && REG_OK_FOR_INDEX_P (operands[0])"
|
||||
"add %0,%0\;bccx %1"
|
||||
[(set_attr "cc" "clobber")])
|
||||
@ -1933,6 +1943,8 @@
|
||||
(set (pc) (if_then_else (lt (cc0) (const_int 0))
|
||||
(match_operand 1 "" "")
|
||||
(pc)))]
|
||||
;; ??? This is WRONG, dead_or_set_p cannot be used after reload
|
||||
;; because the REG_DEAD notes are not maintained after reload.
|
||||
"dead_or_set_p (ins1, operands[0]) && REG_OK_FOR_INDEX_P (operands[0])"
|
||||
"add %0,%0\;bcsx %1"
|
||||
[(set_attr "cc" "clobber")])
|
||||
@ -1942,6 +1954,8 @@
|
||||
(set (pc) (if_then_else (ge (cc0) (const_int 0))
|
||||
(pc)
|
||||
(match_operand 1 "" "")))]
|
||||
;; ??? This is WRONG, dead_or_set_p cannot be used after reload
|
||||
;; because the REG_DEAD notes are not maintained after reload.
|
||||
"dead_or_set_p (ins1, operands[0]) && REG_OK_FOR_INDEX_P (operands[0])"
|
||||
"add %0,%0\;bcsx %1"
|
||||
[(set_attr "cc" "clobber")])
|
||||
@ -1951,6 +1965,8 @@
|
||||
(set (pc) (if_then_else (lt (cc0) (const_int 0))
|
||||
(pc)
|
||||
(match_operand 1 "" "")))]
|
||||
;; ??? This is WRONG, dead_or_set_p cannot be used after reload
|
||||
;; because the REG_DEAD notes are not maintained after reload.
|
||||
"dead_or_set_p (ins1, operands[0]) && REG_OK_FOR_INDEX_P (operands[0])"
|
||||
"add %0,%0\;bccx %1"
|
||||
[(set_attr "cc" "clobber")])
|
||||
|
@ -1397,6 +1397,8 @@
|
||||
(set (pc) (if_then_else (ge (cc0) (const_int 0))
|
||||
(match_operand 1 "" "")
|
||||
(pc)))]
|
||||
;; ??? This is WRONG, dead_or_set_p cannot be used after reload
|
||||
;; because the REG_DEAD notes are not maintained after reload.
|
||||
"dead_or_set_p (ins1, operands[0]) && REG_OK_FOR_INDEX_P (operands[0])"
|
||||
"add %0,%0\;bcc %1"
|
||||
[(set_attr "cc" "clobber")])
|
||||
@ -1406,6 +1408,8 @@
|
||||
(set (pc) (if_then_else (lt (cc0) (const_int 0))
|
||||
(match_operand 1 "" "")
|
||||
(pc)))]
|
||||
;; ??? This is WRONG, dead_or_set_p cannot be used after reload
|
||||
;; because the REG_DEAD notes are not maintained after reload.
|
||||
"dead_or_set_p (ins1, operands[0]) && REG_OK_FOR_INDEX_P (operands[0])"
|
||||
"add %0,%0\;bcs %1"
|
||||
[(set_attr "cc" "clobber")])
|
||||
@ -1415,6 +1419,8 @@
|
||||
(set (pc) (if_then_else (ge (cc0) (const_int 0))
|
||||
(pc)
|
||||
(match_operand 1 "" "")))]
|
||||
;; ??? This is WRONG, dead_or_set_p cannot be used after reload
|
||||
;; because the REG_DEAD notes are not maintained after reload.
|
||||
"dead_or_set_p (ins1, operands[0]) && REG_OK_FOR_INDEX_P (operands[0])"
|
||||
"add %0,%0\;bcs %1"
|
||||
[(set_attr "cc" "clobber")])
|
||||
@ -1424,6 +1430,8 @@
|
||||
(set (pc) (if_then_else (lt (cc0) (const_int 0))
|
||||
(pc)
|
||||
(match_operand 1 "" "")))]
|
||||
;; ??? This is WRONG, dead_or_set_p cannot be used after reload
|
||||
;; because the REG_DEAD notes are not maintained after reload.
|
||||
"dead_or_set_p (ins1, operands[0]) && REG_OK_FOR_INDEX_P (operands[0])"
|
||||
"add %0,%0\;bcc %1"
|
||||
[(set_attr "cc" "clobber")])
|
||||
|
@ -1,5 +1,5 @@
|
||||
;; GNU C machine description for Pyramid 90x, 9000, MIServer Series
|
||||
;; Copyright (C) 1989, 1990, 1995 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 1989, 1990, 1995, 1997 Free Software Foundation, Inc.
|
||||
|
||||
;; This file is part of GNU CC.
|
||||
|
||||
@ -903,7 +903,6 @@
|
||||
""
|
||||
"*
|
||||
{
|
||||
extern int optimize;
|
||||
if (optimize && REG_P (operands[0]) && REG_P (operands[1])
|
||||
&& REGNO (operands[0]) == REGNO (operands[1])
|
||||
&& already_sign_extended (insn, HImode, operands[0]))
|
||||
@ -920,7 +919,6 @@
|
||||
""
|
||||
"*
|
||||
{
|
||||
extern int optimize;
|
||||
if (optimize && REG_P (operands[0]) && REG_P (operands[1])
|
||||
&& REGNO (operands[0]) == REGNO (operands[1])
|
||||
&& already_sign_extended (insn, QImode, operands[0]))
|
||||
@ -1029,7 +1027,6 @@
|
||||
""
|
||||
"*
|
||||
{
|
||||
extern int optimize;
|
||||
if (optimize)
|
||||
switch (GET_CODE (operands[0]))
|
||||
{
|
||||
@ -1056,7 +1053,6 @@
|
||||
""
|
||||
"*
|
||||
{
|
||||
extern int optimize;
|
||||
if (optimize)
|
||||
switch (GET_CODE (operands[0]))
|
||||
{
|
||||
@ -1228,6 +1224,8 @@
|
||||
(sign_extend:SI (match_dup 1)))
|
||||
(set (cc0)
|
||||
(match_dup 2))]
|
||||
;; ??? This is WRONG, dead_or_set_p cannot be used after reload
|
||||
;; because the REG_DEAD notes are not maintained after reload.
|
||||
"dead_or_set_p (insn, operands[2])"
|
||||
"*
|
||||
cc_status.flags |= CC_NO_OVERFLOW;
|
||||
|
Loading…
Reference in New Issue
Block a user