+Tue Mar 3 21:48:35 1998 J"orn Rennecke <amylaar@cygnus.co.uk>
+
+ * final.c (max_labelno): New static variable.
+ (final_scan_insn): Check max_labelno before outputting an
+ alignment for a label.
+
+ (shorten_branches): Remove unused variable length_align.
+
Tue Mar 3 14:27:23 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* sparc.c (ultrasparc_adjust_cost): Add default case in
#define INSN_SHUID(INSN) (uid_shuid[INSN_UID (INSN)])
-static int min_labelno;
+static int min_labelno, max_labelno;
#define LABEL_TO_ALIGNMENT(LABEL) \
(label_align[CODE_LABEL_NUMBER (LABEL) - min_labelno])
rtx insn;
int max_uid;
int i;
- int max_labelno;
int max_log;
#ifdef HAVE_ATTR_length
#define MAX_CODE_ALIGN 16
{
int uid = INSN_UID (seq);
int log;
- int length_align;
log = (GET_CODE (seq) == CODE_LABEL ? LABEL_TO_ALIGNMENT (seq) : 0);
uid_align[uid] = align_tab[0];
insn_addresses[uid] = --insn_current_address;
break;
case CODE_LABEL:
- {
- int align = LABEL_TO_ALIGNMENT (insn);
+ if (CODE_LABEL_NUMBER (insn) <= max_labelno)
+ {
+ int align = LABEL_TO_ALIGNMENT (insn);
- if (align && NEXT_INSN (insn))
- ASM_OUTPUT_ALIGN (file, align);
- }
+ /* The target port might emit labels in the output function for
+ some insn, e.g. sh.c output_branchy_insn. */
+ if (align && NEXT_INSN (insn)
+ && CODE_LABEL_NUMBER (insn) <= max_labelno)
+ ASM_OUTPUT_ALIGN (file, align);
+ }
CC_STATUS_INIT;
if (prescan > 0)
break;