------- Additional Comments From bjoern dot m dot haase at web dot de  
2005-01-05 19:47 -------
Hi, 
 
I have the impression that the origin of the bug is not in first line linked to 
a wrong assignment of types in libgcc2. 
 
I doubt whether the problem is not linked to a problem during reload. I.e. I 
assume that reload presently is no longer able to reload any long long objects 
properly for the avr target. This is something that used to work in 3.4.3. and 
seemingly also older revisions of head 4.0 up to about beginning of December. 
 
In order to confirm this, I have used a workaround by commenting out the code 
of the hand full of libgcc2 functions that caused the problems. I.e. I have 
modified them so that they essentially do nothing. You will have to remove 3 
function bodies, IIRC. Of course this will result in compiler output that does 
not execute properly if these functions ever happen to be used. But at compile 
time a problem should never should show up. I.e. using empty functions in 
libgcc2 should never inhibit a proper reload. 
 
After building the compiler this way, I have started the test suite and 
observed about 150 regressions in comparison to 3.4.3. All of them showed up at 
compile time. They all issued an error message of the type 
 
/home/bmh/gnucvs/head/gcc/gcc/testsuite/gcc.c-torture/execute/961122-1.c:11 
internal compiler error: in find_valid_class, at reload.c:719 
 
When checking gcc-3.4.3, I have obtained a PASS for these test cases. Namely 
961122-1.c compiles correctly with gcc-3.4.3. There are quite a number of files 
generating this error. All files that I have investigated had made use of long 
longs. If it helps, I will post a complete list of them. 
c-torture/execute/961122-1.c is a fairly typical example and I'd suggest to 
concentrate on it first, since it is also a fairly short test case. If I'm not 
making a mistake 961122-1.c does also does not make any use of the conversion 
functions that I had to mutilate in order to make avr-gcc bootstrap. 
I also have verified that gcc-3.4.3 indeed has made use of the full DI modes. 
I.e. 3.4.3 has generated code with 8 Byte - objects. 
 
Maybe one should rather look a bit closer at the changes in reload.c .  
 
Yours, 
 
Björn 

-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |bjoern dot m dot haase at
                   |                            |web dot de


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18887

Reply via email to