Daniel Grunwald
109b6d073a
Allow detecting exit points across multiple levels of containers.
4 years ago
Daniel Grunwald
685a79dc31
DetectExitPoints: introduce exit points for loops+switch
...
This allows reverting the changes to HighLevelLoopTransform+ReduceNestingTransform from the previous commit, which fixes a bug in loop detection (the previous commit did not handle loops where the loop BlockContainer didn't have a Block as parent).
4 years ago
Daniel Grunwald
6757295b3b
Fix #2379 : Keep `return` statements around in original form for ConditionDetection, only transform to fall-through block-exit at the end of the transform pipeline.
...
This fixes an issue where `return` statements within try-blocks could turn into `goto` statements.
4 years ago
dotnet format
0d9f871a4f
#2128 : Reformat the whole code base.
5 years ago
Siegfried Pammer
c1fca21e8a
Make ILRange field private - introduce public API for IL range manipulation.
7 years ago
Daniel Grunwald
50509c4985
Fix #1140 : Fix assertion when finally block unconditionally throws an exception.
8 years ago
Daniel Grunwald
1528ff329f
#447 : Don't pick "return;" as exit point if there's another choice.
8 years ago
Siegfried Pammer
206cdecf30
Merge Return instruction into Leave.
8 years ago
Daniel Grunwald
2207ab40f7
Check the CancellationToken a bit more frequently.
8 years ago
Daniel Grunwald
f0e230ae91
Run a second pass of DetectExitPoints to use 'return;' as exit point if no previous transform picked another exit point.
...
This eliminates redundant 'return;' and 'yield break;' instructions.
9 years ago
Daniel Grunwald
1001ff5721
Fix 'yield break;' in try-catch blocks.
9 years ago
Daniel Grunwald
5621101436
Reconstruct try-finally blocks in yield return decompiler
9 years ago
Daniel Grunwald
e871f7c05a
Convert LoopDetection into a block transform.
9 years ago
Daniel Grunwald
ed3d4aba9d
Run IntroduceExitPoints before loop detection, and let loop detection introduce its own exit points.
...
Warning: this commit creates broken branches that enter blocks.
9 years ago