From 58af13148543cb07186be3daf7fb51a84ffe0152 Mon Sep 17 00:00:00 2001 From: de4dot Date: Thu, 20 Oct 2011 12:29:19 +0200 Subject: [PATCH] Add code to remove dup + pop --- blocks/cflow/DeadCodeRemover.cs | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/blocks/cflow/DeadCodeRemover.cs b/blocks/cflow/DeadCodeRemover.cs index 413665ab..24ddac1f 100644 --- a/blocks/cflow/DeadCodeRemover.cs +++ b/blocks/cflow/DeadCodeRemover.cs @@ -53,6 +53,16 @@ namespace de4dot.blocks.cflow { allDeadInstructions.Add(i); break; + case Code.Dup: + if (i + 1 >= instructions.Count) + break; + if (instructions[i + 1].OpCode.Code != Code.Pop) + break; + allDeadInstructions.Add(i); + allDeadInstructions.Add(i + 1); + i++; + break; + case Code.Leave: case Code.Leave_S: case Code.Endfinally: @@ -69,9 +79,11 @@ namespace de4dot.blocks.cflow { break; } } + if (allDeadInstructions.Count == 0) + return false; block.remove(allDeadInstructions); - return allDeadInstructions.Count > 0; + return true; } bool okInstructions(Block block, IEnumerable indexes) {