This is the mail archive of the binutils@sourceware.cygnus.com mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

d30v bsr bundling problem


        bsr.s/fx        foo
        ldw.s           r34, @(sp+, r0)

The assembler was bundling this as

	bsr.s/fx -> ldw.s

which doesn't work, as the link register receives the address
of the next bundle.  This patch fixes it, but I'm uncertain 
what case the removed code was supposed to be handling.  The
comment doesn't seem to cover it.

Thoughts?


r~


	* config/tc-d30v.c (write_2_short): Disregard opcode1->ecc when
	bundling a non-delayed branch type instruction.

Index: config/tc-d30v.c
===================================================================
RCS file: /cvs/src/src/gas/config/tc-d30v.c,v
retrieving revision 1.9
diff -c -p -d -r1.9 tc-d30v.c
*** tc-d30v.c	2000/04/02 08:24:54	1.9
--- tc-d30v.c	2000/04/20 23:30:31
*************** write_2_short (opcode1, insn1, opcode2, 
*** 814,821 ****
  	    }
  	}
        else if ((opcode1->op->flags_used & (FLAG_JMP | FLAG_JSR)
! 		&& ((opcode1->op->flags_used & FLAG_DELAY) == 0)
! 		&& ((opcode1->ecc == ECC_AL) || ! Optimizing))
  	       || opcode1->op->flags_used & FLAG_RP)
  	{
  	  /* We must emit (non-delayed) branch type instructions
--- 814,820 ----
  	    }
  	}
        else if ((opcode1->op->flags_used & (FLAG_JMP | FLAG_JSR)
! 		&& ((opcode1->op->flags_used & FLAG_DELAY) == 0))
  	       || opcode1->op->flags_used & FLAG_RP)
  	{
  	  /* We must emit (non-delayed) branch type instructions

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]