Any chance someone could isolate a minimal version of the Ada case? Perhaps the more complex C case will show it, but it's not hard to to see what's going wrong with the real file: set a breakpoint to find the make_node_stat call that allocates the decl that's causing the ICE in make_decl_rtl and you'll see what's going on.