[C++ PATCH] Add -fconstexpr-loop-nest-limit= option (PR c++/87481)

Jakub Jelinek jakub@redhat.com
Fri Mar 8 12:26:00 GMT 2019


On Fri, Mar 08, 2019 at 12:25:31PM +0100, Jakub Jelinek wrote:
> Maybe.  The question is what exactly should we count.  We could count only
> in the cxx_eval_statement_list loop individual non-debug statements,
> but that would miss statements that aren't in STATEMENT_LISTs.
> Or we could count number of cxx_eval_constant_expression calls
> (perhaps after the initial if (jump_target && *jump_target) skipping)
> within a single cxx_eval_outermost_constant_expr, but we couldn't call that
> number of statements even when it would be much more accurate on how long
> actually something will take to evaluate, because one can have a single
> statement with hundreds of thousands of operations in it.
> So -fconstexpr-ops-limit= ?  Probably should use Host_Wide_Int in that case
> rather than UInteger though, so users can allow more than 4G ops.

Or, if we wanted to count statements, perhaps count just specific subset
of tree codes in cxx_eval_statement_list, like *_STMT, RETURN_EXPR,
SWITCH_EXPR, anything else that must be a statement rather than some
subexpression and is usually not wrapped with EXPR_STMT?

Or count both statements and ops and have two limits.

With the ops limit I'm afraid even if we have quite high default, it might
trigger if people use huge multi-megabyte constexpr arrays or similar.

	Jakub



More information about the Gcc-patches mailing list