IA-64 libffi build problem

Jim Wilson wilson@cygnus.com
Fri Apr 13 20:28:00 GMT 2001


A recent assembler reports a RAW DV for libffi/ia64/unix.S.

../../../gcc/libffi/src/ia64/unix.S: Assembler messages:
../../../gcc/libffi/src/ia64/unix.S:101: Warning: Use of 'adds' violates RAW dependency 'GR%, % in 1 - 127' (impliedf), specific resource number is 40
../../../gcc/libffi/src/ia64/unix.S:101: Warning: Only the first path encountering the conflict is reported
../../../gcc/libffi/src/ia64/unix.S:97: Warning: This is the location of the conflicting usage

The code in question is
	ld8	out6=[loc2],16
	ld8	out7=[loc3]
	/* loc2 points at first stack parameter.  Set sp to 16 bytes	*/
	/* below that.							*/
	add	sp=-16,loc2

The first load increments loc2 by 16, and then the add decrements it by 16
without an intervening stop bit.  However, rather than adding a stop bit to
eliminate the DV, it appears that this should be fixed by removing the
unnecessry increment and decrement, giving something like this:

	ld8	out6=[loc2]
	ld8	out7=[loc3]
	/* Set sp to 16 bytes below the first stack parameter.  This	*/
	/* is the value currently in loc2.				*/
	mov	sp=loc2

This problem exists on both the trunk and the gcc3 branch.

Jim



More information about the Gcc-bugs mailing list