On Wed, Sep 03, 2014 at 03:01:17PM +0930, Alan Modra wrote:
> In fact if you look at the corresponding location expression for
> -fno-section-anchors code you get something quite screwy too.
> 
> 0000018f 00000108 00000114 (DW_OP_breg10 (r10): 0; DW_OP_addr: 144; 
> DW_OP_plus; DW_OP_stack_value
> 
> which is (r10) + &modulus.

Fixed with this obvious patch.  Emitting part of a .debug_loc expression
is worse than no expression.  Bootstrapped and regression tested
x86_64-linux and committed revision 214899.

        PR debug/60655
        * dwarf2out.c (mem_loc_descriptor <PLUS>): Return NULL if addend
        can't be output.

Index: gcc/dwarf2out.c
===================================================================
--- gcc/dwarf2out.c     (revision 214898)
+++ gcc/dwarf2out.c     (working copy)
@@ -12699,7 +12699,7 @@ mem_loc_descriptor (rtx rtl, enum machine_mode mod
              op1 = mem_loc_descriptor (XEXP (rtl, 1), mode, mem_mode,
                                        VAR_INIT_STATUS_INITIALIZED);
              if (op1 == 0)
-               break;
+               return NULL;
              add_loc_descr (&mem_loc_result, op1);
              add_loc_descr (&mem_loc_result,
                             new_loc_descr (DW_OP_plus, 0, 0));

-- 
Alan Modra
Australia Development Lab, IBM

Reply via email to