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

--- Comment #1 from Andi Kleen <andi-gcc at firstfloor dot org> ---
With a newer compiler version

gcc version 5.0.0 20140926 (experimental) (GCC) 


the test case doesn't crash anymore, but just runs very very long. I killed it
after 20s. This happens with the following two options:


g++50 matrix.i -o outfile -O2  -fvar-tracking-assignments-toggle 
-fselective-scheduling2

The overhead is mostly in the scheduler:

  - sched_analyze_insn(deps_desc*, rtx_def*, rtx_insn*)                     ▒
      - 99.39% deps_analyze_insn(deps_desc*, rtx_insn*)                      ▒
           tick_check_p(_expr*, deps_desc*, _fence*)                         ▒
           fill_insns(_fence*, int, _list_node***)                           ▒
           sel_sched_region_2(int)                                           ▒
           sel_sched_region(int)                                             ▒
           run_selective_scheduling()                                        ▒
           (anonymous namespace)::pass_sched2::execute(function*)            ▒
           execute_one_pass(opt_pass*)                                       ▒
           execute_pass_list_1(opt_pass*)                                    ▒
           execute_pass_list_1(opt_pass*)                                    ▒
           execute_pass_list_1(opt_pass*)                                    ▒
           execute_pass_list(function*, opt_pass*)                           ▒
           cgraph_node::expand()                                             ▒
           symbol_table::compile()                                           ▒
           symbol_table::finalize_compilation_unit()                         ▒
           cp_write_global_declarations()                                    ▒
           compile_file()                                                    ▒
           toplev_main(int, char**)                                          ▒
           __libc_start_main                                                 ▒
      + 0.61% tick_check_p(_expr*, deps_desc*, _fence*)         


sched_analyze_insn(deps_desc*, rtx_def*, rtx_insn*)                             


       │
       │            for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
 12.84 │ 748:   add    $0x1,%r13d
  0.07 │        add    $0x30,%r14
       │        cmp    $0x4d,%r13d
       │      ↓ je     7e5
       │              if (TEST_HARD_REG_BIT (implicit_reg_pending_uses, i))
  0.06 │ 75a:   mov    %r13d,%eax
 12.45 │        shr    $0x6,%eax
  0.17 │        mov    0x1828100(,%rax,8),%rax
  6.06 │        bt     %r13,%rax
  6.21 │      ↑ jae    748
       │                {

Reply via email to