[Bug tree-optimization/15547] [tree-ssa] don't generate if (a != 0) for if (a)

pinskia at gcc dot gnu dot org gcc-bugzilla@gcc.gnu.org
Fri May 21 13:08:00 GMT 2004


------- 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



More information about the Gcc-bugs mailing list