[Bug lto/40903] LTO doesn't merge common sections properly
rth at gcc dot gnu dot org
gcc-bugzilla@gcc.gnu.org
Wed Jul 29 17:56:00 GMT 2009
------- Comment #2 from rth at gcc dot gnu dot org 2009-07-29 17:55 -------
I believe a "proper" way to handle this, preserving the semantics that
the linker provides, is to transform this into
union {
double _1;
int _2;
} i;
and replace occurrences with i._1, i._2, etc.
Perhaps a more interesting example to look at, besides the arguable
coding errors in SPEC, is the usages
core_cia.c:} saved_config __attribute((common));
core_t2.c:} t2_saved_config __attribute((common));
core_titan.c:} saved_config[4] __attribute__((common));
core_tsunami.c:} saved_config[2] __attribute__((common));
sys_sio.c:} saved_config __attribute((common));
in linux/arch/alpha/kernel/. Each usage is for a different hardware
type, and therefore mutually exclusive.
I believe there are Fortran common blocks that expect union-like
semantics as well.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40903
More information about the Gcc-bugs
mailing list