diff --git a/ICSharpCode.Decompiler/Ast/AstMetodBodyBuilder.cs b/ICSharpCode.Decompiler/Ast/AstMetodBodyBuilder.cs index 0d08c33a0..0c57355de 100644 --- a/ICSharpCode.Decompiler/Ast/AstMetodBodyBuilder.cs +++ b/ICSharpCode.Decompiler/Ast/AstMetodBodyBuilder.cs @@ -704,7 +704,9 @@ namespace Decompiler case Code.Starg: throw new NotImplementedException(); case Code.Stloc: { if (operand is ILStackVariable) { - return new Ast.AssignmentExpression(new Ast.IdentifierExpression(((ILStackVariable)operand).Name), AssignmentOperatorType.Assign, arg1); + Ast.LocalVariableDeclaration astLocalVar = new Ast.LocalVariableDeclaration(new Ast.VariableDeclaration(((ILStackVariable)operand).Name, arg1)); + astLocalVar.TypeReference = new Ast.TypeReference("var"); + return astLocalVar; } VariableDefinition locVar = (VariableDefinition)operand; string name = locVar.Name; diff --git a/ICSharpCode.Decompiler/ILAst/ControlFlow/Node-Optimize.cs b/ICSharpCode.Decompiler/ILAst/ControlFlow/Node-Optimize.cs index 134992804..c75d430b6 100644 --- a/ICSharpCode.Decompiler/ILAst/ControlFlow/Node-Optimize.cs +++ b/ICSharpCode.Decompiler/ILAst/ControlFlow/Node-Optimize.cs @@ -60,9 +60,7 @@ namespace Decompiler.ControlFlow public void OptimizeShortCircuits() { foreach(Node child in this.Childs) { - if (child is Loop) { - child.OptimizeShortCircuits(); - } + child.OptimizeShortCircuits(); } Reset: @@ -130,9 +128,7 @@ namespace Decompiler.ControlFlow public void OptimizeConditions() { foreach(Node child in this.Childs) { - if (child is Loop) { - child.OptimizeConditions(); - } + child.OptimizeConditions(); } Node conditionNode = this.HeadChild; diff --git a/ICSharpCode.Decompiler/ILAst/ControlFlow/Nodes.cs b/ICSharpCode.Decompiler/ILAst/ControlFlow/Nodes.cs index 68dcbfa65..5d9e51b72 100644 --- a/ICSharpCode.Decompiler/ILAst/ControlFlow/Nodes.cs +++ b/ICSharpCode.Decompiler/ILAst/ControlFlow/Nodes.cs @@ -124,8 +124,6 @@ namespace Decompiler.ControlFlow public MethodBodyGraph(List ast) { if (ast.Count == 0) throw new ArgumentException("Count == 0", "ast"); - this.methodEntry = new BasicBlock(); - this.Childs.Add(this.methodEntry); this.Childs.AddRange(SplitToBasicBlocks(ast)); // Add branch links to BasicBlocks @@ -162,6 +160,7 @@ namespace Decompiler.ControlFlow { BasicBlock oldBB = basicBlock; basicBlock = new BasicBlock(); + if (methodEntry == null) methodEntry = basicBlock; nodes.Add(basicBlock); // Links if (oldBB != null && ast[i - 1] is ILExpression && ((ILExpression)ast[i - 1]).OpCode.CanFallThough()) { diff --git a/ICSharpCode.Decompiler/Options.cs b/ICSharpCode.Decompiler/Options.cs index d3aa421e1..3d8e6e584 100644 --- a/ICSharpCode.Decompiler/Options.cs +++ b/ICSharpCode.Decompiler/Options.cs @@ -4,8 +4,6 @@ namespace Decompiler { public static class Options { - public static readonly int CollapseExpression = 1000; - public static readonly int ReduceGraph = 1000; public static readonly bool NodeComments = false; public static readonly bool ReduceLoops = true; public static readonly bool ReduceConditonals = true;