|
|
@ -677,12 +677,9 @@ namespace ICSharpCode.Decompiler.ILAst |
|
|
|
{ |
|
|
|
{ |
|
|
|
bool modified = false; |
|
|
|
bool modified = false; |
|
|
|
List<ILNode> body = block.Body; |
|
|
|
List<ILNode> body = block.Body; |
|
|
|
for (int i = 0; i < body.Count;) { |
|
|
|
for (int i = body.Count - 1; i >= 0; i--) { |
|
|
|
if (optimization(body, (ILBasicBlock)body[i], i)) { |
|
|
|
if (i < body.Count && optimization(body, (ILBasicBlock)body[i], i)) { |
|
|
|
modified = true; |
|
|
|
modified = true; |
|
|
|
i = Math.Max(0, i - 1); // Go back one step
|
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
i++; |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
return modified; |
|
|
|
return modified; |
|
|
@ -692,13 +689,10 @@ namespace ICSharpCode.Decompiler.ILAst |
|
|
|
{ |
|
|
|
{ |
|
|
|
bool modified = false; |
|
|
|
bool modified = false; |
|
|
|
foreach (ILBasicBlock bb in block.Body) { |
|
|
|
foreach (ILBasicBlock bb in block.Body) { |
|
|
|
for (int j = 0; j < bb.Body.Count;) { |
|
|
|
for (int i = bb.Body.Count - 1; i >= 0; i--) { |
|
|
|
ILExpression expr = bb.Body[j] as ILExpression; |
|
|
|
ILExpression expr = bb.Body.ElementAtOrDefault(i) as ILExpression; |
|
|
|
if (expr != null && optimization(bb.Body, expr, j)) { |
|
|
|
if (expr != null && optimization(bb.Body, expr, i)) { |
|
|
|
modified = true; |
|
|
|
modified = true; |
|
|
|
j = Math.Max(0, j - 1); // Go back one step
|
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
j++; |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|