public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug middle-end/114157] New: during GIMPLE pass: bitintlower ICE: in lower_stmt, at gimple-lower-bitint.cc:5561 with -O with _BitInt(256) / vector memmove
@ 2024-02-28 17:45 zsojka at seznam dot cz
  2024-03-04 14:01 ` [Bug middle-end/114157] during GIMPLE pass: bitintlower ICE: in lower_stmt, at gimple-lower-bitint.cc:5577 " jakub at gcc dot gnu.org
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: zsojka at seznam dot cz @ 2024-02-28 17:45 UTC (permalink / raw)
  To: gcc-bugs

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

            Bug ID: 114157
           Summary: during GIMPLE pass: bitintlower ICE: in lower_stmt, at
                    gimple-lower-bitint.cc:5561 with -O with _BitInt(256)
                    / vector memmove
           Product: gcc
           Version: 14.0
            Status: UNCONFIRMED
          Keywords: ice-on-valid-code
          Severity: normal
          Priority: P3
         Component: middle-end
          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 57570
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=57570&action=edit
reduced testcase

This happens even after the PR113988 fix.
I don't know how much is this related to PR114156.

Compiler output:
$ x86_64-pc-linux-gnu-gcc -O testcase.c -Wno-psabi
during GIMPLE pass: bitintlower
testcase.c: In function 'foo':
testcase.c:4:1: internal compiler error: in lower_stmt, at
gimple-lower-bitint.cc:5561
    4 | foo (__attribute__((__vector_size__ (64))) long s)
      | ^~~
0xd79d8e lower_stmt
        /repo/gcc-trunk/gcc/gimple-lower-bitint.cc:5561
0x269e129 gimple_lower_bitint
        /repo/gcc-trunk/gcc/gimple-lower-bitint.cc:6759
Please submit a full bug report, with preprocessed source (by using
-freport-bug).
Please include the complete backtrace with any bug report.
See <https://gcc.gnu.org/bugs/> for instructions.

$ 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-9216-20240228150317-g5c01ede02a1-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-9216-20240228150317-g5c01ede02a1-checking-yes-rtl-df-extra-nobootstrap-amd64
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 14.0.1 20240228 (experimental) (GCC)

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

* [Bug middle-end/114157] during GIMPLE pass: bitintlower ICE: in lower_stmt, at gimple-lower-bitint.cc:5577 with -O with _BitInt(256) / vector memmove
  2024-02-28 17:45 [Bug middle-end/114157] New: during GIMPLE pass: bitintlower ICE: in lower_stmt, at gimple-lower-bitint.cc:5561 with -O with _BitInt(256) / vector memmove zsojka at seznam dot cz
@ 2024-03-04 14:01 ` jakub at gcc dot gnu.org
  2024-03-05  9:32 ` cvs-commit at gcc dot gnu.org
  2024-03-05  9:38 ` jakub at gcc dot gnu.org
  2 siblings, 0 replies; 4+ messages in thread
From: jakub at gcc dot gnu.org @ 2024-03-04 14:01 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Ah, we need to handle BIT_FIELD_REF from some SSA_NAME to large/huge _BitInt:
void foo (vector(8) long int s)
{
  _BitInt(256) _2;

  <bb 2> [local count: 1073741824]:
  _2 = BIT_FIELD_REF <s_1(D), 256, 0>;
  MEM <_BitInt(256)> [(char * {ref-all})&d] = _2;

maybe also BIT_FIELD_REF from large/huge _BitInt to non-bitint and maybe also
from/to large/huge _BitInt.  Though, I really can't reproduce those cases right
now, so it would be purely theoretical.

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

* [Bug middle-end/114157] during GIMPLE pass: bitintlower ICE: in lower_stmt, at gimple-lower-bitint.cc:5577 with -O with _BitInt(256) / vector memmove
  2024-02-28 17:45 [Bug middle-end/114157] New: during GIMPLE pass: bitintlower ICE: in lower_stmt, at gimple-lower-bitint.cc:5561 with -O with _BitInt(256) / vector memmove zsojka at seznam dot cz
  2024-03-04 14:01 ` [Bug middle-end/114157] during GIMPLE pass: bitintlower ICE: in lower_stmt, at gimple-lower-bitint.cc:5577 " jakub at gcc dot gnu.org
@ 2024-03-05  9:32 ` cvs-commit at gcc dot gnu.org
  2024-03-05  9:38 ` jakub at gcc dot gnu.org
  2 siblings, 0 replies; 4+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2024-03-05  9:32 UTC (permalink / raw)
  To: gcc-bugs

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

--- 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:9d2bc5def30830e685ae2e3c2f4d07b967e2be63

commit r14-9314-g9d2bc5def30830e685ae2e3c2f4d07b967e2be63
Author: Jakub Jelinek <jakub@redhat.com>
Date:   Tue Mar 5 10:27:14 2024 +0100

    bitint: Handle BIT_FIELD_REF lowering [PR114157]

    The following patch adds support for BIT_FIELD_REF lowering with
    large/huge _BitInt lhs.  BIT_FIELD_REF requires mode argument first
    operand, so the operand shouldn't be any huge _BitInt.
    If we only access limbs from inside of BIT_FIELD_REF using constant
    indexes, we can just create a new BIT_FIELD_REF to extract the limb,
    but if we need to use variable index in a loop, I'm afraid we need
    to spill it into memory, which is what the following patch does.
    If there is some bitwise type for the extraction, it extracts just
    what we need and not more than that, otherwise it spills the whole
    first argument of BIT_FIELD_REF and uses MEM_REF with an offset
    with VIEW_CONVERT_EXPR around it.

    2024-03-05  Jakub Jelinek  <jakub@redhat.com>

            PR middle-end/114157
            * gimple-lower-bitint.cc: Include stor-layout.h.
            (mergeable_op): Return true for BIT_FIELD_REF.
            (struct bitint_large_huge): Declare handle_bit_field_ref method.
            (bitint_large_huge::handle_bit_field_ref): New method.
            (bitint_large_huge::handle_stmt): Use it for BIT_FIELD_REF.

            * gcc.dg/bitint-98.c: New test.
            * gcc.target/i386/avx2-pr114157.c: New test.
            * gcc.target/i386/avx512f-pr114157.c: New test.

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

* [Bug middle-end/114157] during GIMPLE pass: bitintlower ICE: in lower_stmt, at gimple-lower-bitint.cc:5577 with -O with _BitInt(256) / vector memmove
  2024-02-28 17:45 [Bug middle-end/114157] New: during GIMPLE pass: bitintlower ICE: in lower_stmt, at gimple-lower-bitint.cc:5561 with -O with _BitInt(256) / vector memmove zsojka at seznam dot cz
  2024-03-04 14:01 ` [Bug middle-end/114157] during GIMPLE pass: bitintlower ICE: in lower_stmt, at gimple-lower-bitint.cc:5577 " jakub at gcc dot gnu.org
  2024-03-05  9:32 ` cvs-commit at gcc dot gnu.org
@ 2024-03-05  9:38 ` jakub at gcc dot gnu.org
  2 siblings, 0 replies; 4+ messages in thread
From: jakub at gcc dot gnu.org @ 2024-03-05  9:38 UTC (permalink / raw)
  To: gcc-bugs

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

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

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

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

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

end of thread, other threads:[~2024-03-05  9:38 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-02-28 17:45 [Bug middle-end/114157] New: during GIMPLE pass: bitintlower ICE: in lower_stmt, at gimple-lower-bitint.cc:5561 with -O with _BitInt(256) / vector memmove zsojka at seznam dot cz
2024-03-04 14:01 ` [Bug middle-end/114157] during GIMPLE pass: bitintlower ICE: in lower_stmt, at gimple-lower-bitint.cc:5577 " jakub at gcc dot gnu.org
2024-03-05  9:32 ` cvs-commit at gcc dot gnu.org
2024-03-05  9:38 ` jakub 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).