diff options
author | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-12-21 14:51:42 +0000 |
---|---|---|
committer | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-12-21 14:51:42 +0000 |
commit | a5dda0b9d89185bd2237e65e39973d49ac618210 (patch) | |
tree | 99bab36dcd38c19b767f60a3869d696e3c2fef2b /gcc | |
parent | c520624241927a32cb77d67d8cdc507c0a338b2e (diff) | |
download | gcc-a5dda0b9d89185bd2237e65e39973d49ac618210.tar.gz |
PR rtl-optimization/47008
* postreload.c (reload_combine_note_store): Also handle
PRE_MODIFY and POST_MODIFY.
* gfortran.dg/pr47008.f03: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@168117 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/postreload.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/pr47008.f03 | 24 |
4 files changed, 37 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 14d973b66a5..2b47e8e3f40 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2010-12-21 Jakub Jelinek <jakub@redhat.com> + + PR rtl-optimization/47008 + * postreload.c (reload_combine_note_store): Also handle + PRE_MODIFY and POST_MODIFY. + 2010-12-21 Ulrich Weigand <Ulrich.Weigand@de.ibm.com> * config/arm/arm.c (require_pic_register): Set INSN_LOCATOR for all diff --git a/gcc/postreload.c b/gcc/postreload.c index 97e8b4a7ed0..15c22e28e07 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 50cfa32e38c..3a66f1c15d3 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2010-12-21 Jakub Jelinek <jakub@redhat.com> + + PR rtl-optimization/47008 + * gfortran.dg/pr47008.f03: New test. + 2010-12-21 Nicola Pero <nicola.pero@meta-innovation.com> PR libobjc/45953 diff --git a/gcc/testsuite/gfortran.dg/pr47008.f03 b/gcc/testsuite/gfortran.dg/pr47008.f03 new file mode 100644 index 00000000000..a3e1e1dae0b --- /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 |