[net.micro.68k] hot 68000 C cross-compiler sought

sdyer@bbncca.ARPA (Steve Dyer) (01/11/85)

No, not in the sense of "stolen", but something which produces better code
than the myriad of PCC-derived 68K C compilers, such as the ones which have
evolved from the original MIT C compiler.  I spoke with Tartan Labs this
week, but it appears that they are aiming their future 68000 C compilers
towards workstations like Suns and Apollos, and are not planning to sell
their compiler in a cross-development environment.  This seems awfully
short-sighted to me, since a good 68K compiler is greatly needed, and there
are many many more systems with embedded 68000s in them than there are
Sun workstations.  Does anyone know of other compiler vendors who offer
optimizing 68000 C compilers for a cross-development environment like a VAX?
Is there any interest out there on the net for such a product?  I suppose that
a barrage of public interest here on USENET could influence Tartan's plans.
Reply to me, and I will summarize.
-- 
/Steve Dyer
{decvax,linus,ima,ihnp4}!bbncca!sdyer
sdyer@bbncca.ARPA

dsi@unccvax.UUCP (Dataspan Inc) (01/11/85)

     We talked to Tartan last spring, when we were hot for a hot C-compiler.
We had been using the MIT compiler on a 750 running 4.1, and someone lost
the source, so when we went 4.2, we decided to get another compiler.

     Tartan called us about 4 months too late to annouce that their 68k
cross compiler for VAX/4.2 bsd was ready, at $ 6,000. We bought the Alcyon
compiler for cross-development, and on a 6000 line program, it is about
15 % more dense in code. Unfortunately, there are  more than a few bugs
which do nasty things like force your addressing to the lowest 64k when
you call certain object modules by certain names (like panic.o and p(n).o,
where n is an integer, prog.o, abort.o ... your usual O.S. names), it
also incorrectly compiles certain pointer operations by adding irrelevant
shifts to the operands. This last bug even extends to comparing pointers
to constants. For example


long *p;

p = 32;

if ( p == 32 ) /* do something intelligent */

generates something stupid in the assembly code like    cmpi 128,RX 

     My expert in this area claims that comparing to 2 is impossible. Not
that this trivial example is going to screw you up, but there are some
really deep-seated bugs you can get from the weird things this compiler
generates if you don't watch it. 

     It was cheap, however, ($1250) and doesn't do stupid things like
generates branches to the next label right below. Another really annoying
thing is that (I think, for the first time) an int is not a full register
width. 

     We also bought a Whitesmiths C-compiler for a PDP 11/34 running RSX-11
as well as on our Idris system. It doesn't seem to have these bugs but I
don't think it is terribly hot, either.

     If anyone has any suggestions about a half-decent compiler, I'd like
to hear about them by mail

dya