https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115248

--- Comment #4 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The trunk branch has been updated by Richard Sandiford <rsand...@gcc.gnu.org>:

https://gcc.gnu.org/g:a68e32b8e4b4c03c81e3a4b7560d52fef2d16088

commit r15-8024-ga68e32b8e4b4c03c81e3a4b7560d52fef2d16088
Author: Richard Sandiford <richard.sandif...@arm.com>
Date:   Thu Mar 13 12:03:04 2025 +0000

    testsuite: Remove sve/pre_cond_share_1.c [PR115248]

    gcc.target/aarch64/sve/pre_cond_share_1.c started failing after
    r15-276-gbed6ec161be8c5ca.  However, that was incidental.
    The test's inner loop is duplicated by -fswitch-loops and
    that patch happened to change the copy of the loop that was
    not the original focus of the test.

    The test was added as part of r14-4713-g4b39aeef594f311e (patch A).
    Before patch A we had:

      mask__109.48_201 = vect_distbb_170.43_191 < vect_cst__200;
      _263 = .COND_MUL (mask__109.48_201, vect_iftmp.45_195, vect_cst__198, {
0.0, ... });
      vect_prephitmp_153.50_205 = .VCOND (vect_distbb_170.43_191, { 0.0, ... },
_263, vect_cst__198, 112);

    which, expanding the .VCOND, is equivalent to:

      mask__102.46_197 = vect_distbb_170.43_191 >= { 0.0, ... };
      mask__109.48_201 = vect_distbb_170.43_191 < vect_cst__200;
      _263 = .COND_MUL (mask__109.48_201, vect_iftmp.45_195, vect_cst__198, {
0.0, ... });
      vect_prephitmp_153.50_205 = mask__102.46_197 ? _263 : vect_cst__198

    After patch A we had:

      mask__102.46_197 = vect_distbb_170.43_191 >= { 0.0, ... };
      mask__109.48_201 = vect_distbb_170.43_191 < vect_cst__200;
      _70 = mask__102.46_197 & mask__109.48_201;
      vect_prephitmp_153.50_205 = .COND_MUL (_70, vect_iftmp.45_195,
vect_cst__198, { 0.0, ... });

    But this changes the behaviour when vect_distbb_170.43_191 < { 0.0, ... }.
    In that case, the original code would pick an else value of vect_cst__198,
    whereas the new code would pick an else value of { 0.0, ... }.

    That was fixed in r14-8668-g8123f3ca3fd89103 (PR113607, patch B),
    but fixing the bug (rightly) reverted the code to the previous output.
    Patch B therefore XFAILed the thing that patch A was originally testing.

    Since the test was added for patch A and since patch A seems to generate
    incorrect code for the test, I think we should just remove it.

    gcc/testsuite/
            PR testsuite/115248
            * gcc.target/aarch64/sve/pre_cond_share_1.c: Delete

Reply via email to