Commit Graph
156 Commits
Author SHA1 Message Date
chriseth c9e2d388b5 Merge pull request #6848 from ethereum/invertibleRelation
Implement references using InvertibleRelation as data structure.
2019-05-29 13:34:10 +02:00
chriseth a3f721bbcc Merge pull request #6583 from ethereum/reset_yulstringrepo
Reset YulStringRepository regularly
2019-05-28 14:20:53 +02:00
chriseth 2276b567b1 Merge pull request #6840 from ethereum/discoverMSize
Only remove msize-modifying instructions if msize is not used.
2019-05-28 13:16:55 +02:00
Bhargava Shastry dbae0fa939 Reset Yul string repository before each compilation. 2019-05-28 13:12:39 +02:00
chriseth d7b5ea6761 Allow msize optimization only if it is not present. 2019-05-28 12:54:32 +02:00
chriseth afe887adc1 Split MovableChecker and introduce SideEffectsUpToMSize. 2019-05-28 12:54:32 +02:00
chriseth cee1340113 Add mini-interpreter to check representation. 2019-05-28 11:35:07 +02:00
chriseth 1c16124a09 Constant optimiser for Yul. 2019-05-28 11:35:07 +02:00
chriseth 4407af53b5 Gas meter for Yul expressions. 2019-05-28 11:34:47 +02:00
chriseth 4061ad0a7b Implement references using InvertibleRelation as data structure. 2019-05-27 22:55:59 +02:00
chriseth e5902c58a4 Merge pull request #6777 from sifmelcara/loop-cond-rewriter
[YulOpt] Implement ForLoopConditionIntoBody
2019-05-23 12:51:51 +02:00
chriseth 0f146ce55a Do not rematerialize recursively. 2019-05-23 12:03:39 +02:00
chriseth 1e3878121a Do not inline recursive functions. 2019-05-22 18:15:21 +02:00
mingchuan a86b00e8d0 [YulOpt] Implement ForLoopConditionIntoBody 2019-05-22 21:32:18 +08:00
chriseth 1dc15d5864 Modify parser and optimizer. 2019-05-20 17:32:56 +02:00
chriseth 46d9df7574 Add EVM opcodes as builtins. 2019-05-20 16:46:31 +02:00
chriseth 8daa281d3d Merge pull request #6776 from ethereum/equivalentFunctionHashes
Use block hashes in EquivalentFunctionDetector.
2019-05-20 14:35:39 +02:00
chriseth 4f3b7b232b Merge pull request #6774 from ethereum/dialectRefactor
Dialect refactor
2019-05-17 14:00:09 +02:00
chriseth 4bdb981224 Make dialect const& and allocate single instances statically. 2019-05-17 12:54:24 +02:00
Daniel Kirchner 05c210772a Make use of make_vector where possible. 2019-05-17 10:08:53 +02:00
Daniel Kirchner 3c66a56e60 Use block hashes in EquivalentFunctionDetector. 2019-05-17 08:39:42 +02:00
chriseth 570db164c9 Make Dialect const. 2019-05-16 21:51:54 +02:00
chriseth aa24e12054 Remove side-effect-free expressions, and not only movable expressions. 2019-05-16 12:30:05 +02:00
chriseth e8a88b13e4 Introduce side-effect-free as relaxed version of movable. 2019-05-16 12:30:05 +02:00
Daniel Kirchner a10501bb7d Merge pull request #6725 from AndreyBronin/develop
GCC 9.1 build fix. error: redundant move in return statement
2019-05-15 11:37:20 +02:00
Andrey Bronin 4eb37fe631 fix warning in GCC 9.1: redundant move in return statement 2019-05-14 17:44:28 +03:00
chriseth 439a225cee Simplify single-run for loops to if statements. 2019-05-13 18:58:36 +02:00
chriseth 99e96c2d66 Refactor termination detection. 2019-05-13 18:58:36 +02:00
chriseth d9831c8b96 Split structural simplifier. 2019-05-13 10:26:57 +02:00
chriseth bf104f718f Increase code cost for branching statements. 2019-04-25 17:08:11 +02:00
chriseth 6292adbde6 Merge pull request #6580 from ethereum/doNotGenerateInstructionsAsNmes
Prevent instructions to be generated as names.
2019-04-24 22:07:05 +02:00
chriseth 0af8d758a5 Prevent instructions to be generated as names. 2019-04-24 14:35:21 +02:00
chriseth aad4373da4 Disable redundent assign eliminator for deeply nested loops. 2019-04-23 09:50:25 +02:00
Mathias Baumann 3d061c83d7 IR: Generate inline asm blocks 2019-04-18 16:49:19 +02:00
fnatic 5b6ed7a97c Removing scope rules for pre block in 'For Loops' 2019-04-17 05:58:40 +05:30
chriseth fb06451f45 Add assertion that DeadCodeEliminator needs ForLoopInitRewriter. 2019-04-15 23:26:56 +02:00
mingchuan d49733dfc3 Fix variable decl scope issue in DeadCodeEliminator
FoorLoopInitRewriter needs to be run before DeadCodeEliminator.
2019-04-10 19:00:29 +08:00
chriseth d20b3c9f9f Function grouper is a requirement for the VarNameCleaner. 2019-04-05 13:41:38 +02:00
chriseth 887112b1b0 Fix SSA for multi-assignments. 2019-04-04 12:06:04 +02:00
Mathias Baumann e20acf5d0a Yul Optimizer: Remove dead code 2019-04-01 17:16:04 +02:00
chriseth 529aca5cbd Merge pull request #6407 from ethereum/changeNamespace
Remove "using namespace" from header and move Instruction to dev::eth.
2019-03-28 14:32:07 +01:00
chriseth 2308904f68 Remove "using namespace" from header and move Instruction to dev::eth. 2019-03-28 13:48:11 +01:00
chriseth 91f96c299e More logic about control flow with continue and about finalize. Remove BlockScope. 2019-03-27 22:16:31 +01:00
Christian Parpart a1ec49409d Yul] RedundantAssignEliminator: Implements break/continue handling within ForLoop. 2019-03-26 17:36:43 +01:00
chriseth 8514c0bc60 Provide max iterations for stack compressor as parameter. 2019-03-20 15:07:05 +01:00
chriseth aa9a2935ac Properly determine whether a variable can be eliminated or not. 2019-03-20 15:07:05 +01:00
chriseth 38cbf8d230 Pass "optimize stack allocation" flag down to the stack compressor. 2019-03-20 15:03:27 +01:00
Alex Beregszaszi 5245a66d91 Merge pull request #6318 from ethereum/signal-failure-and-such
Allow simplification patterns to signal failure
2019-03-20 03:38:51 +00:00
Alex Beregszaszi f95388011b Allow simplification patterns to signal failure 2019-03-19 15:51:52 +01:00
Christian Parpart 89f1dbfbb6 [Yul] Refactors RedundantAssignEliminator for future changes wrt. break/continue statements. 2019-03-19 12:24:45 +01:00