[net.bugs.4bsd] bug in VAX 4bsd assembler

mendell (03/23/83)

    as produces wrong code for instructions with an immeadiate 
float literal of 0d0.0. For example:
	movd	$0d0.0,r0
is assembled as:
	movd	$0d0.5,r0

    The problem is that as thinks that $0d0.0 is a short literal double, but it
isn't (See your nearest vax manual)

    The fix is one line in as.h:
	*** /usr/src/cmd/as/as.h	Wed Nov  5 23:13:32 1980
	--- as.h	Tue Mar 22 13:05:55 1983
	***************
	*** 327,332
	   */
	  #define 	slitflt(xp) \
				(    (xp->doub_LSW == 0) \
				 &&  ( (xp->doub_MSW & LITFLTMASK) \
				      == xp->doub_MSW) )
	  /*

	--- 327,333 -----
	   */
	  #define 	slitflt(xp) \
				(    (xp->doub_LSW == 0) \
	+ 			 &&  (xp->doub_MSW != 0) \
				 &&  ( (xp->doub_MSW & LITFLTMASK) \
				      == xp->doub_MSW) )
	  /*


    Mark Mendell
    ..!decvax!utzoo!utcsrgv!mendell