Hi, G++ could not split restore_gp. Please check this test (from #line 15017 "configure" of gcc/libstdc++-v3/).
# cat foo.cpp struct S { ~S(); }; void bar(); void foo() { S s; bar(); } # ~/dev/gcc45/build/gcc/cc1plus -quiet foo.cpp -o foo.s -mno-shared -mplt -mabicalls -G0 foo.cpp: In function â?~foo()â?T: foo.cpp:7:1: error: could not split insn (insn 29 28 30 (parallel [ (set (reg:SI 28 $28) (unspec_volatile:SI [ (const_int 0 [0x0]) ] 7)) (clobber (reg:SI 2 $2)) ]) 555 {restore_gp} (nil)) foo.cpp:7:1: internal compiler error: in final_scan_insn, at final.c:2651 Please submit a full bug report, with preprocessed source if appropriate. See <http://gcc.gnu.org/bugs.html> for instructions. -------------- Something may be wrong before we reach the "final" pass. (Or, we should have split restore_gp earlier.) Any idea? Thanks! Regards, Chao-ying