------- Additional Comments From rth at gcc dot gnu dot org 2004-12-09 06:58 ------- I think the correct solution is to explicitly *clear* TREE_ADDRESSABLE in split_complex_args and set DECL_ARTIFICIAL so that the two pieces get allocated to pseudo registers. Then unsplit_complex needs to notice that the original decl is TREE_ADDRESSABLE, allocate contiguous memory, and store the two pseudos into it.
Something to work on for 4.1 might be noticing that the two members of the concat live in adjacent parameter memory, and promote that parameter memory to the address of the entire complex. That wouldn't be particularly easy at the stage that unsplit_complex is currently called. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18896