From fc45d476156f119bb81ca116fb370d6d7b477777 Mon Sep 17 00:00:00 2001 From: Siegfried Pammer Date: Thu, 14 Jul 2016 20:08:48 +0900 Subject: [PATCH] Extend CompoundAssignment-transformation to ldelema patterns --- .../IL/Transforms/ExpressionTransforms.cs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/ICSharpCode.Decompiler/IL/Transforms/ExpressionTransforms.cs b/ICSharpCode.Decompiler/IL/Transforms/ExpressionTransforms.cs index 357d611e2..1dd745931 100644 --- a/ICSharpCode.Decompiler/IL/Transforms/ExpressionTransforms.cs +++ b/ICSharpCode.Decompiler/IL/Transforms/ExpressionTransforms.cs @@ -202,9 +202,13 @@ namespace ICSharpCode.Decompiler.IL.Transforms bool IsSameTarget(ILInstruction target, ILInstruction left) { IField f, f2; - ILInstruction t, t2; + ILInstruction t, t2, a, a2; + IType type, type2; if (target.MatchLdFlda(out t, out f) && left.MatchLdFlda(out t2, out f2) && f.Equals(f2)) return true; + // match ldelmena(ldobj(...)) + if (target.MatchLdElema(out type, out a) && left.MatchLdElema(out type2, out a2) && type.Equals(type2)) + return a.MatchLdObj(out target, out type) && a2.MatchLdObj(out left, out type2) && IsSameTarget(target, left); return false; }