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

            Bug ID: 90939
           Summary: ICE in meet_with, at ipa-cp.c:1073
           Product: gcc
           Version: 10.0
            Status: UNCONFIRMED
          Keywords: ice-on-valid-code
          Severity: normal
          Priority: P3
         Component: ipa
          Assignee: unassigned at gcc dot gnu.org
          Reporter: marxin at gcc dot gnu.org
                CC: jamborm at gcc dot gnu.org, marxin at gcc dot gnu.org
  Target Milestone: ---

I see the ICE in chromium package with gcc9 package.
It won't be so easy to reduce a test-case, I ended up with 15 object files.
I can reproduce that with 72fa547fbac7c8dc58c5caf53e35d4b68432c08c revision and


diff --git a/gcc/lto/lto.c b/gcc/lto/lto.c
index 4367928a515..d5908cd609b 100644
--- a/gcc/lto/lto.c
+++ b/gcc/lto/lto.c
@@ -1829,7 +1829,7 @@ lto_read_decls (struct lto_file_decl_data *decl_data,
const void *data,
        {
          /* Pickle stray references.  */
          t = lto_input_tree_1 (&ib_main, data_in, tag, 0);
-         gcc_assert (t && data_in->reader_cache->nodes.length () == from);
+//       gcc_assert (t && data_in->reader_cache->nodes.length () == from);
        }
     }
   data_in->location_cache.apply_location_cache ();

Files:
https://drive.google.com/file/d/1gvsG3VUsJTYBoSJP0ZMhurpukHoxUocv/view?usp=sharing

$ g++ *.o
during IPA pass: cp
lto1: internal compiler error: in meet_with, at ipa-cp.c:1073
0x1b27f6a ipcp_bits_lattice::meet_with(ipcp_bits_lattice&, unsigned int,
signop, tree_code, tree_node*)
        ../../gcc/ipa-cp.c:1073
0x1b29cfa propagate_bits_across_jump_function(cgraph_edge*, int,
ipa_jump_func*, ipcp_bits_lattice*)
        ../../gcc/ipa-cp.c:1862
0x1b2ac99 propagate_constants_across_call
        ../../gcc/ipa-cp.c:2287
0x1b2d292 propagate_constants_topo
        ../../gcc/ipa-cp.c:3183
0x1b2d61b ipcp_propagate_stage
        ../../gcc/ipa-cp.c:3296
0x1b316cb ipcp_driver
        ../../gcc/ipa-cp.c:5080
0x1b318b0 execute
        ../../gcc/ipa-cp.c:5173

$ (gdb) bt
#0  ipcp_bits_lattice::meet_with (this=0x32794e8, other=..., precision=64,
sgn=UNSIGNED, code=MAX_EXPR, operand=0x7ffff3d4d4f8) at ../../gcc/ipa-cp.c:1073
#1  0x0000000001b29cfb in propagate_bits_across_jump_function
(cs=0x7ffff45062d8, idx=0, jfunc=0x7ffff3d34778, dest_lattice=0x32794e8) at
../../gcc/ipa-cp.c:1862
#2  0x0000000001b2ac9a in propagate_constants_across_call (cs=0x7ffff45062d8)
at ../../gcc/ipa-cp.c:2287
#3  0x0000000001b2d293 in propagate_constants_topo (topo=0x7fffffffd850) at
../../gcc/ipa-cp.c:3183
#4  0x0000000001b2d61c in ipcp_propagate_stage (topo=0x7fffffffd850) at
../../gcc/ipa-cp.c:3296
#5  0x0000000001b316cc in ipcp_driver () at ../../gcc/ipa-cp.c:5080
#6  0x0000000001b318b1 in (anonymous namespace)::pass_ipa_cp::execute
(this=0x28e9100) at ../../gcc/ipa-cp.c:5173
#7  0x0000000000d8fd71 in execute_one_pass (pass=0x28e9100) at
../../gcc/passes.c:2487
#8  0x0000000000d90cbb in execute_ipa_pass_list (pass=0x28e9100) at
../../gcc/passes.c:2927
#9  0x000000000084a52d in do_whole_program_analysis () at
../../gcc/lto/lto.c:3174
#10 0x000000000084a9aa in lto_main () at ../../gcc/lto/lto.c:3399
#11 0x0000000000edc5a6 in compile_file () at ../../gcc/toplev.c:456
#12 0x0000000000edf1c5 in do_compile () at ../../gcc/toplev.c:2205
#13 0x0000000000edf4aa in toplev::main (this=0x7fffffffda8e, argc=34,
argv=0x28bfe40) at ../../gcc/toplev.c:2340
#14 0x0000000001c12f6c in main (argc=20, argv=0x7fffffffdb88) at
../../gcc/main.c:39
$ (gdb) p debug_tree(operand)
 <integer_cst 0x7ffff3d4d4f8 type <pointer_type 0x7ffff68bce70> constant 0>
$1 = void

So it's a MAX_EXPR with a pointer_type:

(gdb) p debug_tree((tree)0x7ffff68bce70)
 <pointer_type 0x7ffff68bce70
    type <record_type 0x7ffff6c47540 NGInlineNode BLK
        size <integer_cst 0x7ffff772fbb8 constant 128>
        unit-size <integer_cst 0x7ffff772fbd0 constant 16>
        align:64 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type
0x7ffff6c47540
        fields <field_decl 0x7ffff6c04d10 D.45019 type <record_type
0x7ffff6c47498 NGLayoutInputNode>
            ignored TI
../../third_party/blink/renderer/core/layout/ng/inline/ng_inline_node.h:28:19
            size <integer_cst 0x7ffff756a9c0 constant 72>
            unit-size <integer_cst 0x7ffff7547ed0 constant 9>
            align:64 warn_if_not_align:0 offset_align 128
            offset <integer_cst 0x7ffff772fba0 constant 0>
            bit-offset <integer_cst 0x7ffff772fbe8 constant 0> context
<record_type 0x7ffff6c47540 NGInlineNode>> context <namespace_decl
0x7ffff7260c78 blink>
        pointer_to_this <pointer_type 0x7ffff68bce70>>
    public unsigned DI
    size <integer_cst 0x7ffff772fb70 type <integer_type 0x7ffff77440a8
bitsizetype> constant 64>
    unit-size <integer_cst 0x7ffff772fb88 type <integer_type 0x7ffff7744000
sizetype> constant 8>
    align:64 warn_if_not_align:0 symtab:0 alias-set -1 structural-equality>
$2 = void

Can you Martin please take a look?

Reply via email to