http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56293
--- Comment #5 from Tobias Burnus <burnus at gcc dot gnu.org> 2013-02-12
13:07:10 UTC ---
Some tests with ifort, which by default uses unaligned commons: The first test
case works, i.e. I/O with the unaligned "p" works. However, if one calls a user
procedure ("call foo(p)"), it segfaults.
Possible solutions:
a) Copy-in/copy-out around procedure calls - which is fun with large arrays.
b) Require the user to annotate the functions to possibly accept unaligned
input – or do so automatically. (With all the fun of third-party libraries like
LAPACK, BLAS, ...)
c) Simply deprecating the -fno-align-commons flag, improving the wording of
the diagnostic and the description in the man page.
Somehow, I am in favour of (c).
The question is also whether one can construct a fully standard-conform example
which fails without -fno-align-commons – and whether some real-world code uses
COMMON in a way that would fails with alignments/padding.