From: Jakub Jelinek Date: Tue, 21 Dec 2010 14:51:42 +0000 (+0100) Subject: re PR rtl-optimization/47008 (gfortran.dg/extends_{23}.f03 FAIL with -Os -fschedule... X-Git-Tag: releases/gcc-4.6.0~1713 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=96676a5df76b1fe038fde93107ef7107c17e7ee6;p=thirdparty%2Fgcc.git re PR rtl-optimization/47008 (gfortran.dg/extends_{23}.f03 FAIL with -Os -fschedule-insns) PR rtl-optimization/47008 * postreload.c (reload_combine_note_store): Also handle PRE_MODIFY and POST_MODIFY. * gfortran.dg/pr47008.f03: New test. From-SVN: r168117 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 14d973b66a57..2b47e8e3f40b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2010-12-21 Jakub Jelinek + + PR rtl-optimization/47008 + * postreload.c (reload_combine_note_store): Also handle + PRE_MODIFY and POST_MODIFY. + 2010-12-21 Ulrich Weigand * config/arm/arm.c (require_pic_register): Set INSN_LOCATOR for all diff --git a/gcc/postreload.c b/gcc/postreload.c index 97e8b4a7ed0f..15c22e28e077 100644 --- a/gcc/postreload.c +++ b/gcc/postreload.c @@ -1415,7 +1415,8 @@ reload_combine_note_store (rtx dst, const_rtx set, void *data ATTRIBUTE_UNUSED) { dst = XEXP (dst, 0); if (GET_CODE (dst) == PRE_INC || GET_CODE (dst) == POST_INC - || GET_CODE (dst) == PRE_DEC || GET_CODE (dst) == POST_DEC) + || GET_CODE (dst) == PRE_DEC || GET_CODE (dst) == POST_DEC + || GET_CODE (dst) == PRE_MODIFY || GET_CODE (dst) == POST_MODIFY) { regno = REGNO (XEXP (dst, 0)); mode = GET_MODE (XEXP (dst, 0)); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 50cfa32e38c4..3a66f1c15d39 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2010-12-21 Jakub Jelinek + + PR rtl-optimization/47008 + * gfortran.dg/pr47008.f03: New test. + 2010-12-21 Nicola Pero PR libobjc/45953 diff --git a/gcc/testsuite/gfortran.dg/pr47008.f03 b/gcc/testsuite/gfortran.dg/pr47008.f03 new file mode 100644 index 000000000000..a3e1e1dae0b5 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr47008.f03 @@ -0,0 +1,24 @@ +! PR rtl-optimization/47008 +! { dg-do run } +! { dg-options "-Os -fno-asynchronous-unwind-tables -fschedule-insns -fsched-pressure -fno-inline" { target i?86-*-* x86_64-*-* } } + +program main + type :: t + integer :: i + character(24) :: c + type (t), pointer :: p + end type t + type(t), pointer :: r, p + allocate (p) + p = t (123455, "", p) + r => entry ("", 123456, 1, "", 99, "", p) + if (p%i /= 123455) call abort +contains + function entry (x, i, j, c, k, d, p) result (q) + integer :: i, j, k + character (*) :: x, c, d + type (t), pointer :: p, q + allocate (q) + q = t (i, c, p) + end function +end program main