This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug rtl-optimization/38722] [4.4 Regression] Revision 143027 causes ICE in find_decomposable_subregs
- From: "jakub at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 5 Jan 2009 13:11:14 -0000
- Subject: [Bug rtl-optimization/38722] [4.4 Regression] Revision 143027 causes ICE in find_decomposable_subregs
- References: <bug-38722-6642@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #17 from jakub at gcc dot gnu dot org 2009-01-05 13:11 -------
Slightly more reduced:
! PR rtl-optimization/38722
! { dg-do compile }
! { dg-options "-O1" }
SUBROUTINE foo(x, n, ga, gc, vr)
TYPE pt
DOUBLE PRECISION, DIMENSION (:, :, :), POINTER :: cr
END TYPE pt
TYPE pu
TYPE(pt), POINTER :: pw
END TYPE pu
LOGICAL, INTENT(in) :: x, ga, gc
INTEGER :: i, n
LOGICAL :: dd, ep, fe
TYPE(pu) :: vr
TYPE(pu), DIMENSION(:), POINTER :: v
IF (.NOT. fe) THEN
IF (ga) THEN
CALL bar (dd, ep, gc)
END IF
IF (x .AND. .NOT. ga) THEN
IF (gc) THEN
DO i=1,n
CALL baz (v(i), x, gc)
v(i)%pw%cr = 1.0
END DO
DO i=1,n
IF (ep) THEN
IF (dd) THEN
IF (i==1) THEN
v(i)%pw%cr=v(i)%pw%cr + vr%pw%cr
ENDIF
END IF
END IF
END DO
END IF
ENDIF
END IF
END SUBROUTINE foo
I'd say the bug is in
/* If we will be able to accept this, we have made a
change to the destination of I3. This requires us to
do a few adjustments. */
PATTERN (i3) = newpat;
adjust_for_new_dest (i3);
being done before last check that might decide to undo_all (and without
recording the changes into undo structures). A patch which just sets a flag
and does these 2 stmts if the flag is set after the last undo_all cures this,
I'll bootstrap/regtest it soon.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38722