ADDR_VEC alignment calculation in shorten_branches

Joern Rennecke amylaar@cygnus.co.uk
Thu Sep 4 00:12:00 GMT 1997


The calculation for the space taken by a possible alignment for ADDR_VEC /
ADDR_DIFF_VEC is off by unitsize if insn_current_address is already aligned.
Here is a fix:

Thu Sep  4 07:39:19 1997  J"orn Rennecke <amylaar@cygnus.co.uk>

	* final.c (shorten_branches): Fix alignment calculation.

*** final.c-970902	Thu Sep  4 07:19:53 1997
--- final.c	Thu Sep  4 07:39:19 1997
*************** shorten_branches (first)
*** 752,758 ****
  
  	  /* Account for possible alignment.  */
  	  insn_lengths[uid]
! 	    += unitsize - (insn_current_address & (unitsize - 1));
  #else
  	  ;
  #endif
--- 754,760 ----
  
  	  /* Account for possible alignment.  */
  	  insn_lengths[uid]
! 	    += unitsize - 1 - ((insn_current_address - 1) & (unitsize - 1));
  #else
  	  ;
  #endif



More information about the Gcc mailing list