http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48826
--- Comment #4 from Ryan Mansfield <rmansfield at qnx dot com> 2011-05-05 13:19:43 UTC --- The issue with ARM/SH/S390 backends appears to be there was a literal pool split happening in between a call insn and the NOTE_INSN_CALL_ARG_LOCATION. It looks like on mips the issue, at least for my testcase, is the gp store in mips_split_call is getting emitted in between the call insn and the note. (call_insn 39 5 40 (parallel [ (set (reg:SI 2 $2) (call (mem:SI (reg:SI 25 $25 [196]) [0 S4 A32]) (const_int 16 [0x10]))) (clobber (reg:SI 31 $31)) (clobber (reg:SI 28 $28)) ]) /home/ryan/ice.i:2 575 {call_value_split} (nil) (expr_list:REG_DEP_TRUE (use (reg:SI 79 $fakec)) (expr_list:REG_DEP_TRUE (use (reg:SI 28 $28)) (nil)))) (insn 40 39 32 (set (reg:SI 28 $28) (mem/c:SI (plus:SI (reg/f:SI 29 $sp) (const_int 16 [0x10])) [0 S4 A32])) /home/ryan/ice.i:2 280 {*movsi_internal} (nil)) (note 32 40 7 (expr_list:REG_DEP_TRUE (concat:SI (reg:SI 79 $fakec) (reg:SI 79 $fakec)) (expr_list:REG_DEP_TRUE (concat:SI (reg:SI 28 $28) (reg:SI 28 $28)) (nil))) NOTE_INSN_CALL_ARG_LOCATION)