On 20/10/15 17:25, Ramana Radhakrishnan wrote:
On Tue, Oct 20, 2015 at 4:52 PM, Andre Vieira
<andre.simoesdiasvie...@arm.com> wrote:
Hi,

This patch addresses PR-67948 by changing the xor-and.c test, initially
written for a simplify-rtx pattern, to make it pass post r228661 (see
https://gcc.gnu.org/ml/gcc-patches/2015-10/msg00676.html). This test no
longer triggered the simplify-rtx pattern it was written for prior to
r228661, though other optimizations did lead to the same assembly the test
checked for. The optimization added with r228661 matches the pattern used in
the test and optimizes it to a better and still valid sequence. Being unable
to easily change the test to trigger the original simplify-rtx pattern, I
chose to change it to pass with the new produced assembly sequence.

This is correct because the transformation is valid and it yields a more
efficient pattern. However, as I pointed out before this test doesn't test
the optimization it originally was intended for.

Tested by running regression tests for armv6.

Is this OK to commit?


Missing Changelog - please remember to put the PR number in the
Changelog in the correct format i.e PR testsuite/67948. Ok with that.

I suspect that the simplify-rtx.c is much less likely to trigger given
your match.pd change, but it will be fun proving that.
Ideally, I'd like to prove the simplify-rtx.c couldn't be triggered anymore. Though I wouldn't know where to begin with that. I did spend a tiny effort trying to trigger it with a version before the match.pd change, but with no success.

regards
ramana


Thanks,
Andre

Here is the ChangeLog (with the PR), sorry for that!

gcc/testsuite/ChangeLog
2015-10-15  Andre Vieira  <andre.simoesdiasvie...@arm.com>

        PR testsuite/67948
        * gcc.target/arm/xor-and.c: check for eor instead of orr.
From 89922547118e716b41ddf6edefb274322193f25c Mon Sep 17 00:00:00 2001
From: Andre Simoes Dias Vieira <andsi...@arm.com>
Date: Thu, 15 Oct 2015 12:48:26 +0100
Subject: [PATCH] Fix for xor-and.c test

---
 gcc/testsuite/gcc.target/arm/xor-and.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gcc/testsuite/gcc.target/arm/xor-and.c b/gcc/testsuite/gcc.target/arm/xor-and.c
index 53dff85f8f780fb99a93bbcc24180a3d0d5d3be9..3715530cd7bf9ad8abb24cb21cd51ae3802079e8 100644
--- a/gcc/testsuite/gcc.target/arm/xor-and.c
+++ b/gcc/testsuite/gcc.target/arm/xor-and.c
@@ -10,6 +10,6 @@ unsigned short foo (unsigned short x)
   return x;
 }
 
-/* { dg-final { scan-assembler "orr" } } */
+/* { dg-final { scan-assembler "eor" } } */
 /* { dg-final { scan-assembler-not "mvn" } } */
 /* { dg-final { scan-assembler-not "uxth" } } */
-- 
1.9.1

Reply via email to