78 Commits (c7bbdcd0cb81c182318f188a1ef4e077ed0f403f)

Author SHA1 Message Date
David Srbecký ab9452a30e ILBasicBlock refactored to consist only of the body. Removed ILComment. Closes #86 15 years ago
David Srbecký 17f68f450f Moved some of the optimizations into the while(modified) loop 15 years ago
David Srbecký 579cbb0acd Added a pass to joint basic blocks 15 years ago
David Srbecký 10a96a8d3f Helpers ILCode.IsConditionalControlFlow() and ILCode.IsUnconditionalControlFlow() 15 years ago
David Srbecký 015d70ff52 Simplification of && || ?? ?: put into separate file. Just recalculate the analysis rather then trying to keep it up to date. 15 years ago
David Srbecký 31b2de1126 Fixed initilizers and fixed statements which I broke during the refactoring. 15 years ago
David Srbecký 1a64d56b5a Create short circuit logical expressions as left associative 15 years ago
David Srbecký 1b8a62fb7c Run optimization loops backwards (bottom-up) 15 years ago
David Srbecký 6046fdcdfb Do not put brtrue into its own basic block - store it together with the previous instructions. 15 years ago
David Srbecký b3f1d599f8 Refactored some peephole transforms; Moved some of the transforms before loop and condition detection 15 years ago
Daniel Grunwald b41ee3ca88 Fix type analysis bugs. 15 years ago
Daniel Grunwald a3c241dac6 Improve handling of pinned variables. 15 years ago
Daniel Grunwald 01d7e2abbd Use the same representation for parameters and variables. 15 years ago
David Srbecký cce7300d66 Removed the declarative pattern matching algorithm from ILAst 15 years ago
David Srbecký 05b3bfbff2 Use the simple pattern matching in yield return 15 years ago
David Srbecký 616503f9a9 Added method to calculate unassigned ILRanges 15 years ago
David Srbecký 7318663cd5 GetSelfAndChildrenRecursive can be predicated 15 years ago
David Srbecký 20e885539b Moved loops and condition optimizations to its own file 15 years ago
David Srbecký 3d4804a695 Simplify short circuit logic in return statements. Closes #49 15 years ago
David Srbecký a58cdc6a6e Support for the null coalescing operator 15 years ago
David Srbecký 892297708f Amend of last commit - remove stloc only if the inner expression is valid expression statement and the variable is generated 15 years ago
David Srbecký d167860111 Remove stloc instruction if the variable is never loaded 15 years ago
David Srbecký d518b07f8b Use short circuit logic instead of ternary operator if possible 15 years ago
Daniel Grunwald 5ee3d87388 Implemented a simple copy-propagation step. 15 years ago
Daniel Grunwald cfbbae4cb7 Remove code duplication ILInlining / ILAstOptimizer.InlineVariables. 15 years ago
David Srbecký ec0916c595 Perform inlining at the end 15 years ago
David Srbecký efd04b31d8 Simple goto and nop removal 15 years ago
David Srbecký 897ac7fe04 Moved inlineing from Builder to Optimizer 15 years ago
Daniel Grunwald e71935144a Adjust yield return decompiler to David's pattern matching refactoring. 15 years ago
David Srbecký 43706248fb Fixed FindLoopContent - it sometimes pulled in more then just the natural loop 15 years ago
David Srbecký de6d657f3f Fixed return duplication in the case when the last return statement was already removed. 15 years ago
David Srbecký 4c38e164de Minor refactoring of ILAst pattern matching 15 years ago
David Srbecký 456758e542 Apply the offset in switch expression 15 years ago
David Srbecký 84d45645bd Generate switch default case. Closes #26 15 years ago
David Srbecký 74b6624c5e Support multiple values per case block 15 years ago
David Srbecký fd1594996b Support for "break" in switch statements 15 years ago
Daniel Grunwald 6da92cd8d1 yield return decompilation: translate fields to local variables 15 years ago
Daniel Grunwald 6feadf3840 Started analysis of yield return statements. 15 years ago
David Srbecký aab0e43a08 Don't just fall out of case statements. 15 years ago
David Srbecký 37301d0162 Negate loop condition if necessary 15 years ago
David Srbecký 91334dbfe2 Use brtrue as loop condition only if one of the destinations is not in the loop 15 years ago
David Srbecký 01de42c04a Reduced branch codes to just br and brtrue 15 years ago
Daniel Grunwald 60c02d577b Change namespace to ICSharpCode.Decompiler. 15 years ago
Daniel Grunwald ee105aeb3c Refactor ArrayInitializers into a general peephole-transformation step. 15 years ago
David Srbecký e53c2565e8 Simple heuristics to improve gotos related to loops 15 years ago
David Srbecký c3e3166d8f Reimplemented condition "unnesting" to work on the fattened data with gotos already cleaned up. Use left over gotos and other unconditional flow to guide the unnesting. 15 years ago
David Srbecký 3f4578f7f5 Duplicate return statement with const int/bool. 15 years ago
David Srbecký effe892409 Duplicate return statements 15 years ago
David Srbecký 1bc30662b0 Rewritten goto removal. 15 years ago
David Srbecký 1174435aa6 Preparing duplication of return statement 15 years ago