Commit Graph

43 Commits

Author SHA1 Message Date
chriseth
a38418f0d9 Common subexpression eliminator. 2018-04-06 15:16:29 +02:00
Leonardo Alt
fa0ab6bb21 Fix compilation problem from issue 3530 2018-02-16 16:04:30 +01:00
chriseth
d7e5cc3f97 Pretty-print constants in simplifier. 2018-02-09 19:00:40 +01:00
Alex Beregszaszi
96fe589f3c Use removeEmptyBlocks helper in FunctionHoister 2018-02-08 22:44:21 +00:00
chriseth
9b61fb2e99
Merge pull request #3456 from ethereum/simplifier
Use simplification rules also for IULIA
2018-02-08 16:50:17 +01:00
chriseth
c961a3079d Turn simplification rule tuple into struct. 2018-02-06 22:51:30 +01:00
chriseth
5523296eaa Also apply simplification rules that require multiple identical sub-expressions. 2018-02-06 22:51:30 +01:00
chriseth
9eea3f29ba Expression simplifier. 2018-02-06 22:51:30 +01:00
chriseth
591813638e Explanation of expression simplifier. 2018-02-06 22:51:30 +01:00
chriseth
b8074cdf78 Add flag to indicate whether it can be applied to expressions with side-effects. 2018-02-06 22:51:30 +01:00
chriseth
3960f4184d Rename expression inliner. 2018-02-06 14:50:39 +00:00
chriseth
e7ef227226 Function inliner. 2018-02-06 14:50:33 +00:00
chriseth
33abdfab76 Inlinable function filter. 2018-02-06 14:48:47 +00:00
chriseth
c0abddc9dc Test for self-referring assignment. 2018-02-06 12:58:51 +01:00
chriseth
88a5d152d0 Introduce struct for scopes. 2018-02-06 12:38:32 +01:00
chriseth
2b6a7665ee Refactor data flow analysis out of remat. 2018-02-06 12:38:32 +01:00
chriseth
e100af592b Fix for rematerializer. 2018-02-06 12:31:43 +01:00
chriseth
22c4d282aa Only substitute if all referenced variables are in scope. 2018-02-06 12:31:43 +01:00
chriseth
016fb18ef8 Rematerialisation. 2018-02-06 12:31:42 +01:00
chriseth
d400c44007 Description of variable eliminator. 2018-02-06 12:30:03 +01:00
chriseth
0b8060648e Add comments to UnusedPruner 2018-02-06 10:15:41 +00:00
Alex Beregszaszi
2cbbe58281 Support variable declarations without assignment in UnusedPruner 2018-02-06 10:07:00 +00:00
chriseth
b0407cfac0 Unused variable and function remover. 2018-02-05 16:43:39 +00:00
chriseth
9c85589122 Utility to remove empty blocks. 2018-02-05 16:43:39 +00:00
chriseth
3c8b777b9b References counter. 2018-02-05 16:43:39 +00:00
chriseth
eb42720145 Code size metric. 2018-02-02 15:28:41 +01:00
chriseth
95cf9266ab Movability. 2018-01-12 17:48:51 +01:00
chriseth
937b95cbe5 Use explicit visit function for the walker. 2018-01-12 17:21:52 +01:00
Alex Beregszaszi
2cdd789b5d
Merge pull request #3297 from ethereum/separate_expression_and_statement
Separate expression and statement
2018-01-04 12:04:19 +00:00
chriseth
dbad74ac1b
Merge pull request #3279 from ethereum/function_hoister
Function hoister
2017-12-18 15:08:13 +01:00
chriseth
7755e64872
Fixed typos in comment. 2017-12-18 14:56:56 +01:00
chriseth
99c8ed075e Function hoister. 2017-12-14 17:28:29 +01:00
chriseth
a6a64eb8ed Function grouper. 2017-12-14 17:21:01 +01:00
chriseth
54b6739962 Separate expression and statement. 2017-12-13 12:28:15 +01:00
chriseth
2add4f604b Description of the optimiser and stages. 2017-12-11 16:12:08 +01:00
Yoichi Hirai
c2109436de
Merge pull request #3287 from ethereum/substitution
Substitution
2017-12-06 11:12:06 +01:00
chriseth
07825e90fa substitution 2017-12-05 20:12:46 +01:00
chriseth
d34054ef58 copier 2017-12-05 20:12:46 +01:00
chriseth
6769a9a503 Make the modifier more flexible. 2017-12-05 20:12:46 +01:00
Alex Beregszaszi
745eefa36f Split Instruction and FunctionalInstruction in Julia 2017-12-05 14:52:11 +00:00
chriseth
c6df1cdaaa Generic AST walker. 2017-12-05 14:42:52 +01:00
chriseth
30d7afc2e3 Simplify disambiguator. 2017-12-05 12:09:55 +01:00
chriseth
861210f543 Disambiguator. 2017-12-05 12:09:52 +01:00