On behalf off Andy I am forwarding this: ________________________________________ Van: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Onderwerp: Re: [avr-gcc-list] testsuite saga continues
Wouter, You are correct. gcc will treat any structure that is 8 bytes or less as a single "register" and likely have same problem. This would be structures. I am trying to come up with fixes to several bugs and hopefully this one sometime. avr-gcc is odd that it accepts 8 byte as maximum - rather than 4. Im am nor sure why it was needed without also all the other parts for long long that must work. However, perhaps this was intended for double support. To get long long to work, it would be wise for all other patterns to be reduced to byte level expansion (where possible) this would exclude shift/compare/add etc that need "carry" operations. That would mimimise the amount of work required. New patterns would include move DI (8bytes) and perhaps add/sub/compare Also, it would be wise to change priority of register allocation (which I have a fix for). Since the current allocation does not easily permit 8 contigous registers to be allocated (the first is r24!). So you have mess of stack operations and register moves created Of course it will still be slow! I do not intend to fix problems for long long - unless they also fix problems in other areas. Please post to list - this email will not work for me. -----Original Message----- From: Wouter van Gulik <[EMAIL PROTECTED]> To: Paulo Marques <[EMAIL PROTECTED]> Cc: [email protected] Sent: Wed, 30 Jan 2008 3:56 am Subject: Re: [avr-gcc-list] testsuite saga continues >> Do you have a clue on why the tests fail? There is an ugly bug concerning >> stack allocation and 64 bit variables, maybe that is the evil one. See: >> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27386 for details. > > All the failed tests I've seen so far do in fact pass "long long" > arguments to functions together with a bunch of other arguments > (sometimes using va_args, too). > > In one of the cases (gcc.c-torture/execute/20030307-1.c), the test only > fails at -O0 and -O1, but passes with other optimization levels because > the functions get inlined and disappear completely, so the argument > passing problem disappears too. > > So, I would say that it is very likely the same bug... > So this means that 64 bit is mainly supported, only due to the stack allocation bug it's hard (if not impossible) to use. We should really try to find someone who can fix this nasty bug. Note that all sort of stack parsed arguments can go wrong, so it's not only 64 bit. Wouter _______________________________________________ AVR-GCC-list mailing list [email protected] http://lists.nongnu.org/mailman/listinfo/avr-gcc-list
