G++ BUG: bogus asm output (DWARF?)

Mark Mitchell mark@codesourcery.com
Tue Nov 30 23:39:00 GMT 1999


>>>>> "Nathan" == Nathan Sidwell <nathan@acm.org> writes:

    Nathan> Hi, here's another regression from 2.95.  This testcase
    Nathan> causes assembler errors about some stabs

Fixed with this patch.

--
Mark Mitchell                   mark@codesourcery.com
CodeSourcery, LLC               http://www.codesourcery.com

1999-11-23  Mark Mitchell  <mark@codesourcery.com>

	* loop.c (loop_optimize): Always find_loop_tree_blocks and
	unroll_block_trees when generating debuggable code.

Index: loop.c
===================================================================
RCS file: /cvs/gcc/egcs/gcc/loop.c,v
retrieving revision 1.199
diff -c -p -r1.199 loop.c
*** loop.c	1999/11/23 12:10:36	1.199
--- loop.c	1999/11/23 18:05:12
*************** loop_optimize (f, dumpfile, unroll_p, bc
*** 550,557 ****
      if (uid_luid[i] == 0)
        uid_luid[i] = uid_luid[i - 1];
  
!   /* Create a mapping from loops to BLOCK tree nodes.  */
!   if (unroll_p && write_symbols != NO_DEBUG)
      find_loop_tree_blocks ();
  
    /* Determine if the function has indirect jump.  On some systems
--- 550,561 ----
      if (uid_luid[i] == 0)
        uid_luid[i] = uid_luid[i - 1];
  
!   /* If debugging and unrolling loops, we must replicate the tree
!      nodes corresponding to the BLOCKs inside the loop, so that the
!      original one to one mapping will remain.  We sometimes unroll
!      loops even when unroll_p is false, so we must always do this when
!      debugging.  */
!   if (write_symbols != NO_DEBUG)
      find_loop_tree_blocks ();
  
    /* Determine if the function has indirect jump.  On some systems
*************** loop_optimize (f, dumpfile, unroll_p, bc
*** 565,574 ****
        scan_loop (loop_number_loop_starts[i], loop_number_loop_ends[i],
  		 loop_number_loop_cont[i], unroll_p, bct_p);
  
!   /* If debugging and unrolling loops, we must replicate the tree nodes
!      corresponding to the blocks inside the loop, so that the original one
!      to one mapping will remain.  */
!   if (unroll_p && write_symbols != NO_DEBUG)
      unroll_block_trees ();
  
    end_alias_analysis ();
--- 569,576 ----
        scan_loop (loop_number_loop_starts[i], loop_number_loop_ends[i],
  		 loop_number_loop_cont[i], unroll_p, bct_p);
  
!   /* Replicate the BLOCKs.  */
!   if (write_symbols != NO_DEBUG)
      unroll_block_trees ();
  
    end_alias_analysis ();



More information about the Gcc-bugs mailing list