http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52857
--- Comment #3 from H.J. Lu <hjl.tools at gmail dot com> 2012-04-06 13:05:49 UTC --- For (note 21 8 17 2 (expr_list:REG_DEP_TRUE (concat:SI (reg:SI 5 di) (subreg:SI (plus:DI (reg/f:DI 16 argp) (const_int -20 [0xffffffffffffffec])) 0)) (nil)) NOTE_INSN_CALL_ARG_LOCATION) when (plus:DI (reg/f:DI 16 argp) (const_int -20 [0xffffffffffffffec])) reaches case PLUS: plus: if (is_based_loc (rtl) && GET_MODE_SIZE (mode) <= DWARF2_ADDR_SIZE && GET_MODE_CLASS (mode) == MODE_INT) mem_loc_result = based_loc_descr (XEXP (rtl, 0), INTVAL (XEXP (rtl, 1)), VAR_INIT_STATUS_INITIALIZED); else it fails "GET_MODE_SIZE (mode) <= DWARF2_ADDR_SIZE" since we have ptr_mode = SImode and Pmode == DImode. However, arg_pointer_rtx and frame_pointer_rtx are special cases. They should be allowed even if their mode sizes > DWARF2_ADDR_SIZE.