summaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorrsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4>2002-12-15 11:34:17 +0000
committerrsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4>2002-12-15 11:34:17 +0000
commita8e24d1982bb529b6b252fc9223d2a5b0a167d31 (patch)
treec8ddfcd1f936f6ef34a5c20138fca75610c0f84d /gcc
parenta434a2396524e511cc76cf4e626d22e7e252a13e (diff)
downloadgcc-a8e24d1982bb529b6b252fc9223d2a5b0a167d31.tar.gz
* config/mips/mips.md: Disable the movstrsi define_split.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@60156 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/config/mips/mips.md8
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/20021215-1.c20
4 files changed, 35 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 71233fb1081..f1147fe2129 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,7 @@
+2002-12-15 Richard Sandiford <rsandifo@redhat.com>
+
+ * config/mips/mips.md: Disable the movstrsi define_split.
+
2002-12-13 John David Anglin <dave@hiauly1.hia.nrc.ca>
* pa.c (output_millicode_call): Correct typo.
diff --git a/gcc/config/mips/mips.md b/gcc/config/mips/mips.md
index cc6cda53dba..05fdabe930f 100644
--- a/gcc/config/mips/mips.md
+++ b/gcc/config/mips/mips.md
@@ -6550,6 +6550,12 @@ move\\t%0,%z4\\n\\
;; fill a delay slot. This also prevents a bug in delayed branches
;; from showing up, which reuses one of the registers in our clobbers.
+;; ??? Disabled because it doesn't preserve alias information for
+;; operands 0 and 1. Also, the rtl for the second insn doesn't mention
+;; that it uses the registers clobbered by the first.
+;;
+;; It would probably be better to split the block into individual
+;; instructions so that the scheduler can do more with it.
(define_split
[(set (mem:BLK (match_operand:SI 0 "register_operand" ""))
(mem:BLK (match_operand:SI 1 "register_operand" "")))
@@ -6561,7 +6567,7 @@ move\\t%0,%z4\\n\\
(use (match_operand:SI 3 "small_int" ""))
(use (const_int 0))]
- "reload_completed && !TARGET_DEBUG_D_MODE && INTVAL (operands[2]) > 0"
+ "reload_completed && 0 && INTVAL (operands[2]) > 0"
;; All but the last move
[(parallel [(set (mem:BLK (match_dup 0))
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 7fc603cc378..e6f322f1bf9 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2002-12-15 Richard Sandiford <rsandifo@redhat.com>
+
+ * gcc.c-torture/execute/20021215-1.c: New test.
+
2002-12-12 Devang Patel <dpatel@apple.com>
* gcc.dg/darwin-ld-1.c: New test.
* gcc.dg/darwin-ld-2.c: New test.
diff --git a/gcc/testsuite/gcc.c-torture/execute/20021215-1.c b/gcc/testsuite/gcc.c-torture/execute/20021215-1.c
new file mode 100644
index 00000000000..19f3b2ddb12
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/execute/20021215-1.c
@@ -0,0 +1,20 @@
+int __attribute__ ((noinline))
+foo ()
+{
+ const int a[8] = { 0, 1, 2, 3, 4, 5, 6, 7 };
+ int i, sum;
+
+ sum = 0;
+ for (i = 0; i < sizeof (a) / sizeof (*a); i++)
+ sum += a[i];
+
+ return sum;
+}
+
+int
+main ()
+{
+ if (foo () != 28)
+ abort ();
+ exit (0);
+}