On 28/11/13 06:17, Zhenqiang Chen wrote:
> 
> 
>> -----Original Message-----
>> From: Jeff Law [mailto:l...@redhat.com]
>> Sent: Thursday, November 28, 2013 12:43 AM
>> To: Zhenqiang Chen; gcc-patches@gcc.gnu.org
>> Cc: Ramana Radhakrishnan; Richard Earnshaw
>> Subject: Re: [PING] [PATCH, ARM, testcase] Skip target arm-neon for
>> lp1243022.c
>>
>> On 11/27/13 02:05, Zhenqiang Chen wrote:
>>> Ping?
>> Thanks for including the actual patch you're pinging, it helps :-)
>>
>>>>> Hi,
>>>>
>>>> lp1243022.c will fail with options: -mfpu=neon -mfloat-abi=hard.
>>>>
>>>> Logs show it does not generate auto-incremental instruction in pass
>>>> auto_inc_dec. In this case, the check of REG_INC note at subreg2 will
>>>> be invalid. So skip the check for target arm-neon.
>>>>
>>>> All PASS with the following options:
>>>>
>>>> -mthumb/-mcpu=cortex-a9/-mfloat-abi=hard
>>>> -mthumb/-mcpu=cortex-a9/-mfloat-abi=soft
>>>> -mthumb/-mcpu=cortex-a9/-mfloat-abi=softfp
>>>> -mthumb/-mcpu=cortex-a9/-mfloat-abi=soft/-mfpu=vfpv3
>>>> -mthumb/-mcpu=cortex-a9/-mfloat-abi=softfp/-mfpu=vfpv3
>>>> -mthumb/-mcpu=cortex-a9/-mfloat-abi=hard/-mfpu=vfpv3
>>>> -mthumb/-mcpu=cortex-a9/-mfloat-abi=soft/-mfpu=neon
>>>> -mthumb/-mcpu=cortex-a9/-mfloat-abi=softfp/-mfpu=neon
>>>> -mthumb/-mcpu=cortex-a9/-mfloat-abi=hard/-mfpu=neon
>>>> -mthumb/-mcpu=cortex-a15/-mfloat-abi=hard
>>>> -mthumb/-mcpu=cortex-a15/-mfloat-abi=soft
>>>> -mthumb/-mcpu=cortex-a15/-mfloat-abi=softfp
>>>> -mthumb/-mcpu=cortex-a15/-mfloat-abi=soft/-mfpu=vfpv4
>>>> -mthumb/-mcpu=cortex-a15/-mfloat-abi=softfp/-mfpu=vfpv4
>>>> -mthumb/-mcpu=cortex-a15/-mfloat-abi=hard/-mfpu=vfpv4
>>>> -mthumb/-mcpu=cortex-a15/-mfloat-abi=soft/-mfpu=neon
>>>> -mthumb/-mcpu=cortex-a15/-mfloat-abi=softfp/-mfpu=neon
>>>> -mthumb/-mcpu=cortex-a15/-mfloat-abi=hard/-mfpu=neon
>>>>
>>>> Is it OK?
>>>>
>>>> Thanks!
>>>> -Zhenqiang
>>>>
>>>> testsuite/ChangeLog:
>>>> 2013-11-08  Zhenqiang Chen  <zhenqiang.c...@linaro.org>
>>>>
>>>>          * gcc.target/arm/lp1243022.c: Skip target arm-neon.
>> It seems to me you should be xfailing arm-neon, not skipping the test.
>> Unless there is some fundamental reason why we can not generate auto-inc
>> instructions on the neon.
> 
> Thanks for the comments. Update the test case as xfail.
> 
> diff --git a/gcc/testsuite/gcc.target/arm/lp1243022.c
> b/gcc/testsuite/gcc.target/arm/lp1243022.c
> index 91a544d..b2ebe7e 100644
> --- a/gcc/testsuite/gcc.target/arm/lp1243022.c
> +++ b/gcc/testsuite/gcc.target/arm/lp1243022.c
> @@ -1,7 +1,7 @@
>  /* { dg-do compile { target arm_thumb2 } } */
>  /* { dg-options "-O2 -fdump-rtl-subreg2" } */
> 
> -/* { dg-final { scan-rtl-dump "REG_INC" "subreg2" } } */
> +/* { dg-final { scan-rtl-dump "REG_INC" "subreg2" { xfail arm_neon } } } */
>  /* { dg-final { cleanup-rtl-dump "subreg2" } } */
>  struct device;
>  typedef unsigned int __u32;
> 
> 

This test looks horribly fragile, since it's taking a large chunk of
code and expecting a specific optimization to have occurred in exactly
one place.  The particular instruction was a large pre-modify offset,
which isn't supported

Looking back through the original bug report, the problem was that the
subreg2 pass was losing a REG_INC note that had previously been created.
 Of course it's not a bug if it was never created before, but there's no
easy way to tell that.

On that basis, I think the original patch is the correct one, please
install that.

I must say that I do wonder what the value of some of these tests are in
the absence of a proper unit test environment.

R.

Reply via email to