public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug tree-optimization/105802] New: [13 Regression] ICE: in irange_intersect, at value-range.cc:1955 with -funswitch-loops
@ 2022-06-01 12:45 zsojka at seznam dot cz
  2022-06-01 13:26 ` [Bug tree-optimization/105802] " rguenth at gcc dot gnu.org
                   ` (5 more replies)
  0 siblings, 6 replies; 7+ messages in thread
From: zsojka at seznam dot cz @ 2022-06-01 12:45 UTC (permalink / raw)
  To: gcc-bugs

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

            Bug ID: 105802
           Summary: [13 Regression] ICE: in irange_intersect, at
                    value-range.cc:1955 with -funswitch-loops
           Product: gcc
           Version: 13.0
            Status: UNCONFIRMED
          Keywords: ice-on-valid-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

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

This happens even after the PR105770 fix.

Compiler output:
$ x86_64-pc-linux-gnu-gcc -O -funswitch-loops testcase.C 
during GIMPLE pass: unswitch
testcase.C: In function 'void foo(int)':
testcase.C:9:1: internal compiler error: in irange_intersect, at
value-range.cc:1955
    9 | foo (int i)
      | ^~~
0x8f7931 irange::irange_intersect(irange const&)
        /repo/gcc-trunk/gcc/value-range.cc:1955
0x182adaf irange::intersect(vrange const&)
        /repo/gcc-trunk/gcc/value-range.h:820
0x182adaf evaluate_control_stmt_using_entry_checks
        /repo/gcc-trunk/gcc/tree-ssa-loop-unswitch.cc:691
0x182b9c1 evaluate_bbs<evaluate_loop_insns_for_predicate(loop*,
predicate_vector&, unswitch_predicate*, int, unsigned int*, unsigned
int*)::<lambda(basic_block)> >
        /repo/gcc-trunk/gcc/tree-ssa-loop-unswitch.cc:832
0x182c573 evaluate_loop_insns_for_predicate
        /repo/gcc-trunk/gcc/tree-ssa-loop-unswitch.cc:878
0x182c573 operator()
        /repo/gcc-trunk/gcc/tree-ssa-loop-unswitch.cc:915
0x182c573 evaluate_bbs<tree_unswitch_single_loop(loop*, dump_user_location_t,
predicate_vector&, unsigned int, unsigned int&, int,
bitmap)::<lambda(basic_block)> >
        /repo/gcc-trunk/gcc/tree-ssa-loop-unswitch.cc:808
0x182c573 tree_unswitch_single_loop
        /repo/gcc-trunk/gcc/tree-ssa-loop-unswitch.cc:946
0x182cec3 tree_unswitch_single_loop
        /repo/gcc-trunk/gcc/tree-ssa-loop-unswitch.cc:1006
0x182de41 tree_ssa_unswitch_loops(function*)
        /repo/gcc-trunk/gcc/tree-ssa-loop-unswitch.cc:339
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-r13-912-20220601140049-g0d5cc976a36-checking-yes-rtl-df-extra-nobootstrap-amd64/bin/../libexec/gcc/x86_64-pc-linux-gnu/13.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-r13-912-20220601140049-g0d5cc976a36-checking-yes-rtl-df-extra-nobootstrap-amd64
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 13.0.0 20220601 (experimental) (GCC)

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

* [Bug tree-optimization/105802] [13 Regression] ICE: in irange_intersect, at value-range.cc:1955 with -funswitch-loops
  2022-06-01 12:45 [Bug tree-optimization/105802] New: [13 Regression] ICE: in irange_intersect, at value-range.cc:1955 with -funswitch-loops zsojka at seznam dot cz
@ 2022-06-01 13:26 ` rguenth at gcc dot gnu.org
  2022-06-01 13:37 ` amacleod at redhat dot com
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: rguenth at gcc dot gnu.org @ 2022-06-01 13:26 UTC (permalink / raw)
  To: gcc-bugs

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

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Last reconfirmed|                            |2022-06-01
             Status|UNCONFIRMED                 |ASSIGNED
   Target Milestone|---                         |13.0
           Assignee|unassigned at gcc dot gnu.org      |rguenth at gcc dot gnu.org
     Ever confirmed|0                           |1

--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> ---
I will have a look.

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

* [Bug tree-optimization/105802] [13 Regression] ICE: in irange_intersect, at value-range.cc:1955 with -funswitch-loops
  2022-06-01 12:45 [Bug tree-optimization/105802] New: [13 Regression] ICE: in irange_intersect, at value-range.cc:1955 with -funswitch-loops zsojka at seznam dot cz
  2022-06-01 13:26 ` [Bug tree-optimization/105802] " rguenth at gcc dot gnu.org
@ 2022-06-01 13:37 ` amacleod at redhat dot com
  2022-06-01 13:45 ` rguenth at gcc dot gnu.org
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: amacleod at redhat dot com @ 2022-06-01 13:37 UTC (permalink / raw)
  To: gcc-bugs

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

Andrew Macleod <amacleod at redhat dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |amacleod at redhat dot com

--- Comment #2 from Andrew Macleod <amacleod at redhat dot com> ---
Its trapoping on
 irange::irange_intersect (const irange &r)
{
  gcc_checking_assert (!legacy_mode_p () && !r.legacy_mode_p ());
  gcc_checking_assert (undefined_p () || r.undefined_p ()
                       || range_compatible_p (type (), r.type ()));

on the range_compatible_p() call returning false.

688               if (!ranger->gori ().outgoing_edge_range_p (r, e, idx,
689                                                          
*get_global_range_query ()))
690                 continue;
691               r.intersect (path_range);

(gdb) p path_range.dump(stderr)
[irange] E [0, 0]$5 = void

(gdb) p r.dump(stderr)
[irange] int [-INF, -1][2, +INF]

I guess E and int are not compatible types ?  for ranges we check:

  return (TYPE_PRECISION (type1) == TYPE_PRECISION (type2)
          && TYPE_SIGN (type1) == TYPE_SIGN (type2));

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

* [Bug tree-optimization/105802] [13 Regression] ICE: in irange_intersect, at value-range.cc:1955 with -funswitch-loops
  2022-06-01 12:45 [Bug tree-optimization/105802] New: [13 Regression] ICE: in irange_intersect, at value-range.cc:1955 with -funswitch-loops zsojka at seznam dot cz
  2022-06-01 13:26 ` [Bug tree-optimization/105802] " rguenth at gcc dot gnu.org
  2022-06-01 13:37 ` amacleod at redhat dot com
@ 2022-06-01 13:45 ` rguenth at gcc dot gnu.org
  2022-06-01 13:52 ` amacleod at redhat dot com
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: rguenth at gcc dot gnu.org @ 2022-06-01 13:45 UTC (permalink / raw)
  To: gcc-bugs

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

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
      Known to work|12.1.1                      |

--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> ---
I'm testing a fix.

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

* [Bug tree-optimization/105802] [13 Regression] ICE: in irange_intersect, at value-range.cc:1955 with -funswitch-loops
  2022-06-01 12:45 [Bug tree-optimization/105802] New: [13 Regression] ICE: in irange_intersect, at value-range.cc:1955 with -funswitch-loops zsojka at seznam dot cz
                   ` (2 preceding siblings ...)
  2022-06-01 13:45 ` rguenth at gcc dot gnu.org
@ 2022-06-01 13:52 ` amacleod at redhat dot com
  2022-06-02  6:36 ` cvs-commit at gcc dot gnu.org
  2022-06-02  6:37 ` rguenth at gcc dot gnu.org
  5 siblings, 0 replies; 7+ messages in thread
From: amacleod at redhat dot com @ 2022-06-01 13:52 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #4 from Andrew Macleod <amacleod at redhat dot com> ---
The reason for the precision check is because doing a union or intersection
with ranges of different precisions is problematic, and being sure what  the
user expects would be a guess

normally in this sort of situation, we pick the one we care about, and cast the
other one if we are sure they need to be compatible...  if they already are, it
wont do anything. ie


range_cast (path_range, r.type ())
r.intersect (path_range);

or vice versa.

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

* [Bug tree-optimization/105802] [13 Regression] ICE: in irange_intersect, at value-range.cc:1955 with -funswitch-loops
  2022-06-01 12:45 [Bug tree-optimization/105802] New: [13 Regression] ICE: in irange_intersect, at value-range.cc:1955 with -funswitch-loops zsojka at seznam dot cz
                   ` (3 preceding siblings ...)
  2022-06-01 13:52 ` amacleod at redhat dot com
@ 2022-06-02  6:36 ` cvs-commit at gcc dot gnu.org
  2022-06-02  6:37 ` rguenth at gcc dot gnu.org
  5 siblings, 0 replies; 7+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2022-06-02  6:36 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #5 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Richard Biener <rguenth@gcc.gnu.org>:

https://gcc.gnu.org/g:4a6b8d9aad9f68eec223cc126d9effbf45e37271

commit r13-925-g4a6b8d9aad9f68eec223cc126d9effbf45e37271
Author: Richard Biener <rguenther@suse.de>
Date:   Wed Jun 1 15:42:06 2022 +0200

    tree-optimization/105802 - another unswitching type issue

    This also fixes the type of the irange used for unswitching of
    switch statements.

            PR tree-optimization/105802
            * tree-ssa-loop-unswitch.cc (find_unswitching_predicates_for_bb):
            Make sure to also compute the range in the type of the switch
index.

            * g++.dg/opt/pr105802.C: New testcase.

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

* [Bug tree-optimization/105802] [13 Regression] ICE: in irange_intersect, at value-range.cc:1955 with -funswitch-loops
  2022-06-01 12:45 [Bug tree-optimization/105802] New: [13 Regression] ICE: in irange_intersect, at value-range.cc:1955 with -funswitch-loops zsojka at seznam dot cz
                   ` (4 preceding siblings ...)
  2022-06-02  6:36 ` cvs-commit at gcc dot gnu.org
@ 2022-06-02  6:37 ` rguenth at gcc dot gnu.org
  5 siblings, 0 replies; 7+ messages in thread
From: rguenth at gcc dot gnu.org @ 2022-06-02  6:37 UTC (permalink / raw)
  To: gcc-bugs

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

Richard Biener <rguenth at gcc dot gnu.org> changed:

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

--- Comment #6 from Richard Biener <rguenth at gcc dot gnu.org> ---
Fixed.

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

end of thread, other threads:[~2022-06-02  6:37 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-06-01 12:45 [Bug tree-optimization/105802] New: [13 Regression] ICE: in irange_intersect, at value-range.cc:1955 with -funswitch-loops zsojka at seznam dot cz
2022-06-01 13:26 ` [Bug tree-optimization/105802] " rguenth at gcc dot gnu.org
2022-06-01 13:37 ` amacleod at redhat dot com
2022-06-01 13:45 ` rguenth at gcc dot gnu.org
2022-06-01 13:52 ` amacleod at redhat dot com
2022-06-02  6:36 ` cvs-commit at gcc dot gnu.org
2022-06-02  6:37 ` rguenth 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).