From: Jakub Jelinek Date: Wed, 14 Dec 2005 20:30:46 +0000 (+0100) Subject: re PR debug/25023 (ICE in def_cfa_1, at dwarf2out.c:792) X-Git-Tag: releases/gcc-4.2.0~5352 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=69642eaeafc5e58d41866d8db73dd73ec134067a;p=thirdparty%2Fgcc.git 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 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3831d49dfdbb..57cdbc34a847 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 33b9c6f7f15e..74572188fdd6 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 dc707b3c9900..15f48b361e68 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 000000000000..b8cb7cf0f5e2 --- /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; +}