------- Comment #1 from pinskia at gcc dot gnu dot org  2008-01-19 12:04 -------
It is constant folded but not until after inlining.
A simplier example is:

static inline int f(int a)
{
  return a+2;
}

int g(int a)
{
  const int b[] = {f(1), f(2), f(3) };
  return b[a];
}
int g1(int a)
{
  const int b[] = {(1)+2, (2)+2, (3)+2 };
  return b[a];
}

---- CUT ----
Where g and g1 could produce the same code if wanted to.


-- 

pinskia at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Severity|normal                      |enhancement
             Status|UNCONFIRMED                 |NEW
          Component|c++                         |tree-optimization
     Ever Confirmed|0                           |1
           Keywords|                            |missed-optimization
   Last reconfirmed|0000-00-00 00:00:00         |2008-01-19 12:04:07
               date|                            |
            Summary|ldexp variants, folding     |array constants after
                   |                            |inlining and
                   |                            |"staticification"


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

Reply via email to