This is the mail archive of the gcc-bugs@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]
Other format: [Raw text]

[Bug other/50775] Register allocator sets up frame and frame pointer with low register pressure


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

--- Comment #4 from Vladimir Makarov <vmakarov at redhat dot com> 2011-11-28 21:48:20 UTC ---

(In reply to comment #2)
> 
> Also, I have a question about the following fields of `ira_allocno':
>   /* The number of objects tracked in the following array.  */
>   int num_objects;
>   /* An array of structures describing conflict information and live
>      ranges for each object associated with the allocno.  There may be
>      more than one such object in cases where the allocno represents a
>      multi-word register.  */
>   ira_object_t objects[2];
> --------------------------^^^^^
> The SImode for AVR consists of 4 words, but only 2 objects in allocno
> structure.
> Is this right ?
> 
> 

Yes, that is right.  IRA objects were introduced by By Bernd Schmidt. 
Unfortunately, I did not review his patch.  Probably, Bernd decided that 2 hard
regs allocno covers most cases (and may be he is right).  Other multi regs
allocno is processed as one object (it means that all one register parts
conflict with all another one register parts even if in reality one part does
not conflict with another allocno part).

Wrong profitable hard regs calculation for register files requiring aligned
start register was a merging problem with a patch for allocation without cover
classes.

I'll try make a patch this week to solve the problem.

Dennis, thanks for detail analysis of the problem.  It saved my time.


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