This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [RFC/CFT] Hookize TARGET_UNWIND_INFO and related macros


On 09/17/2010 11:02 AM, Steve Ellcey wrote:
> Richard,
> 
> I finally has some time to test this patch on IA64 HP-UX and Linux and I
> got build failures on both systems.  Using a preprocessed version of
> libgcov.c I see:
> 
>  $ obj_gcc/gcc/cc1 -mlp64 -O2 -g -quiet x.i
> x.i: In function 'gcov_exit':
> x.i:3169:1: internal compiler error: in dwarf2out_frame_debug_expr, at
> dwarf2out.c:2304
> Please submit a full bug report,
> with preprocessed source if appropriate.
> See <http://gcc.gnu.org/bugs.html> for instructions.
> 
> Looks like it is failing on this assert:
> 
>              /* Saving a register in a register.  */
>               gcc_assert (!fixed_regs [REGNO (dest)]
>                           /* For the SPARC and its register window.  */
>                           || (DWARF_FRAME_REGNUM (REGNO (src))
>                               == DWARF_FRAME_RETURN_COLUMN));
> 
> It looks like both src and dest are:
> 
> (reg/f:DI 12 r12)
> 
> and r12 is listed in FIXED_REGISTERS as the stack pointer.

Try this.


r~


--- a/gcc/config/ia64/ia64.c
+++ b/gcc/config/ia64/ia64.c
@@ -3688,7 +3688,8 @@ ia64_expand_epilogue (int sibcall_p)
   else if (frame_pointer_needed)
     {
       insn = emit_move_insn (stack_pointer_rtx, hard_frame_pointer_rtx);
-      RTX_FRAME_RELATED_P (insn) = 1;
+      /* We don't need to mark this frame-related, since the frame pointer
+        will remain valid up until the return insn deallocates it.  */
     }
   else if (current_frame_info.total_size)
     {


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]