how to fix anti-optimization?

Richard Kenner kenner@vlsi1.ultra.nyu.edu
Fri Sep 14 15:27:00 GMT 2001


    const double Prescale[] = { 3.0, 5.0 };
    extern void bar(double, double);
    void foo () { bar(Prescale[0], Prescale[1]); }

    With -O1 or higher, gcc substitutes constants 3.0 and 5.0 for the array 
    references.  This isn't a win on targets where the extra copies of these 
    constants have to go in memory; you get an extra copy of the constants in 
    data space.

Only if it's no more complex an expression.  Consider Prescale[0]*Prescale[1].
It's *much* faster to do the folding in that case.



More information about the Gcc mailing list