Open willi19 opened 1 year ago
In short,
oracle
and load2aload
is counterproductive pass since they are targeting same region of code.functioninline
needs to be performed before heap2stack
.oracle
after GVN
, since it will reduce arithmetic instruction counts in high probability. It will broaden the candidates of oracle loops.arithmetic
needs to be performed after many of llvm existing pass.For summary,
GVN
< oracle
< load2aload
functioninline
< heap2stack
arithmetic
has to be located in final phase of optimization.functioninline
< oracle
, or exceptionally treat oracle
Please give me more constraints what I missed here! @goranmoomin @germanium32
oracle
< incrdecr
Passes creating intrinsics are dangerous, and also might invalidate all loops of oracle
since i++
is transformed to incr i
.
How about writing a document of each pass so we can check the dependancy between each pass and choose the order to apply path. Also useful when we try to improve other's code during wrap up.
Before review of sprint3, it would be nice to have a meeting and read code together while writer explaining the code. This is to understand other's code efficiently.
By doing this we can have aligned thoughts on the tasks to be completed in this wrap-up and proceed efficiently.