[DO NOT MERGE] Implement fast DFA's escape analysis#23314
Draft
rikkimax wants to merge 1 commit into
Draft
Conversation
Contributor
Author
|
Ooo that is a fun little error, because in theory it should be true. But it requires assumptions in the AST. |
Contributor
Author
|
I don't think this should be erroring:
|
06e60d1 to
3fdf65a
Compare
Contributor
Author
|
Looks like the following code is not seeing the cell like it should. *(cast(void[]*)&ret) = _d_newarrayUTrace(__FILE__, __LINE__,
__FUNCTION__, typeid(E[]), size);It thinks that its a null deref on ret, which isn't correct. |
Contributor
Author
|
scope tint32 = new TypeBasic(ASTCodegen.Tint32);
tint32.merge();
ASTCodegen.Type.tint32 = tint32;
That should be allowed due to it being |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Escape analysis for the fast dfa engine based upon my previous DIP design work.
Two relationship strengths are implemented as well as an unknown state.
In outer cell of parameter
@escape(var&)+ via indirection@escape(var=)No new attributes for users to use are implemented as that requires DIP.
There is a UDA recognized for specifically named test files, this does not affect the rest of the frontend. It is required for verifying inference.
Currently the engine is forced on for all code, except some specific test suite files, both of this will be disabled prior to merging. Have to verify what the CI as a whole does and that requires this behaviour. Same as previous PRs.