public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug tree-optimization/113421] New: wrong code with -O -fno-tree-fre and _BitInt() multiplication
@ 2024-01-16 12:04 zsojka at seznam dot cz
  2024-01-16 17:07 ` [Bug tree-optimization/113421] " jakub at gcc dot gnu.org
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: zsojka at seznam dot cz @ 2024-01-16 12:04 UTC (permalink / raw)
  To: gcc-bugs

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

            Bug ID: 113421
           Summary: wrong code with -O -fno-tree-fre and _BitInt()
                    multiplication
           Product: gcc
           Version: 14.0
            Status: UNCONFIRMED
          Keywords: wrong-code
          Severity: normal
          Priority: P3
         Component: tree-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: zsojka at seznam dot cz
  Target Milestone: ---
              Host: x86_64-pc-linux-gnu
            Target: x86_64-pc-linux-gnu

Created attachment 57101
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=57101&action=edit
reduced testcase

Output:
$ x86_64-pc-linux-gnu-gcc testcase.c -O -fno-tree-fre
$ ./a.out 
Aborted

On the asm level:
...
        mov     r9d, 1024       #,
        lea     r8, [rsp+16]    #,
        mov     ecx, 1024       #,
        mov     edx, OFFSET FLAT:g      #,
        mov     esi, 1024       #,
        mov     rdi, rdx        #,
        call    __mulbitint3    #
...

rdi == rdx, overlapping the "ret" and "u" arguments of __mulbitint3

$ x86_64-pc-linux-gnu-gcc -v
Using built-in specs.
COLLECT_GCC=/repo/gcc-trunk/binary-latest-amd64/bin/x86_64-pc-linux-gnu-gcc
COLLECT_LTO_WRAPPER=/repo/gcc-trunk/binary-trunk-r14-7274-20240116114934-g1251d3957de-checking-yes-rtl-df-extra-nobootstrap-amd64/bin/../libexec/gcc/x86_64-pc-linux-gnu/14.0.1/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: /repo/gcc-trunk//configure --enable-languages=c,c++
--enable-valgrind-annotations --disable-nls --enable-checking=yes,rtl,df,extra
--disable-bootstrap --with-cloog --with-ppl --with-isl
--build=x86_64-pc-linux-gnu --host=x86_64-pc-linux-gnu
--target=x86_64-pc-linux-gnu --with-ld=/usr/bin/x86_64-pc-linux-gnu-ld
--with-as=/usr/bin/x86_64-pc-linux-gnu-as --disable-libstdcxx-pch
--prefix=/repo/gcc-trunk//binary-trunk-r14-7274-20240116114934-g1251d3957de-checking-yes-rtl-df-extra-nobootstrap-amd64
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 14.0.1 20240116 (experimental) (GCC)

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [Bug tree-optimization/113421] wrong code with -O -fno-tree-fre and _BitInt() multiplication
  2024-01-16 12:04 [Bug tree-optimization/113421] New: wrong code with -O -fno-tree-fre and _BitInt() multiplication zsojka at seznam dot cz
@ 2024-01-16 17:07 ` jakub at gcc dot gnu.org
  2024-01-17 13:44 ` cvs-commit at gcc dot gnu.org
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: jakub at gcc dot gnu.org @ 2024-01-16 17:07 UTC (permalink / raw)
  To: gcc-bugs

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

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
     Ever confirmed|0                           |1
   Last reconfirmed|                            |2024-01-16
             Status|UNCONFIRMED                 |ASSIGNED
           Assignee|unassigned at gcc dot gnu.org      |jakub at gcc dot gnu.org

--- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Created attachment 57104
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=57104&action=edit
gcc14-pr113421.patch

Untested fix.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [Bug tree-optimization/113421] wrong code with -O -fno-tree-fre and _BitInt() multiplication
  2024-01-16 12:04 [Bug tree-optimization/113421] New: wrong code with -O -fno-tree-fre and _BitInt() multiplication zsojka at seznam dot cz
  2024-01-16 17:07 ` [Bug tree-optimization/113421] " jakub at gcc dot gnu.org
@ 2024-01-17 13:44 ` cvs-commit at gcc dot gnu.org
  2024-01-17 13:47 ` jakub at gcc dot gnu.org
  2024-01-20 17:11 ` pinskia at gcc dot gnu.org
  3 siblings, 0 replies; 5+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2024-01-17 13:44 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #2 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Jakub Jelinek <jakub@gcc.gnu.org>:

https://gcc.gnu.org/g:9f8ba332e988fb582f6ca32465f6d65283f53b3a

commit r14-8186-g9f8ba332e988fb582f6ca32465f6d65283f53b3a
Author: Jakub Jelinek <jakub@redhat.com>
Date:   Wed Jan 17 14:43:40 2024 +0100

    lower-bitint: Avoid overlap between destinations and sources in libgcc
calls [PR113421]

    The following testcase is miscompiled because the bitint lowering emits a
      .MULBITINT (&a, 1024, &a, 1024, &x, 1024);
    call.  The bug is in the overlap between the destination and source, that
is
    something the libgcc routines don't handle, they use the source arrays
    during the entire algorithms which computes the destination array(s).
    For the mapping of SSA_NAMEs to VAR_DECLs the code already supports that
    correctly, but the checking whether a load from memory can be used directly
    without a temporary even when earlier we decided to merge the
    multiplication/division/modulo etc. with a store didn't.

    The following patch implements that.

    2024-01-17  Jakub Jelinek  <jakub@redhat.com>

            PR tree-optimization/113421
            * gimple-lower-bitint.cc (stmt_needs_operand_addr): Adjust function
            comment.
            (bitint_dom_walker::before_dom_children): Add g temporary to
simplify
            formatting.  Start at vop rather than cvop even if stmt is a store
            and needs_operand_addr.

            * gcc.dg/torture/bitint-50.c: New test.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [Bug tree-optimization/113421] wrong code with -O -fno-tree-fre and _BitInt() multiplication
  2024-01-16 12:04 [Bug tree-optimization/113421] New: wrong code with -O -fno-tree-fre and _BitInt() multiplication zsojka at seznam dot cz
  2024-01-16 17:07 ` [Bug tree-optimization/113421] " jakub at gcc dot gnu.org
  2024-01-17 13:44 ` cvs-commit at gcc dot gnu.org
@ 2024-01-17 13:47 ` jakub at gcc dot gnu.org
  2024-01-20 17:11 ` pinskia at gcc dot gnu.org
  3 siblings, 0 replies; 5+ messages in thread
From: jakub at gcc dot gnu.org @ 2024-01-17 13:47 UTC (permalink / raw)
  To: gcc-bugs

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

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|ASSIGNED                    |RESOLVED
         Resolution|---                         |FIXED

--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Fixed.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [Bug tree-optimization/113421] wrong code with -O -fno-tree-fre and _BitInt() multiplication
  2024-01-16 12:04 [Bug tree-optimization/113421] New: wrong code with -O -fno-tree-fre and _BitInt() multiplication zsojka at seznam dot cz
                   ` (2 preceding siblings ...)
  2024-01-17 13:47 ` jakub at gcc dot gnu.org
@ 2024-01-20 17:11 ` pinskia at gcc dot gnu.org
  3 siblings, 0 replies; 5+ messages in thread
From: pinskia at gcc dot gnu.org @ 2024-01-20 17:11 UTC (permalink / raw)
  To: gcc-bugs

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

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|---                         |14.0

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2024-01-20 17:11 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-01-16 12:04 [Bug tree-optimization/113421] New: wrong code with -O -fno-tree-fre and _BitInt() multiplication zsojka at seznam dot cz
2024-01-16 17:07 ` [Bug tree-optimization/113421] " jakub at gcc dot gnu.org
2024-01-17 13:44 ` cvs-commit at gcc dot gnu.org
2024-01-17 13:47 ` jakub at gcc dot gnu.org
2024-01-20 17:11 ` pinskia at gcc dot gnu.org

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).