http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50633
--- Comment #7 from H.J. Lu <hjl.tools at gmail dot com> 2011-10-06 18:50:14 UTC --- This patch seems to work: diff --git a/gcc/function.c b/gcc/function.c index 863f09d..0bc1dd9 100644 --- a/gcc/function.c +++ b/gcc/function.c @@ -5312,6 +5312,21 @@ frame_required_for_rtx (rtx *loc, void *data ATTRIBUTE_UNUSED) if (x == stack_pointer_rtx || x == hard_frame_pointer_rtx || x == arg_pointer_rtx || x == pic_offset_table_rtx) return 1; + if (x != NULL + && REG_P (x) + && ((stack_pointer_rtx != NULL + && REG_P (stack_pointer_rtx) + && REGNO (x) == REGNO (stack_pointer_rtx)) + || (hard_frame_pointer_rtx != NULL + && REG_P (hard_frame_pointer_rtx) + && REGNO (x) == REGNO (hard_frame_pointer_rtx)) + || (arg_pointer_rtx != NULL + && REG_P (arg_pointer_rtx) + && REGNO (x) == REGNO (arg_pointer_rtx)) + || (pic_offset_table_rtx != NULL + && REG_P (pic_offset_table_rtx) + && REGNO (x) == REGNO (pic_offset_table_rtx)))) + return 1; return 0; }