re PR target/38868 (r143152 breaks output routines in xplor-nih)

gcc:
2008-01-20  Paolo Bonzini  <bonzini@gnu.org>

	PR target/38868
	* emit-rtl.c (adjust_address_1): Make sure memref is never
	overwritten.

gcc/testsuite:
2008-01-20  Paolo Bonzini  <bonzini@gnu.org>

	PR target/38868
	* gfortran.dg/pr38868.f: New testcase.

From-SVN: r143513
This commit is contained in:
Paolo Bonzini 2009-01-20 13:24:25 +00:00 committed by Paolo Bonzini
parent cbb8dee326
commit 09efeca1a4
4 changed files with 34 additions and 1 deletions

View File

@ -1,3 +1,9 @@
2008-01-20 Paolo Bonzini <bonzini@gnu.org>
PR target/38868
* emit-rtl.c (adjust_address_1): Make sure memref is never
overwritten.
2009-01-20 Ben Elliston <bje@au.ibm.com>
* libgcov.c (__gcov_execl, __gcov_execlp, __gcov_execle): Remove

View File

@ -1,6 +1,6 @@
/* Emit RTL for the GCC expander.
Copyright (C) 1987, 1988, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
Free Software Foundation, Inc.
This file is part of GCC.
@ -2035,6 +2035,11 @@ adjust_address_1 (rtx memref, enum machine_mode mode, HOST_WIDE_INT offset,
new_rtx = change_address_1 (memref, mode, addr, validate);
/* If the address is a REG, change_address_1 rightfully returns memref,
but this would destroy memref's MEM_ATTRS. */
if (new_rtx == memref && offset != 0)
new_rtx = copy_rtx (new_rtx);
/* Compute the new values of the memory attributes due to this adjustment.
We add the offsets and update the alignment. */
if (memoffset)

View File

@ -1,3 +1,8 @@
2008-01-20 Paolo Bonzini <bonzini@gnu.org>
PR target/38868
* gfortran.dg/pr38868.f: New testcase.
2009-01-20 Richard Guenther <rguenther@suse.de>
* gcc.c-torture/execute/pr36227.c: Move ...

View File

@ -0,0 +1,17 @@
! { dg-do compile }
! { dg-options "-O2 -fdump-rtl-expand" }
PROGRAM testcase
IMPLICIT NONE
CHARACTER*4 ANER(18)
CHARACTER*80 LINE
aner = ''
ANER(1)='A '
ANER(2)=' '
LINE=' '
LINE(78:80)='xyz'
WRITE(*,'(A82)') "'"//LINE//"'"
END
! { dg-final { scan-rtl-dump-times "line\\\+80" 0 "expand" } }
! { dg-final { cleanup-rtl-dump "expand" } } */