https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101724
Bug ID: 101724 Summary: Compile-time hog w/ --param threader-mode=ranger Product: gcc Version: 12.0 Status: UNCONFIRMED Keywords: compile-time-hog Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: asolokha at gmx dot com Target Milestone: --- gcc-12.0.0-alpha20210801 snapshot (g:6f0c43e97825ee54e3779afbedcd0def12443001) takes indefinite time to compile the following testcase w/ -O2 -fpeel-loops --param fsm-scale-path-stmts=1 --param threader-iterative=1 --param threader-mode=ranger: int a; __attribute__ ((simd)) char foo (void) { if (a < 0) a = 0; /* no return statement */ } The (arbitrary trimmed) head of "perf top" output: % timeout 10 gcc-12.0.0 -O2 -fpeel-loops --param fsm-scale-path-stmts=1 --param threader-iterative=1 --param threader-mode=ranger -c tbimsyuw.c zsh: exit 124 50.63% cc1 [.] path_range_query::precompute_ranges_in_block 24.01% cc1 [.] path_range_query::range_defined_in_block 9.05% cc1 [.] bitmap_bit_p 6.93% cc1 [.] gori_map::exports 1.85% cc1 [.] back_threader_profitability::profitable_path_p 0.62% cc1 [.] estimate_num_insns 0.60% cc1 [.] back_threader::find_paths_to_names 0.55% cc1 [.] find_edge 0.55% cc1 [.] hash_table<default_hash_traits<basic_block_def*>, false, xcallocator>::find_slot_with_hash 0.37% cc1 [.] path_range_query::ssa_range_in_phi 0.28% cc1 [.] irange::varying_compatible_p 0.25% cc1 [.] wide_int_to_tree_1 0.25% cc1 [.] maybe_hot_count_p 0.25% cc1 [.] bitmap_clear_bit 0.20% cc1 [.] bitmap_set_bit 0.18% cc1 [.] irange::operator= 0.18% cc1 [.] optimize_function_for_size_p 0.18% cc1 [.] get_base_address 0.17% cc1 [.] profile_count::from_gcov_type 0.15% cc1 [.] path_range_query::precompute_ranges 0.13% cc1 [.] back_threader::resolve_phi 0.13% cc1 [.] fold_using_range::fold_stmt 0.12% cc1 [.] fold_using_range::range_of_range_op 0.10% cc1 [.] fold_using_range::postfold_gcond_edges 0.10% cc1 [.] optimize_bb_for_size_p 0.10% libc-2.33.so [.] malloc 0.10% cc1 [.] profile_count::compatible_p 0.08% cc1 [.] bitmap_count_bits 0.08% cc1 [.] gimple_get_lhs 0.08% cc1 [.] operand_compare::verify_hash_value 0.08% cc1 [.] gimple_call_builtin_p 0.08% cc1 [.] last_stmt 0.08% cc1 [.] ssa_global_cache::set_global_range 0.07% cc1 [.] estimate_operator_cost 0.07% cc1 [.] get_gimple_control_stmt 0.07% libc-2.33.so [.] cfree@GLIBC_2.2.5 0.05% cc1 [.] operator_lt::fold_range 0.05% cc1 [.] fur_stmt::get_phi_operand 0.05% cc1 [.] irange::set_varying 0.05% cc1 [.] wi::min_value 0.05% cc1 [.] cache_wide_int_in_type_cache 0.05% cc1 [.] ssa_global_cache::get_global_range 0.05% cc1 [.] wi::to_wide 0.05% cc1 [.] range_op_handler 0.03% cc1 [.] int_cst_hasher::hash 0.03% cc1 [.] wi::extended_tree<576>::extended_tree 0.03% cc1 [.] operand_compare::operand_equal_p 0.03% cc1 [.] irange::lower_bound 0.03% cc1 [.] irange::upper_bound