[DO NOT MERGE] Implement fast DFA's escape analysis#23314
Conversation
|
|
|
I don't think this should be erroring:
|
06e60d1 to
3fdf65a
Compare
|
*(cast(void[]*)&ret) = _d_newarrayUTrace(__FILE__, __LINE__,
__FUNCTION__, typeid(E[]), size);
|
|
scope tint32 = new TypeBasic(ASTCodegen.Tint32);
tint32.merge();
ASTCodegen.Type.tint32 = tint32;
|
|
Aw after fixing bugs I've lost Ocean's null deref report that I was quite proud of. Oh well, at least it was 0 + 0. I don't think I can bring it back there is a rather large comment at this point showing why it can't be. |
|
It looks like I may need to rebase.
But only after I fix a segfault in dmd.mangle.cppwin: extern (D) this(VisualCPPMangler rvl) scope @safe
{
this.saved_idents[] = rvl.saved_idents[];
this.saved_types[] = rvl.saved_types[];
this.loc = rvl.loc;
this.eSink = rvl.eSink;
}Missing eSink assignment. I haven't figured out what commit I'm missing because clearly something is different between the two branches allowing this new untested pathway. |
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.