NativeAOT-LLVM: Fix order of catch and second pass + calling finally twice #1991
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.
This PR fixes a couple of issues with the LLVM IL backend for exception handling. The second pass handler is now called before the catch (oops), and the finally block when adjacent to a catch, is only now called once.
I expect there are other problems, but at least this fixes 2 big ones and allows
runtimelab/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Runtime/CompilerServices/ClassConstructorRunner.cs
Lines 109 to 115 in f9cf5b0
to throw without dying in the
ReleaseLong term wasm-exceptions may help depending on how close the semantics are to .net I guess.
cc @SingleAccretion