This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: pre egcs-1.1 testing and Linux 2.1.x
- To: Linus Torvalds <torvalds at transmeta dot com>
- Subject: Re: pre egcs-1.1 testing and Linux 2.1.x
- From: Andi Kleen <ak at muc dot de>
- Date: 23 Aug 1998 19:53:23 +0200
- Cc: "David S. Miller" <davem at dm dot cobaltmicro dot com>, dkelson at inconnect dot com, linux-kernel at vger dot rutgers dot edu, egcs at cygnus dot com
- References: <Pine.LNX.3.96.980823114054.8844N-100000@penguin.transmeta.com>
In article <Pine.LNX.3.96.980823114054.8844N-100000@penguin.transmeta.com>,
Linus Torvalds <torvalds@transmeta.com> writes:
> On Sun, 23 Aug 1998, David S. Miller wrote:
>>
>> However, I will continue to ignore developers who don't say "we
>> will fix it eventually", but instead say "let's remove the feature,
>> we'll never be able to fix it".
>>
>> And the egcs team has not said the latter. But they will turn the
>> feature off until such time as the fix is made, since it generates
>> incorrect code.
> People I trust tell me that the problem can occur even without regparm,
> it's just that regparm is able to trigger the _real_ bug much more easily.
I managed to trigger such a bug in kernel code around 2.1.5x in
tcp_ipv4.c:tcp_v4_do_rcv(). The analyse of the assembler code
showed that gcc 2.7.2.3 silently overwrote a variable assigned to a register
when it needed a scratch variable for some computation. It went away
when some inline functions were changed, but the problem definitely
exists (see the comment there). At this time I also tried egcs 1.0.0
and it produced the same buggy code.
-Andi