This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/30451] New: incorrect attributes in *movti_ppc64 of rs6000.md
- From: "dkwan at transmeta dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 12 Jan 2007 20:39:40 -0000
- Subject: [Bug target/30451] New: incorrect attributes in *movti_ppc64 of rs6000.md
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
I found the following problem in rs6000.md:
(define_insn "*movti_ppc64"
[(set (match_operand:TI 0 "nonimmediate_operand" "=r,o<>,r")
(match_operand:TI 1 "input_operand" "r,r,m"))]
"TARGET_POWERPC64 && (gpc_reg_operand (operands[0], TImode)
|| gpc_reg_operand (operands[1], TImode))"
"#"
[(set_attr "type" "*,load,store")])
It appears that the order of the load and store attributes in the set_attr
expression is incorrect. If operand 0 is memory (o<>) and operand 1 is a
register (r), the instruction should be a store, not a load. Similarly, if
operand 0 is a register ("r") and operand 1 memory ("m"), the instruction
should be load, not a store.
I think either the constraint order or the attribute order need to be reversed
to make constraints and attributes match.
--
Summary: incorrect attributes in *movti_ppc64 of rs6000.md
Product: gcc
Version: 4.1.1
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: target
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: dkwan at transmeta dot com
GCC build triplet: x86_64-unknown-linux-gnu
GCC host triplet: x86_64-unknown-linux-gnu
GCC target triplet: ppu-unknown-lv2
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30451