public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug rtl-optimization/114054] New: ICE: in reduce_to_bit_field_precision, at expr.cc:12658 with -Og -fwhole-program -fno-tree-ccp -fprofile-use -fno-tree-copy-prop and _BitInt()
@ 2024-02-22 11:24 zsojka at seznam dot cz
  2024-02-22 17:47 ` [Bug rtl-optimization/114054] " jakub at gcc dot gnu.org
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: zsojka at seznam dot cz @ 2024-02-22 11:24 UTC (permalink / raw)
  To: gcc-bugs

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

            Bug ID: 114054
           Summary: ICE: in reduce_to_bit_field_precision, at
                    expr.cc:12658 with -Og -fwhole-program -fno-tree-ccp
                    -fprofile-use -fno-tree-copy-prop and _BitInt()
           Product: gcc
           Version: 14.0
            Status: UNCONFIRMED
          Keywords: ice-on-valid-code
          Severity: normal
          Priority: P3
         Component: rtl-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 57495
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=57495&action=edit
reduced testcase

Compiler output:
$ x86_64-pc-linux-gnu-gcc -Og -fwhole-program -fno-tree-ccp -fprofile-use
-fno-tree-copy-prop testcase.c
testcase.c: In function 'main':
testcase.c:13:1: warning: '.../a-testcase.gcda' profile count data file not
found [-Wmissing-profile]
   13 | }
      | ^
during RTL pass: expand
testcase.c: In function 'foo.constprop':
testcase.c:6:7: internal compiler error: in reduce_to_bit_field_precision, at
expr.cc:12658
    6 |   x = __builtin_mul_overflow_p ((unsigned _BitInt(1)) u, i,
(_BitInt(33)) 0);
      |       ^~~~~~~~~~~~~~~~~~~~~~~~
0x763136 reduce_to_bit_field_precision
        /repo/gcc-trunk/gcc/expr.cc:12658
0x10bf96a expand_expr_real_2(separate_ops*, rtx_def*, machine_mode,
expand_modifier)
        /repo/gcc-trunk/gcc/expr.cc:10267
0x11fb10c expand_arith_overflow
        /repo/gcc-trunk/gcc/internal-fn.cc:2722
0xf83d8f expand_call_stmt
        /repo/gcc-trunk/gcc/cfgexpand.cc:2771
0xf83d8f expand_gimple_stmt_1
        /repo/gcc-trunk/gcc/cfgexpand.cc:3932
0xf83d8f expand_gimple_stmt
        /repo/gcc-trunk/gcc/cfgexpand.cc:4077
0xf8a2fe expand_gimple_basic_block
        /repo/gcc-trunk/gcc/cfgexpand.cc:6133
0xf8bfd7 execute
        /repo/gcc-trunk/gcc/cfgexpand.cc:6872
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-9117-20240221083607-g5772ea772d1-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-9117-20240221083607-g5772ea772d1-checking-yes-rtl-df-extra-nobootstrap-amd64
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 14.0.1 20240221 (experimental) (GCC)

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

* [Bug rtl-optimization/114054] ICE: in reduce_to_bit_field_precision, at expr.cc:12658 with -Og -fwhole-program -fno-tree-ccp -fprofile-use -fno-tree-copy-prop and _BitInt()
  2024-02-22 11:24 [Bug rtl-optimization/114054] New: ICE: in reduce_to_bit_field_precision, at expr.cc:12658 with -Og -fwhole-program -fno-tree-ccp -fprofile-use -fno-tree-copy-prop and _BitInt() zsojka at seznam dot cz
@ 2024-02-22 17:47 ` jakub at gcc dot gnu.org
  2024-02-23 10:39 ` 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-02-22 17:47 UTC (permalink / raw)
  To: gcc-bugs

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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |ASSIGNED
   Last reconfirmed|                            |2024-02-22
           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 57503
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=57503&action=edit
gcc14-pr114054.patch

Untested fix.

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

* [Bug rtl-optimization/114054] ICE: in reduce_to_bit_field_precision, at expr.cc:12658 with -Og -fwhole-program -fno-tree-ccp -fprofile-use -fno-tree-copy-prop and _BitInt()
  2024-02-22 11:24 [Bug rtl-optimization/114054] New: ICE: in reduce_to_bit_field_precision, at expr.cc:12658 with -Og -fwhole-program -fno-tree-ccp -fprofile-use -fno-tree-copy-prop and _BitInt() zsojka at seznam dot cz
  2024-02-22 17:47 ` [Bug rtl-optimization/114054] " jakub at gcc dot gnu.org
@ 2024-02-23 10:39 ` cvs-commit at gcc dot gnu.org
  2024-02-23 10:39 ` jakub at gcc dot gnu.org
  2024-02-24  4:40 ` pinskia at gcc dot gnu.org
  3 siblings, 0 replies; 5+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2024-02-23 10:39 UTC (permalink / raw)
  To: gcc-bugs

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

--- 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:22121546e0315d25ee419d2389022e3974750885

commit r14-9151-g22121546e0315d25ee419d2389022e3974750885
Author: Jakub Jelinek <jakub@redhat.com>
Date:   Fri Feb 23 11:38:18 2024 +0100

    expr: Fix REDUCE_BIT_FIELD in multiplication expansion [PR114054]

    The following testcase ICEs, because the REDUCE_BIT_FIELD macro uses
    the target variable implicitly:
     #define REDUCE_BIT_FIELD(expr)  (reduce_bit_field                        
\
                                      ? reduce_to_bit_field_precision ((expr),
\
                                                                       target,
\
                                                                       type)  
\
                                      : (expr))
    and so when the code below reuses the target variable, documented to be
       The value may be stored in TARGET if TARGET is nonzero.
       TARGET is just a suggestion; callers must assume that
       the rtx returned may not be the same as TARGET.
    for something unrelated (the value that should be returned), this
misbehaves
    (in the testcase target is set to a CONST_INT, which has VOIDmode and
    reduce_to_bit_field_precision assert checking doesn't like that).
    Needed to say that
       If TARGET is CONST0_RTX, it means that the value will be ignored.
    but in expand_expr_real_2 does at the start:
      ignore = (target == const0_rtx
                || ((CONVERT_EXPR_CODE_P (code)
                     || code == COND_EXPR || code == VIEW_CONVERT_EXPR)
                    && TREE_CODE (type) == VOID_TYPE));

      /* We should be called only if we need the result.  */
      gcc_assert (!ignore);
    - so such target is mainly meant for calls and the like in other routines.
    Certainly doesn't expect that target changes from not being ignored
    initially to ignore later on and other CONST_INT results as well as
anything
    which is not an object into which anything can be stored.

    So, the following patch fixes that by using a more appripriate temporary
    for the result, which other code is using.

    2024-02-23  Jakub Jelinek  <jakub@redhat.com>

            PR rtl-optimization/114054
            * expr.cc (expand_expr_real_2) <case MULT_EXPR>: Use
            temp variable instead of target parameter for result.

            * gcc.dg/bitint-92.c: New test.

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

* [Bug rtl-optimization/114054] ICE: in reduce_to_bit_field_precision, at expr.cc:12658 with -Og -fwhole-program -fno-tree-ccp -fprofile-use -fno-tree-copy-prop and _BitInt()
  2024-02-22 11:24 [Bug rtl-optimization/114054] New: ICE: in reduce_to_bit_field_precision, at expr.cc:12658 with -Og -fwhole-program -fno-tree-ccp -fprofile-use -fno-tree-copy-prop and _BitInt() zsojka at seznam dot cz
  2024-02-22 17:47 ` [Bug rtl-optimization/114054] " jakub at gcc dot gnu.org
  2024-02-23 10:39 ` cvs-commit at gcc dot gnu.org
@ 2024-02-23 10:39 ` jakub at gcc dot gnu.org
  2024-02-24  4:40 ` pinskia at gcc dot gnu.org
  3 siblings, 0 replies; 5+ messages in thread
From: jakub at gcc dot gnu.org @ 2024-02-23 10:39 UTC (permalink / raw)
  To: gcc-bugs

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

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 rtl-optimization/114054] ICE: in reduce_to_bit_field_precision, at expr.cc:12658 with -Og -fwhole-program -fno-tree-ccp -fprofile-use -fno-tree-copy-prop and _BitInt()
  2024-02-22 11:24 [Bug rtl-optimization/114054] New: ICE: in reduce_to_bit_field_precision, at expr.cc:12658 with -Og -fwhole-program -fno-tree-ccp -fprofile-use -fno-tree-copy-prop and _BitInt() zsojka at seznam dot cz
                   ` (2 preceding siblings ...)
  2024-02-23 10:39 ` jakub at gcc dot gnu.org
@ 2024-02-24  4:40 ` pinskia at gcc dot gnu.org
  3 siblings, 0 replies; 5+ messages in thread
From: pinskia at gcc dot gnu.org @ 2024-02-24  4:40 UTC (permalink / raw)
  To: gcc-bugs

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

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-02-24  4:40 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-02-22 11:24 [Bug rtl-optimization/114054] New: ICE: in reduce_to_bit_field_precision, at expr.cc:12658 with -Og -fwhole-program -fno-tree-ccp -fprofile-use -fno-tree-copy-prop and _BitInt() zsojka at seznam dot cz
2024-02-22 17:47 ` [Bug rtl-optimization/114054] " jakub at gcc dot gnu.org
2024-02-23 10:39 ` cvs-commit at gcc dot gnu.org
2024-02-23 10:39 ` jakub at gcc dot gnu.org
2024-02-24  4:40 ` 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).