https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112958
Bug ID: 112958
Summary: [14 regression] s-exnllf.ads etc. don't compile on
32-bit FreeBSD/x86
Product: gcc
Version: 14.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: ada
Assignee: unassigned at gcc dot gnu.org
Reporter: ro at gcc dot gnu.org
CC: andreast at gcc dot gnu.org, dkm at gcc dot gnu.org
Target Milestone: ---
Host: x86_64-unknown-freebsd14.0
Target: x86_64-unknown-freebsd14.0
Build: x86_64-unknown-freebsd14.0
On current trunk, at least libgnat sources don't compile on 32-bit FreeBSD/x86:
s-exnllf.ads:38:04: warning: in instantiation at s-dorepr.adb:82 [enabled by
def
ault]
s-exnllf.ads:38:04: warning: in instantiation at s-exponr.adb:54 [enabled by
def
ault]
s-exnllf.ads:38:04: warning: "Temp" overlays smaller object [enabled by
default]
s-exnllf.ads:38:04: warning: program execution may be erroneous [enabled by
defa
ult]
s-exnllf.ads:38:04: warning: size of "Temp" is 96 [enabled by default]
s-exnllf.ads:38:04: warning: size of "Rep64" is 64 [enabled by default]
make[9]: *** [../gcc-interface/Makefile:306: s-exnllf.o] Error 1
-imgllf.ads:49:04: warning: in instantiation at s-dorepr.adb:82 [enabled by def
ault]
s-imgllf.ads:49:04: warning: in instantiation at s-imager.adb:61 [enabled by
def
ault]
s-imgllf.ads:49:04: warning: "Temp" overlays smaller object [enabled by
default]
s-imgllf.ads:49:04: warning: program execution may be erroneous [enabled by
defa
ult]
s-imgllf.ads:49:04: warning: size of "Temp" is 96 [enabled by default]
s-imgllf.ads:49:04: warning: size of "Rep64" is 64 [enabled by default]
make[9]: *** [../gcc-interface/Makefile:309: s-imgllf.o] Error 1
I suspect this is due to to FreeBSD/x86's unusual long double format in the
32-bit case: i386/freebsd.h has
#define TARGET_96_ROUND_53_LONG_DOUBLE (!TARGET_64BIT)