Siegfried Pammer
dbbcbb87fe
Make pattern matching transform a simple ILTransform for both reference and value types. Check that the true branch dominates all uses of the pattern variable.
4 years ago
Siegfried Pammer
cd0c76d7b1
Support leave instructions in RemoveInfeasiblePathTransform and transform match(x) ? true : false to match(x).
4 years ago
Siegfried Pammer
76227af89d
Fix #1749 , fix #2339 , fix #2353 : Add support for rethrow in async exception handlers, fix await catch/finally patterns for complex methods.
4 years ago
Daniel Grunwald
80cf72e498
#2182 : Move "Transform call to struct constructor" from EarlyExpressionTransforms to ILReader.
...
This fixes the evaluation order for such calls (and an assertion in StObj.CheckTargetSlot).
5 years ago
dotnet format
0d9f871a4f
#2128 : Reformat the whole code base.
5 years ago
Siegfried Pammer
7ed4a736f3
Fix #2103 : Support for `Stackalloc initializers` not working for `byte`
5 years ago
Daniel Grunwald
abb9d49a0f
Add support for C# 8 switch expressions.
5 years ago
Siegfried Pammer
9c8df1d949
Fix assignment of ILRanges in ExpressionTransforms.TransformCatchVariable
5 years ago
Daniel Grunwald
dc6e094a30
Add support for indexing arrays using System.Index
5 years ago
Siegfried Pammer
4db41f69db
Fix #1919 : Use unmapped IL offsets at the start of a catch-block for the 'exception specifier' sequence point.
5 years ago
Siegfried Pammer
ba5c645257
Add TryCatchHandler annotation to CatchClause
5 years ago
SilverFox
5914d5b96b
Fix #1854
6 years ago
Daniel Grunwald
93806b46fa
Fix compound assignments with type `bool`.
...
This required removing the "Replace bit.and with logic.and" transform, as it interfered with the compound assignment transform.
6 years ago
Daniel Grunwald
a1c211f326
Fix #1794 : Avoid extra cast to double for ulong -> float conversion
6 years ago
Daniel Grunwald
f1021cb300
Fix #1643 : Handle unbox.any in TransformCatchVariable.
6 years ago
Siegfried Pammer
03151bf37b
Remove redundant code in ExpressionTransforms.VisitBlockContainer
6 years ago
Siegfried Pammer
9c06d5c924
Fix #1642 : Allow StackTypes I, I4, I8 and Unknown as switch value, convert Unknown and I to I8.
6 years ago
Siegfried Pammer
7502e521c1
Improve documentation of ExpressionTransforms.TransformCatchVariable
6 years ago
Siegfried Pammer
72c3e828f3
Check IsPure before Match.
6 years ago
Siegfried Pammer
c477ccf68e
Add SemanticHelper.IsPure check as per code-review.
6 years ago
Siegfried Pammer
ec18094c65
Implement transformation of delegate construction with ldvirtftn.
6 years ago
Daniel Grunwald
752f0de978
Further adjustments to transforms now that copy propagation no longer runs.
6 years ago
Siegfried Pammer
adc443e4e2
Fix dynamic compound assignments
6 years ago
Daniel Grunwald
539e3a906d
Fix #1552 : user-defined and decimal increments
...
For user-defined increments, there were problems with Roslyn was optimizing out one of the stores.
The new transform FixRemainingIncrements now takes increments/decrements that were not detected by TransformAssignment and introduces a temporary variable that can be incremented.
This sometimes requires un-inlining via the new ILInstruction.Extract() operation.
Extract() is not supported in all possible contexts, so it is possible but unlikely that some op_Increment calls remain.
For decimals, the situation is different: legacy csc actually was optimizing "d + 1m" to "op_Increment(d)", so we can get rid of any left-over increments by undoing this optimization. This now happens in ReplaceMethodCallsWithOperators.
6 years ago
Siegfried Pammer
19a7898786
Add addressof(ldloc) => ldloca transform to EarlyExpressionTransforms
6 years ago
Siegfried Pammer
119c679fad
Add addressof(ldloc V) => ldloca V transform for read access on value types.
6 years ago
Daniel Grunwald
3314f3f37a
Fix #1571 : Expression transforms not running for values of inline assignments.
6 years ago
Siegfried Pammer
6a1229028c
Only try to inline stackalloc Span<T> if the next statement is a plain assignment.
6 years ago
Siegfried Pammer
9590cfbf59
Update tests to latest Roslyn implementation.
6 years ago
Daniel Grunwald
961923f4fd
#1499 , #1240 : Translate pointer arithmetic on managed pointers (ref T) using the System.Runtime.CompilerServices.Unsafe intrinsics
6 years ago
Siegfried Pammer
d42cf99a8c
Fix dynamic transforms because https://github.com/dotnet/roslyn/issues/27800 was fixed.
6 years ago
Siegfried Pammer
94cd891609
Add support for ReadOnlySpan<T> initialization pattern.
6 years ago
Siegfried Pammer
c1fca21e8a
Make ILRange field private - introduce public API for IL range manipulation.
6 years ago
Daniel Grunwald
47ca51a769
Clarify the meaning of ILVariable.Index
6 years ago
Siegfried Pammer
112719efaf
Extend safety-checks in TransformSpanTCtorContainingStackAlloc.
7 years ago
Siegfried Pammer
0dac55d584
Add transformation for stackalloc to Span<T>.
7 years ago
Daniel Grunwald
ef866040b4
Update to SRM 1.6.0 and Roslyn 2.9. Adjust decompiler to new code pattern used for lifted nullable comparisons.
7 years ago
Daniel Grunwald
12e74daf48
Handle Comp in InferType().
7 years ago
Daniel Grunwald
2f54eee5db
#1195 : Fix comparison of object reference with ldc.i4 0.
7 years ago
Daniel Grunwald
dd5845e83d
Support short-circuiting operators with dynamic. (e.g. "if (x.A && x.B)" where "x" is dynamic)
7 years ago
Daniel Grunwald
9479e8af13
Support overloaded operator &&/||.
7 years ago
Chicken-Bones
f539bee362
Move binary->logical AND to ExpressionTransforms and use SemanticHelper.IsPure
7 years ago
Daniel Grunwald
4b96f48d87
Cosmetic changes during review of PR #1176
7 years ago
Siegfried Pammer
a30c628e1f
Remove hack from ExpressionTransforms.TransformDynamicAddAssignOrRemoveAssign, implement VisitDynamicSetIndexInstruction
7 years ago
Siegfried Pammer
c4f41f459f
Add support for more dynamic binary operators.
7 years ago
Siegfried Pammer
2c7e3c2c37
Add hack to allow inlining of compiler-generated variable after dynamic.isevent pattern transform.
7 years ago
Siegfried Pammer
273a1c24ff
Add dynamic compound assignment transforms
7 years ago
Siegfried Pammer
5e4b571a62
Add DynamicCallSiteTransform
7 years ago
Daniel Grunwald
3956fa685d
Refactor TransformAssignment to reduce code duplication.
7 years ago
Siegfried Pammer
845c620a9f
Implement UserDefinedCompoundAssign
...
rename CompoundAssignmentInstruction -> NumericCompoundAssign
7 years ago