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 tree-optimization/15547] [tree-ssa] don't generate if (a != 0) for if (a)


------- Additional Comments From pinskia at gcc dot gnu dot org  2004-05-20 12:44 -------
(In reply to comment #2)
> (In reply to comment #1)
> > The reason why this is not done this way as it would prevent some
> optimizations from happening 
> 
> What are those optimizations? 

PHI-OPT that was just added which optimizes:
if (a!=0) b = a; else b = 0; into b = a; (which does show up in GCC).

> Code like this is generated during compilation, (try for example PR8361) and
> look in any of the dumps, there are a lot of "if (VARIABLE)" occurences. 
> If the optimizers have problems with this, then it might be better not to
> generate such code, or make sure that the optimizers can deal with it. 

But the RTL level has the exactly the same thing as the tree level as if(a) is converted to compare a to 0 
and the branch so it does not matter in mind and actually will only help in memory savings (but then 
again if constants were more shared that would help more than this would).
 
> > and it is not the way it is done for most targets (yes x86 is the exception
> here).  
> 
> Can you please explain what you mean by this? 

Yes, most targets explicitly compare against 0
unlike x86 where it just uses the test instruction).

-- 


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


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