From: sholden AT pgrad DOT cs DOT usyd DOT edu DOT au (Sam Holden) Subject: Re: gcc 2.7-b19 on gnu-win32 b19 generating bad asm 30 Jul 1998 04:48:51 -0700 Message-ID: <199807290014.RAA23968.cygnus.gnu-win32@cygnus.com> References: <19980728070132 DOT 40820 AT murlibobo DOT cs DOT mu DOT OZ DOT AU> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" To: gnu-win32 AT cygnus DOT com Fergus Henderson writes: >GNU C version 2.7-b19 on gnu-win32 version b19.1 (intel x86) >generates bad assembler for the following program. The program >(cut down from C code automatically generated by the Mercury compiler) >is not strictly conforming, but even so, the generated assembler >is pretty nonsensical. This worked fine in b18. > >To reproduce the problem, compile the following program with `gcc -O2 -S'. > >The generated code for the `goto' above is the assembler statement > > jmp *%ecx > >but this is the *only* occurrence of %ecx in the generated code. >%ecx is never initialized, and the reference to `mercury__compare_3_3' >somehow gets optimized away entirely. Of course if it really did work with b18 then I will be completely wrong. Also if gcc has been patched on cygwin32 I'll be wrong. But anyway... Using -O2 to me is a lot risky since my docs say : Users of gcc 2.7.0 thru 2.7.2 should note that there is a bug in -O2 on these. Specifically, strength reduction doesn't work. A patch can be had to fix this if you feel like recompiling gcc, otherwise make sure that you always compile with -fno-strength-reduce. Now strength-reduction does loop-strength reduction and elimination of iteration variables... Possibly not what is happening in your case, but you could try with the extra option and see. It's probably not the reason, but I couldn't test it because I couldn't be bothered reformatting yur wrapped code... Sam --- testing? What's that? If it compiles, it is good, if it boots up it is perfect. --Linus Torvalds - For help on using this list (especially unsubscribing), send a message to "gnu-win32-request AT cygnus DOT com" with one line of text: "help".