#1845: remove fortran compiler option -m128bit-long-double from general option lists ------------------------+--------------------------------------------------- Reporter: knarf | Owner: Type: defect | Status: new Priority: minor | Milestone: ET_2016_05 Component: SimFactory | Version: development version Keywords: | ------------------------+--------------------------------------------------- According to the documentation: {{{ -m96bit-long-double -m128bit-long-double These switches control the size of long double type. The i386 application binary interface specifies the size to be 96 bits, so -m96bit- long-double is the default in 32 bit mode.
Modern architectures (Pentium and newer) would prefer long double to be aligned to an 8 or 16 byte boundary. In arrays or structures conforming to the ABI, this would not be possible. So specifying a -m128bit-long- double will align long double to a 16 byte boundary by padding the long double with an additional 32 bit zero.
In the x86-64 compiler, -m128bit-long-double is the default choice as its ABI specifies that long double is to be aligned on 16 byte boundary.
Notice that neither of these options enable any extra precision over the x87 standard of 80 bits for a long double.
Warning: if you override the default value for your target ABI, the structures and arrays containing long double variables will change their size as well as function calling convention for function taking long double will be modified. Hence they will not be binary compatible with arrays or structures in code compiled without that switch. }}}
The problem with this switch is that it is target-specific; it is only defined for Intel platforms. Option lists like 'debian.cfg' should not be target specific. I don't know why this flag was given, and from above docu I can only imagine it is to preserve binary-compatibility between 32bit and 64bit long doubles. On the other hand, I have no idea how that plays out with linked libraries that might have been compiled differently, and also I have no idea where we would actually use Fortran long doubles.
Thus, I here propose to remove this flag, at least from general option lists (not machine-specific), unless of course someone objects and can name a good reason to keep it. Currently it prevents option lists like debian.cfg or ubuntu.cfg from compiling on non-Intel platforms.