This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: long long move bug?



On Tuesday, June 5, 2001, at 07:06  PM, Dale Johannesen wrote:
> On Monday, June 4, 2001, at 01:24  PM, Becky Gill wrote:
>
>> All,
>>
>> I ran into a problem this week when running code with lots of long long
>> variables (which eventually start causing spills).  Whenever gcc 
>> spills a long
>> long, reloads it, and then copies it to another pair of registers, it 
>> seems to
>> be confused about which registers to use for the copy.

By rewriting this program as t1+=t1 (etc.) I got the gcc3 compiler to 
produce generally similar code, with addc/adde and unnecessary register 
copies.  However, I could not get it to allocate an overlapping register 
pair, so I think the bug is really fixed.

(Of course, there's the matter of the unnecessary register copies.  One 
approach to this problem, which seems to happen a lot with gcc, is to 
have a pass at the end that
goes through and removes unnecessary register copies.  This can be 
folded into the scheduler; the scheduler dependency graph probably 
already contains most of the right information.)


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]