public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug ipa/103082] New: [12 Regression] gcc/poly-int.h:1162:5: runtime error: left shift of negative value -40
@ 2021-11-04 15:00 marxin at gcc dot gnu.org
  2021-11-04 15:00 ` [Bug ipa/103082] " marxin at gcc dot gnu.org
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: marxin at gcc dot gnu.org @ 2021-11-04 15:00 UTC (permalink / raw)
  To: gcc-bugs

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

            Bug ID: 103082
           Summary: [12 Regression] gcc/poly-int.h:1162:5: runtime error:
                    left shift of negative value -40
           Product: gcc
           Version: 12.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: ipa
          Assignee: unassigned at gcc dot gnu.org
          Reporter: marxin at gcc dot gnu.org
                CC: hubicka at gcc dot gnu.org, marxin at gcc dot gnu.org
            Blocks: 63426
  Target Milestone: ---

I see the following UBSAN error:

../../gcc/poly-int.h:1162:5: runtime error: left shift of negative value -40
    #0 0x2d20c79 in poly_int<1u, poly_result<long, long,
poly_coeff_pair_traits<long, long>::result_kind>::type> operator<< <1u, long,
int>(poly_int_pod<1u, long> const&, int const&) ../../gcc/poly-int.h:1162
    #1 0x2d20c79 in modref_access_node::contains(modref_access_node const&)
const ../../gcc/ipa-modref-tree.h:120
    #2 0x2d40293 in modref_ref_node<int>::insert_access(modref_access_node,
unsigned long, bool) ../../gcc/ipa-modref-tree.h:521
    #3 0x2d45fdd in modref_tree<int>::insert(int, int, modref_access_node,
bool) ../../gcc/ipa-modref-tree.h:848
    #4 0x2cf0b88 in record_access ../../gcc/ipa-modref.c:758
    #5 0x2d16ac1 in analyze_store ../../gcc/ipa-modref.c:1290
    #6 0x2932310 in walk_stmt_load_store_addr_ops(gimple*, void*, bool
(*)(gimple*, tree_node*, tree_node*, void*), bool (*)(gimple*, tree_node*,
tree_node*, void*), bool (*)(gimple*, tree_node*, tree_node*, void*))
../../gcc/gimple-walk.c:767
    #7 0x2cf4561 in analyze_stmt ../../gcc/ipa-modref.c:1313
    #8 0x2cf4561 in analyze_function ../../gcc/ipa-modref.c:2366
    #9 0x2cfe26d in execute ../../gcc/ipa-modref.c:3213
    #10 0x348e890 in execute_one_pass(opt_pass*) ../../gcc/passes.c:2567
    #11 0x3491f51 in execute_pass_list_1 ../../gcc/passes.c:2656

one can see it easily with:

diff --git a/gcc/ipa-modref-tree.h b/gcc/ipa-modref-tree.h
index 9976e489697..65875d9539f 100644
--- a/gcc/ipa-modref-tree.h
+++ b/gcc/ipa-modref-tree.h
@@ -116,6 +116,7 @@ struct GTY(()) modref_access_node
               if (!known_le (parm_offset, a.parm_offset)
                   && !range_info_useful_p ())
                 return false;
+              gcc_checking_assert ((a.parm_offset - parm_offset).to_constant
() >= 0);
               aoffset_adj = (a.parm_offset - parm_offset)
                             << LOG2_BITS_PER_UNIT;
            }

$ cat d2s.i
long mulShift(long *mul) { return mul[0] + mul[1]; }

$ gcc d2s.i -c -O2
during GIMPLE pass: modref
d2s.i: In function ‘mulShift’:
d2s.i:1:1: internal compiler error: in contains, at ipa-modref-tree.h:119
    1 | long mulShift(long *mul) { return mul[0] + mul[1]; }
      | ^~~~
0xcce4a9 modref_access_node::contains(modref_access_node const&) const
        /home/marxin/Programming/gcc/gcc/ipa-modref-tree.h:119
0xcce4a9 modref_access_node::contains(modref_access_node const&) const
        /home/marxin/Programming/gcc/gcc/ipa-modref-tree.h:101
0xcd1912 modref_ref_node<int>::insert_access(modref_access_node, unsigned long,
bool)
        /home/marxin/Programming/gcc/gcc/ipa-modref-tree.h:523
0xcd25ce modref_tree<int>::insert(int, int, modref_access_node, bool)
        /home/marxin/Programming/gcc/gcc/ipa-modref-tree.h:850
0xcc5d62 record_access
        /home/marxin/Programming/gcc/gcc/ipa-modref.c:758
0xcccb73 analyze_load
        /home/marxin/Programming/gcc/gcc/ipa-modref.c:1262
0xc1df93 walk_stmt_load_store_addr_ops(gimple*, void*, bool (*)(gimple*,
tree_node*, tree_node*, void*), bool (*)(gimple*, tree_node*, tree_node*,
void*), bool (*)(gimple*, tree_node*, tree_node*, void*))
        /home/marxin/Programming/gcc/gcc/gimple-walk.c:800
0xcc6b9c analyze_stmt
        /home/marxin/Programming/gcc/gcc/ipa-modref.c:1313
0xcc6b9c analyze_function
        /home/marxin/Programming/gcc/gcc/ipa-modref.c:2366
0xcc8991 execute
        /home/marxin/Programming/gcc/gcc/ipa-modref.c:3213
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <https://gcc.gnu.org/bugs/> for instructions.


Referenced Bugs:

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63426
[Bug 63426] [meta-bug] Issues found with -fsanitize=undefined

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

end of thread, other threads:[~2021-11-05 22:26 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-11-04 15:00 [Bug ipa/103082] New: [12 Regression] gcc/poly-int.h:1162:5: runtime error: left shift of negative value -40 marxin at gcc dot gnu.org
2021-11-04 15:00 ` [Bug ipa/103082] " marxin at gcc dot gnu.org
2021-11-04 16:41 ` hubicka at gcc dot gnu.org
2021-11-04 19:39 ` jakub at gcc dot gnu.org
2021-11-05 22:18 ` cvs-commit at gcc dot gnu.org
2021-11-05 22:26 ` hubicka 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).