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]
Other format: [Raw text]

Re: bitfield handling on m68k broken


Hi,

On Tue, 24 Apr 2007, Andreas Schwab wrote:

> > Even without this bug gcc usage of bitfield instruction has become a 
> > little insane lately, e.g. 2.95/3.4 produce this code:
> >
> > retmeK:
> >         link.w %a6,#0
> >         move.l 8(%a6),%d0
> >         unlk %a6
> >         rts
> 
> FWIW, I get this very code with 4.3.0 20070122 when compiling without
> optimisation.  

-fno-tree-sra does the same. I don't know if disabling this is the best 
way to go as in some cases it makes sense, the problem is that there is 
nothing that undoes this pass later, when needed.
This pass makes more sense with larger structures in memory, but with 
small structures in registers it makes things worse, e.g. some C++ 
structure may look like this:

struct B { bool a, b, c, d; };

and this also produces lots of bitfield instructions...

bye, Roman


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