Hi Christophe,

On 18/01/18 09:25, Christophe Lyon wrote:
Hi Kyrill,


On 17 January 2018 at 12:27, Kyrill  Tkachov
<kyrylo.tkac...@foss.arm.com> wrote:
Hi all,

This is an awkward testsuite failure. The original bug was that we were
failing to put out
the conditional code in the conditional form of the STL instruction (oops!).
So we wanted to output STLNE, but instead output STL.
The testacase relies on if-conversion to conditionalise the insn for STL.
However, ever since r251643 the expansion of a non-relaxed atomic store
always includes a compiler barrier. That blocks if-conversion in all cases.

So there's no easy to get to a conditional STL instruction from a C program.
But we do want to test for the original bug fix that if the RTL insn for STL
is conditionalised
it should output the conditional code.

The solution in this patch is to convert the test into an RTL test with the
COND_EXEC form
of the STL insn and scan the assembly output there.
This seems to work fine, and gives us an opportunity to create a
gcc.dg/rtl/arm directory
in the RTL tests.

This now makes the gcc.target/arm/stl-cond.c disappear (as the test is
deleted) and
the new test in gcc.dg/rtl/arm/stl-cond.c passes.

Committing to trunk.
Thanks,
Kyrill

2018-01-17  Kyrylo Tkachov  <kyrylo.tkac...@arm.com>

     * gcc.dg/rtl/arm/stl-cond.c: New test.
     * gcc.target/arm/stl-cond.c: Delete.
I've noticed that the new test is unsupported on armeb, is this intentional?

I think it can PASS on armeb. I guess it's just a matter of changing the target 
in
/* { dg-do compile { target arm-*-* } } */
to arm*-*-*.

Such a patch is pre-approved.
Kyrill

Christophe

Reply via email to