[comp.sys.amiga.tech] Manx v3.6 bug?

ehoogerbeets@rose.waterloo.edu (Edwin Hoogerbeets) (06/07/89)

The following source:

foo()
{
  char *foobar;

  if ( foobar ) {
    printf("This is a test\n");
  }

  if ( (char *)0 ) {
    printf("This is a test\n");
  }

  if ( "This is a test\n" ) {
    printf("This is a test\n");
  }
}

Gets compiled to this assembler:

;:ts=8
	public	_foo
_foo:
	link	a5,#.2

	[.... etc ... ]

.5
	tst.l	#.1+32    ; whoops! this address mode isn't supported for 68000s
	beq	.6
	pea	.1+48
	jsr	_printf
	add.w	#4,sp
.6
.7
	movem.l	(sp)+,.3
	unlk	a5
	rts
.2	equ	-4
.3	reg	
.1
	dc.b	84,104,105,115,32,105,115,32,97,32,116,101,115,116,10
	dc.b	0,84,104,105,115,32,105,115,32,97,32,116,101,115,116
	dc.b	10,0,84,104,105,115,32,105,115,32,97,32,116,101,115
	dc.b	116,10,0,84,104,105,115,32,105,115,32,97,32,116,101
	dc.b	115,116,10,0
	ds	0
	public	_printf
	public	.begin
	dseg
	end

I am using Manx v3.6, with the simple command line: cc foo.c 

Manx's own assembler tosses cookies on this. I know it is pretty gross
C code, but it occurs in GnuGrep (fish 204), and probably other Gnu
code.

Can anyone verify this, or I am doing something wierd?

Edwin