re PR middle-end/49308 (segfault in rest_of_handle_ud_dce () at gcc/gcc/dce.c:518)
PR middle-end/49308 * dce.c (reset_unmarked_insns_debug_uses): Avoid shadowing insn variable. After resetting and rescanning insn continue with previous statement. * gfortran.dg/pr49308.f90: New test. From-SVN: r174839
This commit is contained in:
parent
10c4cabcde
commit
8ced31fe6d
|
@ -1,3 +1,10 @@
|
||||||
|
2011-06-09 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
PR middle-end/49308
|
||||||
|
* dce.c (reset_unmarked_insns_debug_uses): Avoid shadowing insn
|
||||||
|
variable. After resetting and rescanning insn continue with previous
|
||||||
|
statement.
|
||||||
|
|
||||||
2011-06-09 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
|
2011-06-09 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
|
||||||
|
|
||||||
* configure.ac (gcc_cv_as_hidden): Enable on *-*-darwin*.
|
* configure.ac (gcc_cv_as_hidden): Enable on *-*-darwin*.
|
||||||
|
|
|
@ -514,11 +514,11 @@ reset_unmarked_insns_debug_uses (void)
|
||||||
struct df_link *defs;
|
struct df_link *defs;
|
||||||
for (defs = DF_REF_CHAIN (use); defs; defs = defs->next)
|
for (defs = DF_REF_CHAIN (use); defs; defs = defs->next)
|
||||||
{
|
{
|
||||||
rtx insn;
|
rtx ref_insn;
|
||||||
if (DF_REF_IS_ARTIFICIAL (defs->ref))
|
if (DF_REF_IS_ARTIFICIAL (defs->ref))
|
||||||
continue;
|
continue;
|
||||||
insn = DF_REF_INSN (defs->ref);
|
ref_insn = DF_REF_INSN (defs->ref);
|
||||||
if (!marked_insn_p (insn))
|
if (!marked_insn_p (ref_insn))
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (!defs)
|
if (!defs)
|
||||||
|
@ -527,6 +527,7 @@ reset_unmarked_insns_debug_uses (void)
|
||||||
each of the DEFs? */
|
each of the DEFs? */
|
||||||
INSN_VAR_LOCATION_LOC (insn) = gen_rtx_UNKNOWN_VAR_LOC ();
|
INSN_VAR_LOCATION_LOC (insn) = gen_rtx_UNKNOWN_VAR_LOC ();
|
||||||
df_insn_rescan_debug_internal (insn);
|
df_insn_rescan_debug_internal (insn);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,3 +1,8 @@
|
||||||
|
2011-06-09 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
PR middle-end/49308
|
||||||
|
* gfortran.dg/pr49308.f90: New test.
|
||||||
|
|
||||||
2011-06-08 Jason Merrill <jason@redhat.com>
|
2011-06-08 Jason Merrill <jason@redhat.com>
|
||||||
|
|
||||||
* g++.dg/cpp0x/noexcept11.C: New.
|
* g++.dg/cpp0x/noexcept11.C: New.
|
||||||
|
|
|
@ -0,0 +1,28 @@
|
||||||
|
! PR middle-end/49308
|
||||||
|
! { dg-do compile }
|
||||||
|
! { dg-options "-O2 -funroll-loops -g" }
|
||||||
|
|
||||||
|
subroutine foo(n, b, d, e)
|
||||||
|
type t
|
||||||
|
integer :: f
|
||||||
|
end type t
|
||||||
|
type s
|
||||||
|
type(t), pointer :: g
|
||||||
|
end type s
|
||||||
|
type u
|
||||||
|
type(s), dimension(:), pointer :: h
|
||||||
|
end type
|
||||||
|
integer :: i, k, n
|
||||||
|
type(u), pointer :: a, e
|
||||||
|
character(len=250) :: b, c, d
|
||||||
|
logical :: l
|
||||||
|
do i = 1, n
|
||||||
|
j = i - 1
|
||||||
|
if (j/=0) c = trim(b) // adjustl(d(j))
|
||||||
|
end do
|
||||||
|
a => e
|
||||||
|
do k = 1, size(a%h)
|
||||||
|
l = (a%h(k)%g%f == a%h(1)%g%f)
|
||||||
|
if (.not.(l)) call bar()
|
||||||
|
enddo
|
||||||
|
end subroutine foo
|
Loading…
Reference in New Issue