[multiple changes]
authorVladimir Makarov <vmakarov@gcc.gnu.org>
Fri, 18 Dec 1998 10:46:41 +0000 (10:46 +0000)
committerVladimir Makarov <vmakarov@gcc.gnu.org>
Fri, 18 Dec 1998 10:46:41 +0000 (10:46 +0000)
1998-12-17  Vladimir N. Makarov  <vmakarov@cygnus.com>
* config/i60/i960.md (extendqihi2): Fix typo (usage ',' instead of
';').
1998-12-17  Michael Tiemann  <tiemann@axon.cygnus.com>
* i960.md (extend*, zero_extend*): Don't generate rtl that looks
like (subreg:SI (reg:SI N) 0), because it's wrong, and it hides
optimizations from the combiner.

From-SVN: r24371

gcc/ChangeLog
gcc/config/i960/i960.md

index 51964fc0a797ecd20c4aa209eb8cf2b8af9c2229..7cfdd145cfbb8aceec21a681846710bb348330d0 100644 (file)
@@ -25,6 +25,17 @@ Thu Dec 17 12:31:12 1998  Jim Wilson  <wilson@cygnus.com>
        * Makefile.in (INTERNAL_CFLAGS): Add SCHED_CFLAGS.
        (ALL_CFLAGS): Delete SCHED_CFLAGS.
 
+1998-12-17  Vladimir N. Makarov  <vmakarov@cygnus.com>
+
+       * config/i60/i960.md (extendqihi2): Fix typo (usage ',' instead of
+       ';').
+
+1998-12-17  Michael Tiemann  <tiemann@axon.cygnus.com>
+
+       * i960.md (extend*, zero_extend*): Don't generate rtl that looks
+       like (subreg:SI (reg:SI N) 0), because it's wrong, and it hides
+       optimizations from the combiner.
+
 Thu Dec 17 08:27:03 1998  J"orn Rennecke <amylaar@cygnus.co.uk>
 
        * loop.c (combine_givs_used_by_other): Don't depend on n_times_set.
index ef8848473d37e7e2a5d521b762c0a64744f4a8a1..ff73bd78fd293ce8d10b63390d742ba50ccbdbea 100644 (file)
          op1_subreg_word = SUBREG_WORD (operand1);
          operand1 = SUBREG_REG (operand1);
        }
-      operand1 = gen_rtx (SUBREG, SImode, operand1, op1_subreg_word);
+      if (GET_MODE (operand1) != SImode)
+       operand1 = gen_rtx (SUBREG, SImode, operand1, op1_subreg_word);
 
       emit_insn (gen_ashlsi3 (temp, operand1, shift_16));
       emit_insn (gen_ashrsi3 (operand0, temp, shift_16));
          op1_subreg_word = SUBREG_WORD (operand1);
          operand1 = SUBREG_REG (operand1);
        }
-      operand1 = gen_rtx (SUBREG, SImode, operand1, op1_subreg_word),
+      if (GET_MODE (operand1) != SImode)
+       operand1 = gen_rtx (SUBREG, SImode, operand1, op1_subreg_word);
 
       emit_insn (gen_ashlsi3 (temp, operand1, shift_24));
       emit_insn (gen_ashrsi3 (operand0, temp, shift_24));
          op1_subreg_word = SUBREG_WORD (operand1);
          operand1 = SUBREG_REG (operand1);
        }
-      operand1 = gen_rtx (SUBREG, SImode, operand1, op1_subreg_word);
+      if (GET_MODE (operand1) != SImode)
+       operand1 = gen_rtx (SUBREG, SImode, operand1, op1_subreg_word);
 
       if (GET_CODE (operand0) == SUBREG)
        {
          op1_subreg_word = SUBREG_WORD (operand1);
          operand1 = SUBREG_REG (operand1);
        }
-      operand1 = gen_rtx (SUBREG, SImode, operand1, op1_subreg_word);
+      if (GET_MODE (operand1) != SImode)
+       operand1 = gen_rtx (SUBREG, SImode, operand1, op1_subreg_word);
 
       emit_insn (gen_ashlsi3 (temp, operand1, shift_16));
       emit_insn (gen_lshrsi3 (operand0, temp, shift_16));
          op1_subreg_word = SUBREG_WORD (operand1);
          operand1 = SUBREG_REG (operand1);
        }
-      operand1 = gen_rtx (SUBREG, SImode, operand1, op1_subreg_word);
+      if (GET_MODE (operand1) != SImode)
+       operand1 = gen_rtx (SUBREG, SImode, operand1, op1_subreg_word);
 
       emit_insn (gen_ashlsi3 (temp, operand1, shift_24));
       emit_insn (gen_lshrsi3 (operand0, temp, shift_24));
          op1_subreg_word = SUBREG_WORD (operand1);
          operand1 = SUBREG_REG (operand1);
        }
-      operand1 = gen_rtx (SUBREG, SImode, operand1, op1_subreg_word);
+      if (GET_MODE (operand1) != SImode)
+       operand1 = gen_rtx (SUBREG, SImode, operand1, op1_subreg_word);
 
       if (GET_CODE (operand0) == SUBREG)
        {