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



--- Comment #18 from miles at gnu dot org 2013-01-09 05:35:35 UTC ---

Is this considered fixed yet?  Given the following example, the latest Debian

trunk snapshot ("4.8.0 20121120 (experimental) [trunk revision 193662]", using

flags "-O2") seems to do a good job inlining this code well, even with many

calls (whereas 4.7 does not, once the number of calls goes beyond 3-4 or so):



    extern void process (float);                                                

    template<typename Fun, typename T>

    void process_fun_at (const Fun &fun, T x)

    {

      process (fun (x));

    }

    static float add1 (float x)

    {

      return x + 1;

    }

    void test0 (float i) { process_fun_at (add1, i); }                          

    void test1 (float i) { process_fun_at (add1, i); }

    void test2 (float i) { process_fun_at (add1, i); }

    void test3 (float i) { process_fun_at (add1, i); }

    void test4 (float i) { process_fun_at (add1, i); }

    void test5 (float i) { process_fun_at (add1, i); }

    void test6 (float i) { process_fun_at (add1, i); }

    void test7 (float i) { process_fun_at (add1, i); }

    void test8 (float i) { process_fun_at (add1, i); }

    void test9 (float i) { process_fun_at (add1, i); }

    void test10 (float i) { process_fun_at (add1, i); }

    void test11 (float i) { process_fun_at (add1, i); }

    void test12 (float i) { process_fun_at (add1, i); }

    void test13 (float i) { process_fun_at (add1, i); }

    void test14 (float i) { process_fun_at (add1, i); }

    void test15 (float i) { process_fun_at (add1, i); }

    void test16 (float i) { process_fun_at (add1, i); }

    void test17 (float i) { process_fun_at (add1, i); }

    void test18 (float i) { process_fun_at (add1, i); }

    void test19 (float i) { process_fun_at (add1, i); }

Reply via email to