Skip to content

[GNATS 27464] Lots of time in constraint_satisfied #41

Description

@jhsedg

Description

​There may be nothing wrong here, but it seems like this simple little test case is taking a long time to run. It's a preprocessed version of the test case for EDGcpfe/27463 which just outputs some floating-point constants to std::cout, but it takes 28 seconds to compile:
​
​[mjh@lin6 2024-07-19]$ time $XCFE --gn 140100 --c++23 test.i.cpp
​"test.cpp", line 19: error: floating constant is out of range
​ std::cout << 0x1.ffb8p+15f16 << '\n';
​ ^
​
​"test.cpp", line 20: error: floating constant is out of range
​ std::cout << 0x1.ffbap+15f16 << '\n';
​ ^
​
​"test.cpp", line 21: error: floating constant is out of range
​ std::cout << 0x1.ffcp+15f16 << '\n';
​ ^
​
​3 errors detected in the compilation of "test.i.cpp".
​
​real 0m28.173s
​user 0m27.631s
​sys 0m0.304s
​
​When I stop it in a debugger, I see lots of constraint_satisfied entries:
​
​Program received signal SIGINT, Interrupt.
​0x0000000000b5194e in check_parent_scope_of_member_entities (sp=0x16b18f8)
​ at scope_stk.c:9321
​9321 if (sp == parent_scope_of(vp) ||
​(gdb) bt
​#0 0x0000000000b5194e in check_parent_scope_of_member_entities (sp=0x16b18f8)
​ at scope_stk.c:9321
​#1 0x0000000000b52049 in pop_scope_full (options=0) at scope_stk.c:9489
​#2 0x0000000000b52e80 in pop_scope () at scope_stk.c:10051
​#3 0x0000000000b4b57b in pop_template_instantiation_scope ()
​ at scope_stk.c:5631
​#4 0x0000000000b4b9ba in pop_instantiation_scope_for_rescan ()
​ at scope_stk.c:5750
​#5 0x00000000005d862c in constraint_satisfied (constraint=0x21ba5b8,
​ template_arg_list=0xa819518, template_param_list=0x21b1218,
​ diag_list=0x7fffffff2f30, options=0, ctws_state=0x0,
​ p_fatal=0x7fffffff2e54, p_copy_error=0x7ffffffeed90) at exprutil.c:26258
​#6 0x00000000005d86ef in constraint_satisfied (constraint=0x21ba620,
​ template_arg_list=0xa819518, template_param_list=0x21b1218,
​ diag_list=0x7fffffff2f30, options=0, ctws_state=0x0,
​ p_fatal=0x7fffffff2e54, p_copy_error=0x0) at exprutil.c:26269
​#7 0x00000000005d85af in constraint_satisfied (constraint=0x21c0000,
​ template_arg_list=0xa819608, template_param_list=0x21b5340,
​ diag_list=0x7fffffff2f30, options=0, ctws_state=0x0,
​ p_fatal=0x7fffffff2e54, p_copy_error=0x7ffffffef110) at exprutil.c:26246
​#8 0x00000000005d86a4 in constraint_satisfied (constraint=0x21c0260,
​ template_arg_list=0xa819608, template_param_list=0x21b5340,
​ diag_list=0x7fffffff2f30, options=0, ctws_state=0x0,
​ p_fatal=0x7fffffff2e54, p_copy_error=0x7ffffffef2d0) at exprutil.c:26266
​#9 0x00000000005d86a4 in constraint_satisfied (constraint=0x21c03d0,
​ template_arg_list=0xa819608, template_param_list=0x21b5340,
​ diag_list=0x7fffffff2f30, options=0, ctws_state=0x0,
​ p_fatal=0x7fffffff2e54, p_copy_error=0x0) at exprutil.c:26266
​#10 0x00000000005d85af in constraint_satisfied (constraint=0x21e10a0,
​ template_arg_list=0xa819478, template_param_list=0x21d50b0,
​ diag_list=0x7fffffff2f30, options=0, ctws_state=0x0,
​ p_fatal=0x7fffffff2e54, p_copy_error=0x7ffffffef650) at exprutil.c:26246
​#11 0x00000000005d86ef in constraint_satisfied (constraint=0x21e1148,
​ template_arg_list=0xa819478, template_param_list=0x21d50b0,
​ diag_list=0x7fffffff2f30, options=0, ctws_state=0x0,
​ p_fatal=0x7fffffff2e54, p_copy_error=0x7ffffffef810) at exprutil.c:26269
​#12 0x00000000005d86a4 in constraint_satisfied (constraint=0x21e18a8,
​ template_arg_list=0xa819478, template_param_list=0x21d50b0,
​ diag_list=0x7fffffff2f30, options=0, ctws_state=0x0,
​ p_fatal=0x7fffffff2e54, p_copy_error=0x0) at exprutil.c:26266
​#13 0x00000000005d85af in constraint_satisfied (constraint=0x22046f8,
​ template_arg_list=0xa817320, template_param_list=0x2216fe8,
​ diag_list=0x7fffffff2f30, options=0, ctws_state=0x0,
​ p_fatal=0x7fffffff2e54, p_copy_error=0x7ffffffefb90) at exprutil.c:26246
​#14 0x00000000005d86ef in constraint_satisfied (constraint=0x2204760,
​ template_arg_list=0xa817320, template_param_list=0x2216fe8,
​ diag_list=0x7fffffff2f30, options=0, ctws_state=0x0,
​ p_fatal=0x7fffffff2e54, p_copy_error=0x7ffffffefd50) at exprutil.c:26269
​#15 0x00000000005d86a4 in constraint_satisfied (constraint=0x2204880,
​ template_arg_list=0xa817320, template_param_list=0x2216fe8,
​ diag_list=0x7fffffff2f30, options=0, ctws_state=0x0,
​ p_fatal=0x7fffffff2e54, p_copy_error=0x0) at exprutil.c:26266
​---Type to continue, or q to quit---
​#16 0x00000000005d85af in constraint_satisfied (constraint=0x25003e8,
​ template_arg_list=0xa817690, template_param_list=0x24f6f88,
​ diag_list=0x7fffffff2f30, options=0, ctws_state=0x0,
​ p_fatal=0x7fffffff2e54, p_copy_error=0x7fffffff00d0) at exprutil.c:26246
​#17 0x00000000005d86a4 in constraint_satisfied (constraint=0x2502dc0,
​ template_arg_list=0xa817690, template_param_list=0x24f6f88,
​ diag_list=0x7fffffff2f30, options=0, ctws_state=0x0,
​ p_fatal=0x7fffffff2e54, p_copy_error=0x0) at exprutil.c:26266
​#18 0x00000000005d85af in constraint_satisfied (constraint=0x25044e8,
​ template_arg_list=0xa8191f8, template_param_list=0x250ac98,
​ diag_list=0x7fffffff2f30, options=0, ctws_state=0x0,
​ p_fatal=0x7fffffff2e54, p_copy_error=0x7fffffff0450) at exprutil.c:26246
​#19 0x00000000005d86ef in constraint_satisfied (constraint=0x2504550,
​ template_arg_list=0xa8191f8, template_param_list=0x250ac98,
​ diag_list=0x7fffffff2f30, options=0, ctws_state=0x0,
​ p_fatal=0x7fffffff2e54, p_copy_error=0x0) at exprutil.c:26269
​#20 0x00000000005d85af in constraint_satisfied (constraint=0x251ab80,
​ template_arg_list=0xa8135c0, template_param_list=0x25110d8,
​ diag_list=0x7fffffff2f30, options=0, ctws_state=0x0,
​ p_fatal=0x7fffffff2e54, p_copy_error=0x7fffffff07d0) at exprutil.c:26246
​#21 0x00000000005d86a4 in constraint_satisfied (constraint=0x251ac50,
​ template_arg_list=0xa8135c0, template_param_list=0x25110d8,
​ diag_list=0x7fffffff2f30, options=0, ctws_state=0x0,
​ p_fatal=0x7fffffff2e54, p_copy_error=0x7fffffff0990) at exprutil.c:26266
​#22 0x00000000005d86a4 in constraint_satisfied (constraint=0x251b610,
​ template_arg_list=0xa8135c0, template_param_list=0x25110d8,
​ diag_list=0x7fffffff2f30, options=0, ctws_state=0x0,
​ p_fatal=0x7fffffff2e54, p_copy_error=0x7fffffff0b50) at exprutil.c:26266
​#23 0x00000000005d86a4 in constraint_satisfied (constraint=0x251b780,
​ template_arg_list=0xa8135c0, template_param_list=0x25110d8,
​ diag_list=0x7fffffff2f30, options=0, ctws_state=0x0,
​ p_fatal=0x7fffffff2e54, p_copy_error=0x0) at exprutil.c:26266
​#24 0x00000000005d85af in constraint_satisfied (constraint=0x251d190,
​ template_arg_list=0xa813ff0, template_param_list=0x2514308,
​ diag_list=0x7fffffff2f30, options=0, ctws_state=0x0,
​ p_fatal=0x7fffffff2e54, p_copy_error=0x7fffffff0ed0) at exprutil.c:26246
​#25 0x00000000005d86a4 in constraint_satisfied (constraint=0x251db38,
​ template_arg_list=0xa813ff0, template_param_list=0x2514308,
​ diag_list=0x7fffffff2f30, options=0, ctws_state=0x0,
​ p_fatal=0x7fffffff2e54, p_copy_error=0x7fffffff1090) at exprutil.c:26266
​#26 0x00000000005d86a4 in constraint_satisfied (constraint=0x251dc58,
​ template_arg_list=0xa813ff0, template_param_list=0x2514308,
​ diag_list=0x7fffffff2f30, options=0, ctws_state=0x0,
​ p_fatal=0x7fffffff2e54, p_copy_error=0x7fffffff1250) at exprutil.c:26266
​#27 0x00000000005d86a4 in constraint_satisfied (constraint=0x251ddc8,
​ template_arg_list=0xa813ff0, template_param_list=0x2514308,
​ diag_list=0x7fffffff2f30, options=0, ctws_state=0x0,
​ p_fatal=0x7fffffff2e54, p_copy_error=0x0) at exprutil.c:26266
​#28 0x00000000005d85af in constraint_satisfied (constraint=0x251e350,
​ template_arg_list=0xa8153a8, template_param_list=0x2515758,
​ diag_list=0x7fffffff2f30, options=0, ctws_state=0x0,
​ p_fatal=0x7fffffff2e54, p_copy_error=0x7fffffff15d0) at exprutil.c:26246
​---Type to continue, or q to quit---
​#29 0x00000000005d86a4 in constraint_satisfied (constraint=0x251ecf8,
​ template_arg_list=0xa8153a8, template_param_list=0x2515758,
​ diag_list=0x7fffffff2f30, options=0, ctws_state=0x0,
​ p_fatal=0x7fffffff2e54, p_copy_error=0x7fffffff1790) at exprutil.c:26266
​#30 0x00000000005d86a4 in constraint_satisfied (constraint=0x251f730,
​ template_arg_list=0xa8153a8, template_param_list=0x2515758,
​ diag_list=0x7fffffff2f30, options=0, ctws_state=0x0,
​ p_fatal=0x7fffffff2e54, p_copy_error=0x0) at exprutil.c:26266
​#31 0x00000000005d85af in constraint_satisfied (constraint=0x251fcb8,
​ template_arg_list=0xa815768, template_param_list=0x25172a0,
​ diag_list=0x7fffffff2f30, options=0, ctws_state=0x0,
​ p_fatal=0x7fffffff2e54, p_copy_error=0x7fffffff1b10) at exprutil.c:26246
​#32 0x00000000005d86a4 in constraint_satisfied (constraint=0x2520660,
​ template_arg_list=0xa815768, template_param_list=0x25172a0,
​ diag_list=0x7fffffff2f30, options=0, ctws_state=0x0,
​ p_fatal=0x7fffffff2e54, p_copy_error=0x7fffffff1cd0) at exprutil.c:26266
​#33 0x00000000005d86a4 in constraint_satisfied (constraint=0x2520780,
​ template_arg_list=0xa815768, template_param_list=0x25172a0,
​ diag_list=0x7fffffff2f30, options=0, ctws_state=0x0,
​ p_fatal=0x7fffffff2e54, p_copy_error=0x7fffffff1e90) at exprutil.c:26266
​#34 0x00000000005d86a4 in constraint_satisfied (constraint=0x25208f0,
​ template_arg_list=0xa815768, template_param_list=0x25172a0,
​ diag_list=0x7fffffff2f30, options=0, ctws_state=0x0,
​ p_fatal=0x7fffffff2e54, p_copy_error=0x7fffffff2050) at exprutil.c:26266
​#35 0x00000000005d86a4 in constraint_satisfied (constraint=0x25245a0,
​ template_arg_list=0xa815768, template_param_list=0x25172a0,
​ diag_list=0x7fffffff2f30, options=0, ctws_state=0x0,
​ p_fatal=0x7fffffff2e54, p_copy_error=0x0) at exprutil.c:26266
​#36 0x00000000005d85af in constraint_satisfied (constraint=0x2524b28,
​ template_arg_list=0xa7de978, template_param_list=0x252c668,
​ diag_list=0x7fffffff2f30, options=0, ctws_state=0x0,
​ p_fatal=0x7fffffff2e54, p_copy_error=0x7fffffff23d0) at exprutil.c:26246
​#37 0x00000000005d86a4 in constraint_satisfied (constraint=0x25254d0,
​ template_arg_list=0xa7de978, template_param_list=0x252c668,
​ diag_list=0x7fffffff2f30, options=0, ctws_state=0x0,
​ p_fatal=0x7fffffff2e54, p_copy_error=0x7fffffff2590) at exprutil.c:26266
​#38 0x00000000005d86a4 in constraint_satisfied (constraint=0x25260d0,
​ template_arg_list=0xa7de978, template_param_list=0x252c668,
​ diag_list=0x7fffffff2f30, options=0, ctws_state=0x0,
​ p_fatal=0x7fffffff2e54, p_copy_error=0x7fffffff2750) at exprutil.c:26266
​#39 0x00000000005d86a4 in constraint_satisfied (constraint=0x2528988,
​ template_arg_list=0xa7de978, template_param_list=0x252c668,
​ diag_list=0x7fffffff2f30, options=0, ctws_state=0x0,
​ p_fatal=0x7fffffff2e54, p_copy_error=0x7fffffff2910) at exprutil.c:26266
​#40 0x00000000005d86a4 in constraint_satisfied (constraint=0x2529ab8,
​ template_arg_list=0xa7de978, template_param_list=0x252c668,
​ diag_list=0x7fffffff2f30, options=0, ctws_state=0x0,
​ p_fatal=0x7fffffff2e54, p_copy_error=0x0) at exprutil.c:26266
​#41 0x00000000005d85af in constraint_satisfied (constraint=0x3d2e410,
​ template_arg_list=0xa7de6b8, template_param_list=0x3d244c0,
​ diag_list=0x7fffffff2f30, options=0, ctws_state=0x0,
​ p_fatal=0x7fffffff2e54, p_copy_error=0x7fffffff2c90) at exprutil.c:26246
​---Type to continue, or q to quit---
​#42 0x00000000005d86ef in constraint_satisfied (constraint=0x3d2e478,
​ template_arg_list=0xa7de6b8, template_param_list=0x3d244c0,
​ diag_list=0x7fffffff2f30, options=0, ctws_state=0x0,
​ p_fatal=0x7fffffff2e54, p_copy_error=0x7fffffff2e50) at exprutil.c:26269
​#43 0x00000000005d86a4 in constraint_satisfied (constraint=0x3d2fdc0,
​ template_arg_list=0xa7de6b8, template_param_list=0x3d244c0,
​ diag_list=0x7fffffff2f30, options=0, ctws_state=0x0,
​ p_fatal=0x7fffffff2e54, p_copy_error=0x0) at exprutil.c:26266
​#44 0x00000000005d93cd in check_type_constraint (type=0x896a9b0,
​ constraint=0x713ae88, subst_pairs=..., ctws_state=0x7fffffff2fd0,
​ diag_list=0x7fffffff2f30) at exprutil.c:26602
​#45 0x0000000000bbe032 in template_param_constraint_satisfied (
​ param_type=0x713aef0, arg_type=0x896a9b0, arg_list=0xa7de708,
​ param_list=0x71516d0, parent_type=0x0, diag_pos=0x0) at templates.c:10997
​#46 0x0000000000bbe2fa in check_template_constraints (template_sym=0x71530e8,
​ args=0xa7de708, diagnose=0) at templates.c:11072
​#47 0x0000000000bcb4b4 in substitute_template_arguments (templ_sym=0x71530e8,
​ templ_arg_list=0xa7de708, new_arg_list=0x0, templ_param_list=0x71516d0,
​ ctws_options=147456) at templates.c:17580
​#48 0x0000000000baf122 in wrapup_function_template_argument_deduction (
​ templ_arg_list=0x7fffffff3550, rout_templ_sym=0x71530e8,
​ templ_param_list=0x71516d0, ctws_options=147456, param_count=0)
​ at templates.c:3053
​#49 0x0000000000afe99a in function_template_call_argument_deduction (
​ template_sym=0x71530e8, routine_type=0x713b3c8, arg_list=0x7cb1ee0,
​ ovl_context=oc_ctad, template_arg_list=0x7fffffff3550,
​ p_rescan_pushed=0x7fffffff3548) at overload.c:5000
​#50 0x0000000000b01760 in determine_function_viability (
​ proj_function_symbol=0x71530e8, overloaded_function_symbol=0x714ec28,
​ is_template_id=0, template_arg_list=0x0, surrogate_function_conv_sym=0x0,
​ routine_type=0x713b3c8, arg_list=0x7cb1ee0, have_selector=1,
​ bound_function_selector=0x0, implicit_selector_type=0x0,
​ ctor_conversion_case=0, effects_copy_initialization=1,
​ allow_udc_on_arguments=1, arg_dep_lookup_done=0, from_arg_dep_lookup=0,
​ dependent_call=0, known_to_be_visible=0, is_overloaded_operator=0,
​ allow_post_declared_functions=0, conv_context=1, ovl_context=oc_ctad,
​ candidate_functions=0x7fffffff39d8,
​ matched_except_for_missing_selector=0x7fffffff39cc,
​ matched_except_for_selector=0x7fffffff39c8,
​ discarded_because_post_decl=0x7fffffff37e8) at overload.c:6449
​#51 0x0000000000b02a04 in try_overloaded_function_match (
​ overloaded_function_symbol=0x714ec28, is_template_id=0,
​ template_arg_list=0x0, arg_list=0x7cb1ee0, init_list_ctor_arg_list=0x0,
​ have_selector=1, bound_function_selector=0x0, ctor_conversion_case=0,
​ effects_copy_initialization=1, allow_udc_on_arguments=1,
​ arg_dep_lookup_done=0, from_arg_dep_lookup=0, dependent_call=0,
​ ignore_templates=0, known_to_be_visible=0, is_overloaded_operator=0,
​ conv_context=1, ovl_context=oc_ctad, candidate_functions=0x7fffffff39d8,
​ inaccessible_match=0x7fffffff39d0,
​ matched_except_for_missing_selector=0x7fffffff39cc,
​ matched_except_for_selector=0x7fffffff39c8) at overload.c:7125
​#52 0x0000000000b09b73 in select_overloaded_function (
​---Type to continue, or q to quit---
​
​It's possible this is nothing, but if there's something in the GNU headers that is going to cause compilation times like this on simple test cases, we're going to hear about it from customers.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions