[Bug fortran/107595] ICE in ix86_push_argument, at config/i386/i386.cc:4335
anlauf at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Thu Nov 17 21:29:39 GMT 2022
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107595
anlauf at gcc dot gnu.org changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |anlauf at gcc dot gnu.org
--- Comment #6 from anlauf at gcc dot gnu.org ---
Slight reduction of the testcase:
program p
type t
integer, pointer :: b
end type
! type(t) :: x = t(null()) ! OK
type(t) x /t(null())/ ! ICE
if (associated (x%b)) stop
end
Comparing the -fdump-fortran-original for both variants:
@@ -15,7 +15,7 @@
result: associated
symtree: 'null' || symbol: 'null'
type spec : (INTEGER 4)
- attributes: (PROCEDURE INTRINSIC-PROC FUNCTION IMPLICIT-TYPE
ARRAY-OUTER-DEPENDENCY)
+ attributes: (PROCEDURE FUNCTION IMPLICIT-TYPE ARRAY-OUTER-DEPENDENCY)
result: null
symtree: 'p' || symbol: 'p'
type spec : (UNKNOWN 0)
@@ -27,8 +27,8 @@
result: t
symtree: 'x' || symbol: 'x'
type spec : (DERIVED t)
- attributes: (VARIABLE IMPLICIT-SAVE)
- value: t(NULL())
+ attributes: (VARIABLE DATA)
+ value: t(null[()])
code:
IF _gfortran_associated[[((p:x % b) ((arg not-present)))]]
Are we just missing the resolution of NULL() in the failing case early enough?
More information about the Gcc-bugs
mailing list