Hi Paul, Fortran problems are best discussed on fort...@gcc.gnu.org (in CC) ...
2018-07-12 21:22 GMT+02:00 Paul Koning <paulkon...@comcast.net>: > I tried to rebuild for target pdp11 with fortran enabled (in the past I've > just enabled C). It builds fine but the resulting compiler crashes at > startup: > > Paul-Konings-MacBook-Pro:gcc pkoning$ ./xgcc -B. -O2 -S ../../hello.f > f951: internal compiler error: gfc_validate_kind(): Got bad kind > libbacktrace could not find executable to open > Please submit a full bug report, > with preprocessed source if appropriate. > See <https://gcc.gnu.org/bugs/> for instructions. > > "hello.f" is the typical "hello world" program. Some debugging got me to > here: > > * thread #1, queue = 'com.apple.main-thread', stop reason = step over > frame #0: 0x00000001001c1c93 f951`gfc_init_kinds() [inlined] > gfc_validate_kind(type=BT_REAL, kind=<unavailable>, may_fail=false) at > trans-types.c:814 [opt] > 811 } > 812 > 813 if (rc < 0 && !may_fail) > -> 814 gfc_internal_error ("gfc_validate_kind(): Got bad kind"); > 815 > 816 return rc; > 817 } > Target 0: (f951) stopped. > > So it's unhappy about some "kind", for BT_REAL. I'm not sure what that > means. Is it mapping the available data types to Fortran "KIND" values? If > so, is there something the target has to do for this to work? Note that this > isn't an IEEE target, so if the initialization is expecting IEEE float then > that may account for it. But I have no idea what to do here, and the manual > offers no clue. A "kind" in Fortran is the size of the data type in bytes. E.g. "real(kind=4)" would be a 'single-precision' 32-bit float number, while "real(kind=8)" would be a 'double-precision' 64-bit float number. The default kind for REAL variables is 4 in gfortran, see: https://gcc.gnu.org/onlinedocs/gcc-8.1.0/gfortran/KIND-Type-Parameters.html Since pdp-11 seems to be a 16-bit platform, such a 32-bit floating-point type might not be available there? Possibly it makes sense to set the default REAL kind to 2 for such a target? Cheers, Janus