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

            Bug ID: 66190
           Summary: [5/6 Regression] ICE: tree code ‘call_expr’ is not
                    supported in LTO streams with -fsanitize=null
           Product: gcc
           Version: 6.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: sanitizer
          Assignee: unassigned at gcc dot gnu.org
          Reporter: marxin at gcc dot gnu.org
                CC: dodji at gcc dot gnu.org, dvyukov at gcc dot gnu.org,
                    jakub at gcc dot gnu.org, kcc at gcc dot gnu.org
  Target Milestone: ---

$ cat test.ii
class A {
public:
  void m_fn1(int);
};
class GrAAHairLinePathRenderer {
  ~GrAAHairLinePathRenderer();
  A onStencilPath_drawState;
  virtual void m_fn2() {
    static int a;
    static int &b(a);
    onStencilPath_drawState.m_fn1(b);
  }
};
GrAAHairLinePathRenderer::~GrAAHairLinePathRenderer() {}

$ g++ test.ii -flto -c -fsanitize=null


test.ii:14:56: internal compiler error: tree code ‘call_expr’ is not supported
in LTO streams
 GrAAHairLinePathRenderer::~GrAAHairLinePathRenderer() {}
                                                        ^
0x678d8e lto_write_tree
        ../../gcc/lto-streamer-out.c:415
0x678d8e lto_output_tree_1
        ../../gcc/lto-streamer-out.c:464
0x678d8e DFS::DFS(output_block*, tree_node*, bool, bool, bool)
        ../../gcc/lto-streamer-out.c:654
0xe378ce lto_output_tree(output_block*, tree_node*, bool, bool)
        ../../gcc/lto-streamer-out.c:1609
0xdbf5f5 write_global_stream
        ../../gcc/lto-streamer-out.c:2397
0xdbf5f5 lto_output_decl_state_streams(output_block*, lto_out_decl_state*)
        ../../gcc/lto-streamer-out.c:2444
0xdbf5f5 produce_asm_for_decls()
        ../../gcc/lto-streamer-out.c:2814
0xdb4004 write_lto() [clone .lto_priv.4579]
        ../../gcc/passes.c:2410
0xe22b49 ipa_write_summaries_1
        ../../gcc/passes.c:2471
0xe22b49 ipa_write_summaries()
        ../../gcc/passes.c:2531
0xd41543 ipa_passes
        ../../gcc/cgraphunit.c:2216
0xd41543 symbol_table::compile()
        ../../gcc/cgraphunit.c:2312
0xd50e1d symbol_table::finalize_compilation_unit()
        ../../gcc/cgraphunit.c:2461
0xdd9dc0 cp_write_global_declarations()
        ../../gcc/cp/decl2.c:4755


Breakpoint 1, lto_write_tree (ob=0x1a41670, expr=0x7ffff6c41948, ref_p=false)
at ../../gcc/lto-streamer-out.c:415
415                         get_tree_code_name (TREE_CODE (expr)));
(gdb) p debug_tree(expr)
 <call_expr 0x7ffff6c41948
    type <void_type 0x7ffff6c5d000 void VOID
        align 8 symtab 0 alias set -1 canonical type 0x7ffff6c5d000
        pointer_to_this <pointer_type 0x7ffff6c5d150>>
    side-effects tree_0 tree_3
    arg 0 <addr_expr 0x7ffff6dc4540
        type <pointer_type 0x7ffff6c5d7e0 type <integer_type 0x7ffff6c3b690
int>
            public unsigned DI
            size <integer_cst 0x7ffff6c37e58 constant 64>
            unit size <integer_cst 0x7ffff6c37e70 constant 8>
            align 64 symtab 0 alias set -1 canonical type 0x7ffff6c5d7e0>
        constant
        arg 0 <var_decl 0x7ffff6c44cf0 a type <integer_type 0x7ffff6c3b690 int>
            addressable used public static weak decl_5 decl_6 SI file test.ii
line 9 col 16
            size <integer_cst 0x7ffff6c590a8 constant 32>
            unit size <integer_cst 0x7ffff6c590c0 constant 4>
            align 32 context <function_decl 0x7ffff6dd7870 m_fn2> chain
<var_decl 0x7ffff6c44d80 b>>>
    arg 1 <integer_cst 0x7ffff6dd6588 type <pointer_type 0x7ffff6c5d7e0>
constant 2>
    arg 2 <integer_cst 0x7ffff6c59288 type <integer_type 0x7ffff6c5d348>
constant 0>>
$1 = void


Thanks,
Martin

Reply via email to