summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2005-12-14 20:30:46 +0000
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2005-12-14 20:30:46 +0000
commit34df68ac1383a68f7067ae205b311fc3122dfd79 (patch)
tree9fe02e5cb8e0ede43b6a97177ec83f2927b991a1
parent11d63577f44af4caa2ecc5553ac23359e83b18a3 (diff)
downloadppe42-gcc-34df68ac1383a68f7067ae205b311fc3122dfd79.tar.gz
ppe42-gcc-34df68ac1383a68f7067ae205b311fc3122dfd79.zip
PR debug/25023
* config/i386/i386.c (ix86_force_to_memory): Always use SImode push for HImode in -m32. (ix86_free_from_memory): Likewise. * gcc.dg/pr25023.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@108537 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/config/i386/i386.c7
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/pr25023.c12
4 files changed, 26 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 3831d49dfdb..57cdbc34a84 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2005-12-14 Jakub Jelinek <jakub@redhat.com>
+
+ PR debug/25023
+ * config/i386/i386.c (ix86_force_to_memory): Always use
+ SImode push for HImode in -m32.
+ (ix86_free_from_memory): Likewise.
+
2005-12-14 Richard Sandiford <richard@codesourcery.com>
* gcc/config/arm/arm.md: Provide a big-endian version of the
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 33b9c6f7f15..74572188fdd 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -15790,9 +15790,8 @@ ix86_force_to_memory (enum machine_mode mode, rtx operand)
}
break;
case HImode:
- /* It is better to store HImodes as SImodes. */
- if (!TARGET_PARTIAL_REG_STALL)
- operand = gen_lowpart (SImode, operand);
+ /* Store HImodes as SImodes. */
+ operand = gen_lowpart (SImode, operand);
/* FALLTHRU */
case SImode:
emit_insn (
@@ -15820,8 +15819,6 @@ ix86_free_from_memory (enum machine_mode mode)
if (mode == DImode || TARGET_64BIT)
size = 8;
- else if (mode == HImode && TARGET_PARTIAL_REG_STALL)
- size = 2;
else
size = 4;
/* Use LEA to deallocate stack space. In peephole2 it will be converted
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index dc707b3c990..15f48b361e6 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2005-12-14 Jakub Jelinek <jakub@redhat.com>
+
+ PR debug/25023
+ * gcc.dg/pr25023.c: New test.
+
2005-12-14 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* g++.old-deja/g++.brendan/redecl1.C,
diff --git a/gcc/testsuite/gcc.dg/pr25023.c b/gcc/testsuite/gcc.dg/pr25023.c
new file mode 100644
index 00000000000..b8cb7cf0f5e
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr25023.c
@@ -0,0 +1,12 @@
+/* PR debug/25023 */
+/* { dg-do compile } */
+/* { dg-options "-O2" } */
+/* { dg-options "-O2 -mtune=i686" { target { { i?86-*-* || x86_64-*-* } && ilp32 } } } */
+
+extern unsigned char v;
+
+float
+foo (void)
+{
+ return v;
+}
OpenPOWER on IntegriCloud