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.

Reply via email to