[Bug tree-optimization/96979] Switch with case values derived from constexpr function takes unreasonable time to compile
rguenth at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Tue Sep 8 13:12:47 GMT 2020
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96979
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Keywords| |compile-time-hog
CC| |marxin at gcc dot gnu.org
Ever confirmed|0 |1
Component|c++ |tree-optimization
Status|UNCONFIRMED |NEW
Last reconfirmed| |2020-09-08
--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> ---
Confirmed. Interestingly -fsyntax-only is fast. So we're in
switch-conversion:
at /home/rguenther/src/gcc2/gcc/tree.h:5919
#2 0x0000000000e051a5 in wi::to_wide (t=<integer_cst 0x7ffff66659a8>, prec=64)
at /home/rguenther/src/gcc2/gcc/tree.h:5930
#3 0x000000000111c193 in int_const_binop (code=MINUS_EXPR,
arg1=<integer_cst 0x7ffff66b4078>, arg2=<integer_cst 0x7ffff66659a8>,
overflowable=1) at /home/rguenther/src/gcc2/gcc/fold-const.c:1185
#4 0x000000000111c4a5 in const_binop (code=MINUS_EXPR,
arg1=<integer_cst 0x7ffff66b4078>, arg2=<integer_cst 0x7ffff66659a8>)
at /home/rguenther/src/gcc2/gcc/fold-const.c:1242
#5 0x000000000111e901 in const_binop (code=MINUS_EXPR,
type=<integer_type 0x7ffff66270a8 u64>, arg1=<integer_cst 0x7ffff66b4078>,
arg2=<integer_cst 0x7ffff66659a8>)
at /home/rguenther/src/gcc2/gcc/fold-const.c:1720
#6 0x00000000011444e6 in fold_binary_loc (loc=0, code=MINUS_EXPR,
type=<integer_type 0x7ffff66270a8 u64>, op0=<integer_cst 0x7ffff66b4078>,
op1=<integer_cst 0x7ffff66659a8>)
at /home/rguenther/src/gcc2/gcc/fold-const.c:10286
#7 0x00000000011531b5 in fold_build2_loc (loc=0, code=MINUS_EXPR,
type=<integer_type 0x7ffff66270a8 u64>, op0=<integer_cst 0x7ffff66b4078>,
--Type <RET> for more, q to quit, c to continue without paging--
op1=<integer_cst 0x7ffff66659a8>)
at /home/rguenther/src/gcc2/gcc/fold-const.c:13256
#8 0x00000000017fa079 in tree_switch_conversion::cluster::get_range (
low=<integer_cst 0x7ffff66659a8>, high=<integer_cst 0x7ffff66b4078>)
at /home/rguenther/src/gcc2/gcc/tree-switch-conversion.h:87
#9 0x00000000017f45e1 in
tree_switch_conversion::bit_test_cluster::can_be_handled (clusters=...,
start=168, end=839)
at /home/rguenther/src/gcc2/gcc/tree-switch-conversion.c:1392
#10 0x00000000017f42b7 in
tree_switch_conversion::bit_test_cluster::find_bit_tests (clusters=...) at
/home/rguenther/src/gcc2/gcc/tree-switch-conversion.c:1322
#11 0x00000000017f5d0c in
tree_switch_conversion::switch_decision_tree::analyze_switch_statement
(this=0x7fffffffd990)
where tree_switch_conversion::bit_test_cluster::find_bit_tests takes ages
to complete.
More information about the Gcc-bugs
mailing list