freenode/#clasp - IRC Chatlog
Search
6:41:01
beach
I am not sure y'all have looked in the logs, but karlosz and myself adapted the published algorithm for sparse conditional constant propagation from SSA to SFA. In the process, the algorithm was simplified, and of course, we avoid the problems with SSA.
6:41:50
beach
Furthermore, we noticed a property of SFA namely that UD chains and DU chains are trivial. So in case we see algorithms that need such chains, we could consider converting to SFA first.
6:42:53
drmeister
beach: I was reading it today on my phone - it sounds exciting. What does it mean?
6:43:36
beach
Which part? The algorithm does constant propagation, and also eliminates branches where the test turns out to be constant at compile time.
6:45:02
beach
So instead of v <- phi(v1, v2, ... vn) we have n incoming arcs with an instruction in the middle doing v <- v1, v <- v2, ... v <- vn.
6:45:42
drmeister
Ok - here's a weird question - if I want to translate SFA into SSA do I use assignments or PHI nodes?
6:46:46
beach
So, again, we have discovered an algorithm that does not need the fact that SSA is S.S.A.
6:47:18
drmeister
Yes - I'm thinking about how it will impact Clasp - or how Clasp will use it to generate code for LLVM.
6:49:11
drmeister
I'd rather use more Cleavir and follow it all the way down to when it can generate native code but that will take a while
6:50:34
beach
I think the goal is to propose a complete set of optimization techniques, and that the client implementation can build a compiler according to its needs.
8:12:47
beach
But I think it is silly to call something an "alternative representation of SSA" when it does not have the S.S.A property.
10:27:31
heisig
beach, Bike: I finally found some free time to finish my load time value hoisting code. I would appreciate if anyone of you could review it.
10:27:42
heisig
The code is at https://github.com/marcoheisig/SICL/tree/load-time-value-hoisting/Code/Cleavir/HIR-transformations/Load-time-value-hoisting
10:28:55
heisig
At the moment, it is pretty useless, because it needs several client specific methods to operate correctly.
10:29:47
heisig
But if you agree with the overall design, I will add specializing methods for Clasp and SICL.