https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99826
--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> --- __GIMPLE(ssa) char * foo(char *p) {..} works for the first issue. I failed to make the "late" __GIMPLE spec work in a straight-forward manner. I guess we might want to change the default dumping to prefer the above order. The 2nd issue remains and can be seen as char * foo (char * p) { char * _2; <bb 2> : _2_2 = p_1(D); return _2_2; } fixing it in a generic way will likely require exposing more of grokdeclarator and eventually generating the SSA name there directly. Limited support is possible of course and the workaround is to declare a decl: char * q; __BB(2): q_2 = p_1(D); return q_2; which will work at the expense of creating a decl.