This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
amd64 define_predicate fallout
- From: Richard Henderson <rth at redhat dot com>
- To: Richard Kenner <kenner at vlsi1 dot ultra dot nyu dot edu>
- Cc: gcc-patches at gcc dot gnu dot org
- Date: Fri, 13 Aug 2004 11:39:44 -0700
- Subject: amd64 define_predicate fallout
- References: <10408131506.AA14986@vlsi1.ultra.nyu.edu>
On Fri, Aug 13, 2004 at 11:06:27AM -0400, Richard Kenner wrote:
> This fixes it and is what I think you meant, right?
Yes, this is a latent bug -- the previous definition of
constant_call_address_operand didn't check its mode operand.
There are a double handful of occurences. This should fix them.
r~
Index: i386.md
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/i386/i386.md,v
retrieving revision 1.555
diff -c -p -d -u -r1.555 i386.md
--- i386.md 13 Aug 2004 15:33:54 -0000 1.555
+++ i386.md 13 Aug 2004 18:37:08 -0000
@@ -13668,7 +13668,7 @@
(match_operand 1 "" ""))]
"!SIBLING_CALL_P (insn) && !TARGET_64BIT"
{
- if (constant_call_address_operand (operands[0], QImode))
+ if (constant_call_address_operand (operands[0], Pmode))
return "call\t%P0";
return "call\t%A0";
}
@@ -13679,7 +13679,7 @@
(match_operand 1 "" ""))]
"SIBLING_CALL_P (insn) && !TARGET_64BIT"
{
- if (constant_call_address_operand (operands[0], QImode))
+ if (constant_call_address_operand (operands[0], Pmode))
return "jmp\t%P0";
return "jmp\t%A0";
}
@@ -13690,7 +13690,7 @@
(match_operand 1 "" ""))]
"!SIBLING_CALL_P (insn) && TARGET_64BIT"
{
- if (constant_call_address_operand (operands[0], QImode))
+ if (constant_call_address_operand (operands[0], Pmode))
return "call\t%P0";
return "call\t%A0";
}
@@ -19518,7 +19518,7 @@
(match_operand:SI 3 "immediate_operand" "i")))]
"!TARGET_64BIT"
{
- if (constant_call_address_operand (operands[1], QImode))
+ if (constant_call_address_operand (operands[1], Pmode))
{
if (SIBLING_CALL_P (insn))
return "jmp\t%P1";
@@ -19564,7 +19564,7 @@
(match_operand:SI 2 "" "")))]
"!SIBLING_CALL_P (insn) && !TARGET_64BIT"
{
- if (constant_call_address_operand (operands[1], QImode))
+ if (constant_call_address_operand (operands[1], Pmode))
return "call\t%P1";
return "call\t%*%1";
}
@@ -19576,7 +19576,7 @@
(match_operand:SI 2 "" "")))]
"SIBLING_CALL_P (insn) && !TARGET_64BIT"
{
- if (constant_call_address_operand (operands[1], QImode))
+ if (constant_call_address_operand (operands[1], Pmode))
return "jmp\t%P1";
return "jmp\t%*%1";
}
@@ -19588,7 +19588,7 @@
(match_operand:DI 2 "" "")))]
"!SIBLING_CALL_P (insn) && TARGET_64BIT"
{
- if (constant_call_address_operand (operands[1], QImode))
+ if (constant_call_address_operand (operands[1], Pmode))
return "call\t%P1";
return "call\t%A1";
}