aboutsummaryrefslogtreecommitdiff
path: root/gcc/config
diff options
context:
space:
mode:
authorJim Wilson <wilson@cygnus.com>2000-10-23 23:38:39 +0000
committerJim Wilson <wilson@gcc.gnu.org>2000-10-23 16:38:39 -0700
commit18a3c539ee506283fb09cb4646e832497cc05bf0 (patch)
tree7ed58bf400ab78ca07272eed4b6918aec3518e15 /gcc/config
parent6c6ed0ef928235a51966759aa3d6ca6cb960f334 (diff)
downloadgcc-18a3c539ee506283fb09cb4646e832497cc05bf0.zip
gcc-18a3c539ee506283fb09cb4646e832497cc05bf0.tar.gz
gcc-18a3c539ee506283fb09cb4646e832497cc05bf0.tar.bz2
Fix Turbo's LPRng compilation failure due to assembler errors.
* ia64.c (ia64_print_operand, case 'r'): Correct comment. Handle CONST_INT. * ia64.md (cmpsi_adjusted): Use %r3. (cmpdi_adjusted): Likewise. From-SVN: r37025
Diffstat (limited to 'gcc/config')
-rw-r--r--gcc/config/ia64/ia64.c5
-rw-r--r--gcc/config/ia64/ia64.md10
2 files changed, 12 insertions, 3 deletions
diff --git a/gcc/config/ia64/ia64.c b/gcc/config/ia64/ia64.c
index 2026e99..6d13ef8 100644
--- a/gcc/config/ia64/ia64.c
+++ b/gcc/config/ia64/ia64.c
@@ -3261,11 +3261,14 @@ ia64_print_operand (file, x, code)
break;
case 'r':
- /* If this operand is the constant zero, write it as zero. */
+ /* If this operand is the constant zero, write it as register zero.
+ Any register, zero, or CONST_INT value is OK here. */
if (GET_CODE (x) == REG)
fputs (reg_names[REGNO (x)], file);
else if (x == CONST0_RTX (GET_MODE (x)))
fputs ("r0", file);
+ else if (GET_CODE (x) == CONST_INT)
+ output_addr_const (file, x);
else
output_operand_lossage ("invalid %%r value");
return;
diff --git a/gcc/config/ia64/ia64.md b/gcc/config/ia64/ia64.md
index 022161b..cf6fdd2 100644
--- a/gcc/config/ia64/ia64.md
+++ b/gcc/config/ia64/ia64.md
@@ -4200,13 +4200,16 @@
"cmp4.%C1 %0, %I0 = %3, %2"
[(set_attr "type" "A")])
+;; We use %r3 because it is possible for us to match a 0, and two of the
+;; unsigned comparisons don't accept immediate operands of zero.
+
(define_insn "*cmpsi_adjusted"
[(set (match_operand:BI 0 "register_operand" "=c")
(match_operator:BI 1 "adjusted_comparison_operator"
[(match_operand:SI 2 "gr_register_operand" "r")
(match_operand:SI 3 "gr_reg_or_8bit_adjusted_operand" "rL")]))]
""
- "cmp4.%C1 %0, %I0 = %3, %2"
+ "cmp4.%C1 %0, %I0 = %r3, %2"
[(set_attr "type" "A")])
(define_insn "*cmpdi_normal"
@@ -4218,13 +4221,16 @@
"cmp.%C1 %0, %I0 = %3, %r2"
[(set_attr "type" "A")])
+;; We use %r3 because it is possible for us to match a 0, and two of the
+;; unsigned comparisons don't accept immediate operands of zero.
+
(define_insn "*cmpdi_adjusted"
[(set (match_operand:BI 0 "register_operand" "=c")
(match_operator:BI 1 "adjusted_comparison_operator"
[(match_operand:DI 2 "gr_register_operand" "r")
(match_operand:DI 3 "gr_reg_or_8bit_adjusted_operand" "rL")]))]
""
- "cmp.%C1 %0, %I0 = %3, %2"
+ "cmp.%C1 %0, %I0 = %r3, %2"
[(set_attr "type" "A")])
(define_insn "*cmpsf_internal"