diff options
| author | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-12-14 20:30:46 +0000 |
|---|---|---|
| committer | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-12-14 20:30:46 +0000 |
| commit | 34df68ac1383a68f7067ae205b311fc3122dfd79 (patch) | |
| tree | 9fe02e5cb8e0ede43b6a97177ec83f2927b991a1 | |
| parent | 11d63577f44af4caa2ecc5553ac23359e83b18a3 (diff) | |
| download | ppe42-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/ChangeLog | 7 | ||||
| -rw-r--r-- | gcc/config/i386/i386.c | 7 | ||||
| -rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
| -rw-r--r-- | gcc/testsuite/gcc.dg/pr25023.c | 12 |
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; +} |

