SH: remove -mbigtable option (PR c/4516)

NIIBE Yutaka gniibe@m17n.org
Sun Oct 14 16:56:00 GMT 2001


NIIBE Yutaka wrote:
 > Following change fixes this problem.

This was wrong.  Here's update.

Bootstrapped on sh-linux.

2001-10-14  NIIBE Yutaka  <gniibe@m17n.org>

	* final.c (shorten_branches): For CODE_LABEL, set
	insn_current_address to be aligned.
	Increment insn_current_address inside the loop.

Index: gcc/final.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/final.c,v
retrieving revision 1.209
diff -c -3 -p -r1.209 final.c
*** gcc/final.c	2001/10/12 10:51:12	1.209
--- gcc/final.c	2001/10/14 23:43:30
*************** shorten_branches (first)
*** 1275,1281 ****
    /* Compute initial lengths, addresses, and varying flags for each insn.  */
    for (insn_current_address = FIRST_INSN_ADDRESS, insn = first;
         insn != 0;
!        insn_current_address += insn_lengths[uid], insn = NEXT_INSN (insn))
      {
        uid = INSN_UID (insn);
  
--- 1275,1281 ----
    /* Compute initial lengths, addresses, and varying flags for each insn.  */
    for (insn_current_address = FIRST_INSN_ADDRESS, insn = first;
         insn != 0;
!        insn = NEXT_INSN (insn))
      {
        uid = INSN_UID (insn);
  
*************** shorten_branches (first)
*** 1289,1294 ****
--- 1289,1295 ----
  	      int align = 1 << log;
  	      int new_address = (insn_current_address + align - 1) & -align;
  	      insn_lengths[uid] = new_address - insn_current_address;
+ 	      insn_current_address = new_address;
  	    }
  	}
  
*************** shorten_branches (first)
*** 1368,1373 ****
--- 1369,1376 ----
        if (insn_lengths[uid] < 0)
  	fatal_insn ("Negative insn length", insn);
  #endif
+ 
+       insn_current_address += insn_lengths[uid];
      }
  
    /* Now loop over all the insns finding varying length insns.  For each,
-- 



More information about the Gcc-patches mailing list