https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71363
Bug ID: 71363 Summary: Issue when sizeof(double) = sizeof(long double) Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: libfortran Assignee: unassigned at gcc dot gnu.org Reporter: paul.mustiere at gmail dot com Target Milestone: --- Hello, I am building the GNU toolchain for Android with support for Fortran, and encountered an issue when targeting x86 for the runtime library. Note: I'm using the toolchain sources provided by Google, but as far as I can tell the Fortran part is simply 4.9 since they are not trying to build with Fortran. In intrisics/cshift0.c, I get a 'duplicate case value' (http://paste.ubuntu.com/16861425/). As far as I can tell: - GFC_DTYPE_REAL_16 is defined (but not GFC_DTYPE_REAL_10), hence GFC_REAL_16 is defined as long double. - sizeof(long double) = sizeof(double) = 8, which causes the duplicate case. I find a workaround which consists of detecting both sizes in mk-kinds-h.sh and checking that they are not equal before defining GFC_REAL_16. The rest of the toolchain compiles fine, but I am not sure it's ideal. Also, I'm curious as to why Fortran seems to be fine with real (kind=16) but C doesn't seem to be able to hold variables that big. I know I'm not using the regular GNU toolchain but any help is appreciated. Cheers, Paul Mustiere