PING 2.
On Tue, Sep 8, 2015 at 2:27 PM, Evgeny Stupachenko <evstu...@gmail.com> wrote: > Ping. > > On Thu, Aug 27, 2015 at 2:18 PM, Evgeny Stupachenko <evstu...@gmail.com> > wrote: >> Hi All, >> >> Based on RFC: >> https://gcc.gnu.org/ml/gcc-patches/2015-08/msg01322.html >> >> The patch implement an extension to Function Multiversioning that >> allows to clone a function for multiple targets. >> __attribute__((target_clones("avx","arch=slm","default"))) >> int foo () >> ... >> >> Will create 3 clones of foo(). One optimized with -mavx, one optimized >> with -march=slm, and one with default optimizations. >> And will create ifunc resolver that calls appropriate clone (same as >> in Function Multiversioning). >> >> Bootstrap and make check for x86 passed. >> >> Is it ok for trunk? >> >> 2015-08-27 Evgeny Stupachenko <evstu...@gmail.com> >> >> gcc/ >> * Makefile.in (OBJS): Add multiple_target.o. >> * multiple_target.c (make_attribute): New. >> (create_dispatcher_calls): Ditto. >> (expand_target_clones): Ditto. >> (ipa_target_clone): Ditto. >> * passes.def (pass_target_clone): New ipa pass. >> * tree-pass.h (make_pass_target_clone): Ditto. >> >> gcc/c-family >> * c-common.c (handle_target_clones_attribute): New. >> * (c_common_attribute_table): Add handle_target_clones_attribute. >> * (handle_always_inline_attribute): Add check on target_clones >> attribute. >> * (handle_target_attribute): Ditto. >> >> gcc/testsuite >> * gcc.dg/mvc1.c: New test for multiple targets cloning. >> * gcc.dg/mvc2.c: Ditto. >> * gcc.dg/mvc3.c: Ditto. >> * gcc.dg/mvc4.c: Ditto. >> * gcc.dg/mvc5.c: Ditto. >> * gcc.dg/mvc6.c: Ditto. >> * gcc.dg/mvc7.c: Ditto. >> * g++.dg/ext/mvc1.C: Ditto. >> * g++.dg/ext/mvc2.C: Ditto. >> * g++.dg/ext/mvc3.C: Ditto. >> >> gcc/doc >> * doc/extend.texi (target_clones): New attribute description.