On 08/10/18 10:47, Martin Liška wrote: > On 10/8/18 10:46 AM, Renlin Li wrote: >> Hi Martin, >> >> pr82625.C failed on compiler builds which don't support "default" and "avx" >> target. >> For example, arm/aarch64 native linux gcc compiler. >> >> >> As I found in this gcc wiki: https://gcc.gnu.org/wiki/FunctionMultiVersioning >> ''' >> This support is available in GCC 4.8 and later. Support is only available in >> C++ for i386 targets. >> ''' >> >> Should the test be guarded with a target selector or require function >> multi-versioning instead of ifunc? > > Hi. > > Sure, sorry for the breakage. I'm going to install following tested patch. > > Martin > >> >> Regards, >> Renlin >> >> >> On 10/04/2018 02:56 PM, Martin Liška wrote: >>> Hi. >>> >>> When having a pair of target clones where foo calls bar, if the target >>> attribute are equal we can redirect the call and not use ifunc dispatcher. >>> >>> Patch survives regression tests on x86_64-linux-gnu. >>> Ready for trunk? >>> >>> Martin >>> >>> gcc/ChangeLog: >>> >>> 2018-10-04 Martin Liska <mli...@suse.cz> >>> >>> PR ipa/82625 >>> * multiple_target.c (redirect_to_specific_clone): New function. >>> (ipa_target_clone): Use it. >>> * tree-inline.c: Fix comment. >>> >>> gcc/testsuite/ChangeLog: >>> >>> 2018-10-04 Martin Liska <mli...@suse.cz> >>> >>> PR ipa/82625 >>> * g++.dg/ext/pr82625.C: New test. >>> --- >>> gcc/multiple_target.c | 51 ++++++++++++++++++++++++++++++ >>> gcc/testsuite/g++.dg/ext/pr82625.C | 36 +++++++++++++++++++++ >>> gcc/tree-inline.c | 2 +- >>> 3 files changed, 88 insertions(+), 1 deletion(-) >>> create mode 100644 gcc/testsuite/g++.dg/ext/pr82625.C >>> >>> > > > 0001-Limit-a-MV-test-just-for-x86-target.patch > > > From e3053abe58eba832262db0af77980012010a642c Mon Sep 17 00:00:00 2001 > From: marxin <mli...@suse.cz> > Date: Mon, 8 Oct 2018 11:07:29 +0200 > Subject: [PATCH] Limit a MV test just for x86 target. > > gcc/testsuite/ChangeLog: > > 2018-10-08 Martin Liska <mli...@suse.cz> > > * g++.dg/ext/pr82625.C: Add dg-compile filter. > --- > gcc/testsuite/g++.dg/ext/pr82625.C | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/gcc/testsuite/g++.dg/ext/pr82625.C > b/gcc/testsuite/g++.dg/ext/pr82625.C > index 47bd2df1104..59b174f8c51 100644 > --- a/gcc/testsuite/g++.dg/ext/pr82625.C > +++ b/gcc/testsuite/g++.dg/ext/pr82625.C > @@ -1,6 +1,7 @@ > /* { dg-do compile } */ > /* { dg-require-ifunc "" } */ > /* { dg-options "-O2 -fdump-tree-optimized" } */ > +/* { dg-do compile { target i?86-*-* x86_64-*-* } } */ > > __attribute__ ((target ("default"))) > static unsigned foo(const char *buf, unsigned size) { >
Which begs the question why is this not put under g++.target? R.