http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55257
--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> 2012-11-12 17:14:41 UTC --- It is a requirement if you want proper debug info or unwind info for the thunk, without that (or without calling the corresponding functions yourself, which is harder to maintain) you don't get proper debug info. It can't be called from the middle end, because some targets need to perform various things before final_start_function (or perhaps after final_end_function).