From 69642eaeafc5e58d41866d8db73dd73ec134067a Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Wed, 14 Dec 2005 21:30:46 +0100 Subject: [PATCH] re PR debug/25023 (ICE in def_cfa_1, at dwarf2out.c:792) 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. From-SVN: r108537 --- gcc/ChangeLog | 7 +++++++ gcc/config/i386/i386.c | 7 ++----- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.dg/pr25023.c | 12 ++++++++++++ 4 files changed, 26 insertions(+), 5 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/pr25023.c 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 + + 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 * 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 + + PR debug/25023 + * gcc.dg/pr25023.c: New test. + 2005-12-14 Kaveh R. Ghazi * 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; +} -- 2.30.2