------- Additional Comments From tkoenig at gcc dot gnu dot org 2005-05-24 22:40 ------- For 4-byte complex, an option is to check the alignment at runtime. If the complex is aligned on an 8-byte boundary, it should be perfectly OK to call the 8-byte-integer routines.
The check could be done with a macro like this: #define GFC_ALIGNMENT_I8(a) (((size_t) (a)) & 7 == 0) #define GFC_ALIGNMENT_I4(a) (((size_t) (a)) & 3 == 0) and the code look like if (size == 8) { if (GFC_ALIGNMENT_I8(ptr)) return internal_pack_8(whatever) else if (GFC_ALIGNMENT_I4(ptr)) return internal_pack_c4(whatever) /* Fall through to generic routine */ } OK in principle? Too horrible to contemplate? -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21333