[comp.os.minix] GNU C/386 without the 387

kwhite@csi.uottawa.ca (Keith White) (05/01/91)

I appear to have been successful in modifying GNU C (1.39) to not
output 387 instructions.  The compiler will compile itself and gawk
(the only programs that I've tested it with).  Incidentally, gawk
runs *considerably* faster -- none of that waiting for the floating
point emulation code to be signalled.

The patches that follow are to be fed through patch in the ./config
directory after the files in plains.nodak.edu:/pub/Minix/uk/gccdiff.tar.Z
courtesy of Alan W Black (awb@ed.ac.uk) and Richard Tobin
(richard@aiai.ed.ac.uk) without whom none of this would be possible!

PROBLEMS:
---------
You can't mix object files between the "-f80387" and "-fsoft-float"
versions.  Obvious really, since floating point numbers are returned
in different ways in the different versions.

With these mods the "-f80387" option won't work at all!  I'm not
very motivated to fix this problem since I don't actually have one of
those beasties; but it shouldn't be too difficult to fix :-) and I
will get to it eventually, maybe.

You'll need to recompile all library routines that use floating point.

Consider this alpha code, use at your own risk, standard 
disclaimers apply...

---cut here---
begin 600 diff.i386
M*BHJ(&DS.#8N;60)5'5E($%P<B R,R Q-#HT,CHT-" Q.3DQ"BTM+2!I,S@V
M+FUD+F]R:6<)4V%T($IA;B Q,B Q-#HR,SHU-" Q.3DQ"BHJ*BHJ*BHJ*BHJ
M*BHJ*@HJ*BH@,3DT-2PQ.34Q("HJ*BH*(" @(" @?0H@(" @96QS90H@(" @
M("!O=71P=71?87-M7VEN<VX@*%PB8V%L;" E,5PB+"!O<&5R86YD<RD["B$@
M(VEF(# *(" @(&EF("A'151?34]$12 H;W!E<F%N9'-;,%TI(#T]($1&;6]D
M90H@(" @(" @('Q\($=%5%]-3T1%("AO<&5R86YD<ULP72D@/3T@4T9M;V1E
M*0H@(" @("!["BTM+2 Q.30U+#$Y-3$@+2TM+0H@(" @("!]"B @("!E;'-E
M"B @(" @(&]U='!U=%]A<VU?:6YS;B H7")C86QL("4Q7"(L(&]P97)A;F1S
M*3L*(2 *(" @(&EF("A'151?34]$12 H;W!E<F%N9'-;,%TI(#T]($1&;6]D
M90H@(" @(" @('Q\($=%5%]-3T1%("AO<&5R86YD<ULP72D@/3T@4T9M;V1E
M*0H@(" @("!["BHJ*BHJ*BHJ*BHJ*BHJ*@HJ*BH@,3DU."PQ.38T("HJ*BH*
M(" )("!03U!?3TY%7T90.PH@( E]"B @(" @('T*+2 C96YD:68*(" @(%)%
M5#L*("!](BD*(" *+2TM(#$Y-3@L,3DV,R M+2TM"BHJ*B!T;2UI,S@V+F@)
M5'5E($%P<B R,R Q-#HP,3HR-" Q.3DQ"BTM+2!T;2UI,S@V+F@N;W)I9PE7
M960@2F%N(#,Q(#$R.C4S.C4U(#$Y.3 **BHJ*BHJ*BHJ*BHJ*BHJ"BHJ*B Q
M,S@L,30T("HJ*BH*(" @("!/;B!T:&4@.# S.#8L(&]N;'D@=&AE('-T86-K
M('!O:6YT97(@:7,@<W5C:"X@("HO"B @(V1E9FEN92!&25A%1%]214=)4U1%
M4E,@7 H@("\J87@L860L86,L86(L<VDL9&DL8G L<W L9G9A;"QF<# J+R @
M(" @("!<"B$@>R @,"P@,"P@,"P@,"P@,"P@,"P@,"P@,2P@,2P@,7T*(" *
M(" O*B [.V-H86YG92UW9G,@*B\*(" *+2TM(#$S."PQ-#0@+2TM+0H@(" @
M($]N('1H92 X,#,X-BP@;VYL>2!T:&4@<W1A8VL@<&]I;G1E<B!I<R!S=6-H
M+B @*B\*(" C9&5F:6YE($9)6$5$7U)%1TE35$524R!<"B @+RIA>"QA9"QA
M8RQA8BQS:2QD:2QB<"QS<"QF=F%L+&9P,"HO(" @(" @(%P*(2![(" P+" P
M+" P+" P+" P+" P+" P+" Q+" Q+" P?0H@( H@("\J(#L[8VAA;F=E+7=F
M<R J+PH@( HJ*BHJ*BHJ*BHJ*BHJ*BH**BHJ(#$Y-RPR,#,@*BHJ*@H@("-D
M969I;F4@1E)!345?4$])3E1%4E]214=.54T@-@H@( H@("\J($9I<G-T(&9L
M;V%T:6YG('!O:6YT(')E9R J+PHA("-D969I;F4@1DE24U1?1DQ/051?4D5'
M(# *(" O*B!686QU92!S:&]U;&0@8F4@;F]N>F5R;R!I9B!F=6YC=&EO;G,@
M;75S="!H879E(&9R86UE('!O:6YT97)S+@H@(" @(%IE<F\@;65A;G,@=&AE
M(&9R86UE('!O:6YT97(@;F5E9"!N;W0@8F4@<V5T('5P("AA;F0@<&%R;7,*
M(" @("!M87D@8F4@86-C97-S960@=FEA('1H92!S=&%C:R!P;VEN=&5R*2!I
M;B!F=6YC=&EO;G,@=&AA="!S965M('-U:71A8FQE+@HM+2T@,3DW+#(P,R M
M+2TM"B @(V1E9FEN92!&4D%-15]03TE.5$527U)%1TY532 V"B @"B @+RH@
M1FER<W0@9FQO871I;F<@<&]I;G0@<F5G("HO"B$@(V1E9FEN92!&25)35%]&
M3$]!5%]214<@. H@("\J(%9A;'5E('-H;W5L9"!B92!N;VYZ97)O(&EF(&9U
M;F-T:6]N<R!M=7-T(&AA=F4@9G)A;64@<&]I;G1E<G,N"B @(" @6F5R;R!M
M96%N<R!T:&4@9G)A;64@<&]I;G1E<B!N965D(&YO="!B92!S970@=7 @*&%N
M9"!P87)M<PH@(" @(&UA>2!B92!A8V-E<W-E9"!V:6$@=&AE('-T86-K('!O
M:6YT97(I(&EN(&9U;F-T:6]N<R!T:&%T('-E96T@<W5I=&%B;&4N"BHJ*BHJ
M*BHJ*BHJ*BHJ*@HJ*BH@,C@T+#(Y,2 J*BHJ"B @(V1E9FEN92!.3TY?44E?
M4D5'7U H6"D@7 H@(" @*%)%1U]0("A8*2 F)B!214=.3R H6"D@/CT@-" F
M)B!214=.3R H6"D@/"!&25)35%]04T551$]?4D5'25-415(I"B @"B$@(V1E
M9FEN92!&4%]214=?4"A8*2 P("\J("A214=?4" H6"D@)B8@1E!?4D5'3D]?
M4" H4D5'3D\@*%@I*2D@*B\*(2 C9&5F:6YE($907U)%1TY/7U H;BD@," O
M*B H*&XI(#X]($9)4E-47T9,3T%47U)%1R F)B H;BD@/"!&25)35%]04T55
M1$]?4D5'25-415(I("HO"B @(" *(" O*B!4<GD@=&\@;6%I;G1A:6X@=&AE
M(&%C8W5R86-Y(&]F('1H92!D96%T:"!N;W1E<R!F;W(@<F5G<R!S871I<V9Y
M:6YG('1H90H@(" @(&9O;&QO=VEN9RX@($EM<&]R=&%N="!F;W(@<W1A8VL@
M;&EK92!R96=S+"!T;R!K;F]W('=H96X@=&\@<&]P+B J+PHM+2T@,C@T+#(Y
M,2 M+2TM"B @(V1E9FEN92!.3TY?44E?4D5'7U H6"D@7 H@(" @*%)%1U]0
M("A8*2 F)B!214=.3R H6"D@/CT@-" F)B!214=.3R H6"D@/"!&25)35%]0
M4T551$]?4D5'25-415(I"B @"B$@(V1E9FEN92!&4%]214=?4"A8*2 H4D5'
M7U @*%@I("8F($907U)%1TY/7U @*%)%1TY/("A8*2DI"B$@(V1E9FEN92!&
M4%]214=.3U]0*&XI("@H;BD@/CT@1DE24U1?1DQ/051?4D5'("8F("AN*2 \
M($9)4E-47U!3155$3U]214=)4U1%4BD*(" @( H@("\J(%1R>2!T;R!M86EN
M=&%I;B!T:&4@86-C=7)A8WD@;V8@=&AE(&1E871H(&YO=&5S(&9O<B!R96=S
M('-A=&ES9GEI;F<@=&AE"B @(" @9F]L;&]W:6YG+B @26UP;W)T86YT(&9O
K<B!S=&%C:R!L:6ME(')E9W,L('1O(&MN;W<@=VAE;B!T;R!P;W N("HO"F9O

end
---cut here---

...keith
-- 
BITNET:		kwhite@uotcsi2.bitnet
UUCP:		{...,nrcaer,cunews}!uotcsi2!kwhite
INTERNET:	kwhite@csi.uottawa.ca

HBO043%DJUKFA11.BITNET@cunyvm.cuny.edu (Christoph van Wuellen) (05/02/91)

Does anyone know where to report GCC errors to the FSF guys?

There is an error in gcc-1.39, it may pop off the 387 stack even if
it is used later there are jumps across basic blocks ...etc (too much
details here). I also have a fix, but I forgot where to report the
error to.

C.v.W.

kwhite@csi.uottawa.ca (Keith White) (05/03/91)

Sure, try bug-gcc@prep.ai.mit.edu (these bugs sometimes make it
to the gnu.gcc.bug newsgroup).

I've also been able to build a compiler that doesn't use a 387 but
will support the -m30387 switch.  Actually the changes were pretty easy
(he says shamefacedley).  If anyone is just itching to give it a try,
mail me a request.  I'll post the diffs after I've given the "new"
compiler a bit of a test.

...keith
-- 
BITNET:		kwhite@uotcsi2.bitnet
UUCP:		{...,nrcaer,cunews}!uotcsi2!kwhite
INTERNET:	kwhite@csi.uottawa.ca