Hi Jason. Hi Richard. While adjusting the limbdo_die_list for early debug I noticed we weren't early generating C++ constructors/destructors. This got me on a detour of sorts. I noticed dwarf2out's gen_member_die() disallows generation of clones earlier, by design: /* Don't include clones in the member list. */ if (DECL_ABSTRACT_ORIGIN (member)) continue; I played around trying to disable this "feature", but my approach ran into various walls, and I decided instead to attack it from the front-end side. The attached patch generates early DIEs for the C++ clones in the C++ parser. I'd be (un)happy to revisit the dwarf2out approach if it's deemed more appropriate. Now back to limbdo_die_list... My approach is to flush the limbo list, generically, after the front-ends have finished, by adding a new "early_finish" debug hook. This gets rid of any permanence into LTO time. Then I flush it out again, if the middle end (or LTO, etc) has added any limbo DIEs. I wish we didn't need to flush the limbo list past the compilation proper, but some things like Cilk+ generate function trees way late in the game, so we end up generating limbo DIEs past where I'd like to. Please see the comment in the source code. All in all, this patch should get rid of any middle-end dependence on the early debug generated limbo DIEs. Are you happy with this? I'd like to get your input before committing to this approach. Thanks. Aldy