public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
From: "rearnsha at gcc dot gnu.org" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug target/106187] armhf: Miscompilation at O2 level (O0 / O1 are working)
Date: Thu, 14 Jul 2022 13:18:26 +0000	[thread overview]
Message-ID: <bug-106187-4-VkPwdzyoKJ@http.gcc.gnu.org/bugzilla/> (raw)
In-Reply-To: <bug-106187-4@http.gcc.gnu.org/bugzilla/>

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

--- Comment #25 from Richard Earnshaw <rearnsha at gcc dot gnu.org> ---
A quick status update.

I've managed to reduce the testcase to the latest attachment.  The program is
heavily reduced (so some bits likely don't make much sense), but the test still
'passes' when compiled with -fno-strict-aliasing, but fails with the same error
when that option is omitted.

Looking at the assembler output of void
hwy::N_EMU128::TestMulAdd::operator()<float, hwy::N_EMU128::Simd<float, 4u, 0>
>(float, hwy::N_EMU128::Simd<float, 4u, 0>) [clone .isra.0]

we see (correct on left, incorrect on right):


        add     r3, sp, #148                    add     r3, sp, #148
        vmov.f32        s14, #3.0e+0            vmov.f32        s14, #3.0e+0
[1]     mov     r6, r4                          mov     r6, r4
        vmov.f32        s15, #2.0e+0            vmov.f32        s15, #2.0e+0
        add     r8, sp, #100                    add     r8, sp, #100
        add     lr, sp, #132                    add     lr, sp, #132
        ldm     r3, {r0, r1, r2, r3}            ldm     r3, {r0, r1, r2, r3}
        vstr.32 s14, [sp, #152]                 vstr.32 s14, [sp, #152]
        vmov.f32        s14, #4.0e+0            vmov.f32        s14, #4.0e+0
[2]     stm     r4, {r0, r1, r2, r3}  |         stm     r5, {r0, r1, r2, r3}
        add     ip, sp, #116                    add     ip, sp, #116
        vstr.32 s14, [sp, #156]                 vstr.32 s14, [sp, #156]
        vmov.f32        s14, #5.0e+0            vmov.f32        s14, #5.0e+0
        stm     r5, {r0, r1, r2, r3}  <
        add     r5, sp, #36                     add     r5, sp, #36
        add     r10, sp, #196                   add     r10, sp, #196
        vstr.32 s14, [sp, #160]                 vstr.32 s14, [sp, #160]
        add     r9, sp, #152                    add     r9, sp, #152
[3]     vldr.32 s14, [r6]                       vldr.32 s14, [r6]
[4]     stm     r8, {r0, r1, r2, r3}  |         stm     r4, {r0, r1, r2, r3}
        vmul.f32        s15, s14, s15           vmul.f32        s15, s14, s15
                                      >         stm     r8, {r0, r1, r2, r3}

at [1] we see that r6 and r4 are the same value.  We also see that at [3] a
register is read using r6 as the base.  In the good code on the left, the STM
to r4 is at 2, but in the incorrect code is does not occur until 4, ie
immediately after the load at [3].

I need to dig a bit deeper now on this specific function to see if the alias
information is correct, or if it has somehow been lost/corrupted during the
compilation.

  parent reply	other threads:[~2022-07-14 13:18 UTC|newest]

Thread overview: 61+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-07-04 16:23 [Bug c++/106187] New: armhf: Miscompilation with -O2 mathieu.malaterre at gmail dot com
2022-07-04 16:37 ` [Bug c++/106187] " mathieu.malaterre at gmail dot com
2022-07-04 16:37 ` mathieu.malaterre at gmail dot com
2022-07-04 16:42 ` [Bug c++/106187] armhf: Miscompilation at all optimization levels mathieu.malaterre at gmail dot com
2022-07-04 20:19 ` pinskia at gcc dot gnu.org
2022-07-04 20:22 ` pinskia at gcc dot gnu.org
2022-07-05  7:18 ` [Bug target/106187] " mathieu.malaterre at gmail dot com
2022-07-05  7:46 ` [Bug target/106187] armhf: Miscompilation at O2 level (O0 / O1 are working) jan.wassenberg at gmail dot com
2022-07-05  8:00 ` mathieu.malaterre at gmail dot com
2022-07-07  7:50 ` mathieu.malaterre at gmail dot com
2022-07-07  8:00 ` mathieu.malaterre at gmail dot com
2022-07-07  9:38 ` rearnsha at gcc dot gnu.org
2022-07-08  9:01 ` mathieu.malaterre at gmail dot com
2022-07-08  9:01 ` mathieu.malaterre at gmail dot com
2022-07-08  9:03 ` mathieu.malaterre at gmail dot com
2022-07-08 13:50 ` rearnsha at gcc dot gnu.org
2022-07-08 13:59 ` malat at debian dot org
2022-07-08 14:16 ` rearnsha at gcc dot gnu.org
2022-07-08 14:18 ` malat at debian dot org
2022-07-08 14:51 ` rearnsha at gcc dot gnu.org
2022-07-08 15:03 ` malat at debian dot org
2022-07-08 17:24 ` rearnsha at gcc dot gnu.org
2022-07-08 17:31 ` rearnsha at gcc dot gnu.org
2022-07-08 19:27 ` jan.wassenberg at gmail dot com
2022-07-14 13:03 ` rearnsha at gcc dot gnu.org
2022-07-14 13:18 ` rearnsha at gcc dot gnu.org [this message]
2022-07-14 16:09 ` pinskia at gcc dot gnu.org
2022-07-18 15:45 ` rearnsha at gcc dot gnu.org
2022-07-18 15:48 ` rearnsha at gcc dot gnu.org
2022-07-19  7:27 ` rguenth at gcc dot gnu.org
2022-07-19  9:00 ` rearnsha at gcc dot gnu.org
2022-07-19  9:13 ` rguenth at gcc dot gnu.org
2022-07-21  9:25 ` rearnsha at gcc dot gnu.org
2022-07-22 12:52 ` rearnsha at gcc dot gnu.org
2022-07-22 13:24 ` rearnsha at gcc dot gnu.org
2022-07-25  6:12 ` rguenth at gcc dot gnu.org
2022-07-25  9:44 ` rearnsha at gcc dot gnu.org
2022-07-25  9:50 ` rguenther at suse dot de
2022-07-25  9:59 ` rearnsha at gcc dot gnu.org
2022-07-25 10:24 ` rguenth at gcc dot gnu.org
2022-07-25 10:26 ` [Bug rtl-optimization/106187] " rguenth at gcc dot gnu.org
2022-07-25 10:33 ` rearnsha at gcc dot gnu.org
2022-07-25 10:42 ` rguenth at gcc dot gnu.org
2022-07-25 10:48 ` rearnsha at gcc dot gnu.org
2022-07-25 11:03 ` rguenther at suse dot de
2022-07-25 11:05 ` rguenth at gcc dot gnu.org
2022-07-25 13:04 ` rearnsha at gcc dot gnu.org
2022-07-25 14:45 ` rguenther at suse dot de
2022-07-27 13:35 ` rearnsha at gcc dot gnu.org
2022-07-28 16:51 ` rearnsha at gcc dot gnu.org
2022-08-03  9:07 ` cvs-commit at gcc dot gnu.org
2022-08-03  9:16 ` rearnsha at gcc dot gnu.org
2022-08-10  7:06 ` malat at debian dot org
2022-08-10  7:11 ` pinskia at gcc dot gnu.org
2022-09-02  9:28 ` malat at debian dot org
2022-09-02 12:30 ` cvs-commit at gcc dot gnu.org
2022-09-02 12:32 ` rearnsha at gcc dot gnu.org
2022-09-02 14:07 ` cvs-commit at gcc dot gnu.org
2022-09-27 15:28 ` malat at debian dot org
2022-09-27 15:54 ` rearnsha at gcc dot gnu.org
2024-01-20 17:20 ` pinskia at gcc dot gnu.org

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=bug-106187-4-VkPwdzyoKJ@http.gcc.gnu.org/bugzilla/ \
    --to=gcc-bugzilla@gcc.gnu.org \
    --cc=gcc-bugs@gcc.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).