[Bug fortran/88304] [9 Regression] ICE in use_pointer_in_frame, at tree-nested.c:267
jakub at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Wed Dec 5 09:49:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88304
--- Comment #9 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
I'll fix the tree-nested.c issue, but I'm wondering about the clobber. E.g.
for
module pr88304
implicit none
type t
integer :: b = -1
integer :: c = 2
end type t
contains
subroutine f1 (x)
integer, intent(out) :: x
x = 5
end subroutine f1
subroutine f4 (x)
integer, intent(in) :: x
end subroutine f4
subroutine f2 ()
type(t) :: x
call f3
if (x%b .ne. 5) stop 1
contains
subroutine f3
call f1 (x%b)
end subroutine f3
subroutine f5
call f4 (x%b)
end subroutine f5
end subroutine f2
end module pr88304
the clobber at the beginning of f3 doesn't make sense to me:
f3 ()
{
x = {CLOBBER};
_1 = &x.b;
f1 (_1);
}
Does the fact that you call f1 (x%b) and f1's argument is intent(in) clobber
the whole type, including x%c? I'd expect only x%b to be clobbered.
Or consider:
module pr88304
implicit none
type t
integer :: b = -1
integer :: c = 2
end type t
contains
subroutine f1 (x)
integer, intent(out) :: x
x = 5
end subroutine f1
subroutine f2 ()
type(t) :: x
call f1 (x%b)
if (x%b .ne. 5 .or. x%c .ne. 2) stop 1
end subroutine f2
end module pr88304
use pr88304
call f2
end
This fails at -O2, is it really undefined?
More information about the Gcc-bugs
mailing list