Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Error on excessively large control flow graphs #18246

Merged
merged 9 commits into from
Sep 11, 2017

Conversation

ahejlsberg
Copy link
Member

@ahejlsberg ahejlsberg commented Sep 5, 2017

This PR improves our handling of excessively large control flow graphs: If control flow analysis leads to a stack depth of 2500 recursive calls, we now issue an error and disable control flow analysis for the remainder of the containing function or module body. Previously we'd simply overflow the call stack.

The 2500 recursive call limit was experimentally determined. Control flow patterns that cause recursion in the control flow analyzer (such as #11432) overflow the stack somewhere between 2500 and 5000 calls.

No RWC tests are affected by this change.

Fixes #14314 in the sense that it doesn't overflow the stack. However, #14314 still takes >80s to compile.

// excessive amount of time and possibly overflowing the call stack, we report an error and disable
// further control flow analysis in the containing function or module body.
flowAnalysisDisabled = true;
error(reference, Diagnostics.The_body_of_the_containing_function_or_module_is_too_large_for_control_flow_analysis);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we talked about putting this on the containing function if one exists. this way ppl have a consistent place to see the error, instead of it jumping around as they add/remove lines.

@ahejlsberg ahejlsberg merged commit 1b49c8f into master Sep 11, 2017
@ahejlsberg ahejlsberg deleted the fixControlFlowStackOverflow branch September 11, 2017 19:45
@microsoft microsoft locked and limited conversation to collaborators Jun 14, 2018
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants