public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug tree-optimization/113334] New: wrong code with _BitInt() shift at -O0
@ 2024-01-11 12:26 zsojka at seznam dot cz
  2024-01-11 16:53 ` [Bug tree-optimization/113334] " 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-11 12:26 UTC (permalink / raw)
  To: gcc-bugs

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

            Bug ID: 113334
           Summary: wrong code with _BitInt() shift at -O0
           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
                CC: jakub at gcc dot gnu.org
  Target Milestone: ---
              Host: x86_64-pc-linux-gnu
            Target: x86_64-pc-linux-gnu

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

I cannot tell for sure that the code is defined, but I don't see anything
breaking pre-C23 rules, if applied to _BitInt().

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

It works fine on -O1 and above.

$ 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-7127-20240110200826-g2105c49bbe8-checking-yes-rtl-df-extra-nobootstrap-amd64/bin/../libexec/gcc/x86_64-pc-linux-gnu/14.0.0/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-7127-20240110200826-g2105c49bbe8-checking-yes-rtl-df-extra-nobootstrap-amd64
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 14.0.0 20240111 (experimental) (GCC)

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

* [Bug tree-optimization/113334] wrong code with _BitInt() shift at -O0
  2024-01-11 12:26 [Bug tree-optimization/113334] New: wrong code with _BitInt() shift at -O0 zsojka at seznam dot cz
@ 2024-01-11 16:53 ` jakub at gcc dot gnu.org
  2024-01-12 10:24 ` 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-11 16:53 UTC (permalink / raw)
  To: gcc-bugs

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

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

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

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

Untested fix.

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

* [Bug tree-optimization/113334] wrong code with _BitInt() shift at -O0
  2024-01-11 12:26 [Bug tree-optimization/113334] New: wrong code with _BitInt() shift at -O0 zsojka at seznam dot cz
  2024-01-11 16:53 ` [Bug tree-optimization/113334] " jakub at gcc dot gnu.org
@ 2024-01-12 10:24 ` cvs-commit at gcc dot gnu.org
  2024-01-12 10:28 ` jakub at gcc dot gnu.org
  2024-01-16  0:35 ` pinskia at gcc dot gnu.org
  3 siblings, 0 replies; 5+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2024-01-12 10:24 UTC (permalink / raw)
  To: gcc-bugs

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

--- 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:c75579169eba269a7c339d80b5ac0239f36a58b3

commit r14-7182-gc75579169eba269a7c339d80b5ac0239f36a58b3
Author: Jakub Jelinek <jakub@redhat.com>
Date:   Fri Jan 12 11:23:27 2024 +0100

    lower-bitint: Fix up handling of unsigned INTEGER_CSTs operands with lots
of 1s in the upper bits [PR113334]

    For INTEGER_CST operands, the code decides if it should emit the whole
    INTEGER_CST into memory, or if there are enough upper bits either all 0s
    or all 1s to warrant an optimization, where we use memory for lower limbs
    or even just an INTEGER_CST for least significant limb and fill in the
    rest of limbs with 0s or 1s.  Unfortunately when not using
    bitint_min_cst_precision, the code was using tree_int_cst_sgn (op) < 0
    to determine whether to fill in the upper bits with 1s or 0s.  That is
    incorrect for TYPE_UNSIGNED INTEGER_CSTs which have higher limbs full of
    ones, we really want to check here whether the most significant bit is
    set or clear.

    Fixed thusly.

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

            PR tree-optimization/113334
            * gimple-lower-bitint.cc (bitint_large_huge::handle_operand): Use
            wi::neg_p (wi::to_wide (op)) instead of tree_int_cst_sgn (op) < 0
            to determine if number should be extended by all ones rather than
zero
            extended.

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

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

* [Bug tree-optimization/113334] wrong code with _BitInt() shift at -O0
  2024-01-11 12:26 [Bug tree-optimization/113334] New: wrong code with _BitInt() shift at -O0 zsojka at seznam dot cz
  2024-01-11 16:53 ` [Bug tree-optimization/113334] " jakub at gcc dot gnu.org
  2024-01-12 10:24 ` cvs-commit at gcc dot gnu.org
@ 2024-01-12 10:28 ` jakub at gcc dot gnu.org
  2024-01-16  0:35 ` pinskia at gcc dot gnu.org
  3 siblings, 0 replies; 5+ messages in thread
From: jakub at gcc dot gnu.org @ 2024-01-12 10:28 UTC (permalink / raw)
  To: gcc-bugs

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

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, thanks for the reports.

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

* [Bug tree-optimization/113334] wrong code with _BitInt() shift at -O0
  2024-01-11 12:26 [Bug tree-optimization/113334] New: wrong code with _BitInt() shift at -O0 zsojka at seznam dot cz
                   ` (2 preceding siblings ...)
  2024-01-12 10:28 ` jakub at gcc dot gnu.org
@ 2024-01-16  0:35 ` pinskia at gcc dot gnu.org
  3 siblings, 0 replies; 5+ messages in thread
From: pinskia at gcc dot gnu.org @ 2024-01-16  0:35 UTC (permalink / raw)
  To: gcc-bugs

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

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-16  0:35 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-01-11 12:26 [Bug tree-optimization/113334] New: wrong code with _BitInt() shift at -O0 zsojka at seznam dot cz
2024-01-11 16:53 ` [Bug tree-optimization/113334] " jakub at gcc dot gnu.org
2024-01-12 10:24 ` cvs-commit at gcc dot gnu.org
2024-01-12 10:28 ` jakub at gcc dot gnu.org
2024-01-16  0:35 ` 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).