Re: pre egcs-1.1 testing and Linux 2.1.x

Albert D. Cahalan (acahalan@cs.uml.edu)
Sun, 23 Aug 1998 19:04:21 -0400 (EDT)


Andi Kleen writes:
> Linus Torvalds <torvalds@transmeta.com> writes:

>> 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.

That is serious. If the problem is really so hard to fix,
then how about an error message at least?

/* This is too hard to fix. Do not produce garbage. */
printf("Internel error: used up too many registers.");
exit(1);

I'd rather gcc just give up than produce a bad object file.
(somebody forward this message as needed)

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.altern.org/andrebalsa/doc/lkml-faq.html