3 ms·
That's not what i said. I fund research grants and review papers for a lot of these conferences and areas :) What i said was quite specific: We are talking ab
by DannyBee 10y ago
That's not what i said. I fund research grants and review papers for a lot of these conferences and areas :)
What i said was quite specific:
We are talking about aliasing here, and in the area of aliasing, we pretty much know all of the tradeoffs, upper and lower bounds.
We know how good we can make algorithms, we know how to make them scale as well (single cpu, gpu, parallel, you name it). On demand, ahead of time, etc.
You can engineer inside these tradeoffs all you want, and come up with amazingly nice hybrid algorithms that do all the right things.
It's about how much time and energy you want to put into it.
But here, there is no magic left.We know precisely what we can and can't do, and how it will turn out.
Put another way: Given me a budget ( money, compile time, amount of memory and number machines that can be used at once to compile, etc), i will give you your choices, and implement them :)
Additionally, I can also tell you that no matter what your choice, when it comes to aliasing, you are talking maybe 6-8 months of work to build an initial version for someone with experience in the area, assuming what you want is super-complex.
The two current CFL implementations (on demand pointer analysis) in LLVM, for example, were developed by two interns, each in 3 months.
Building a very large scale "as precise as it gets" context-sensitive field-sensitive pointer analysis that worked across 10k machines took me about 6 months (to be fair: starting point was a well functioning distributed graph processing infrastructure. Obviously, that would have taken a lot longer to build :P).
Honestly, the reason you don't see more done here is because it's not the low hanging fruit for most compilers, for most apps people care about. I'm saying that as a guy who really loves aliasing, but also owns google's compiler performance teams.
Like most areas of compilers, alias analysis hits a good enough point, you leave it alone for a while, you run out of other things you can improve that are bigger bang for buck, you come back and improve it, repeat.
In fact, humorously, improving aliasing significantly often makes the compiler generate worse code to start because it now has a lot more freedom to go crazy with optimizations than it used to. So then you have to spend time coming up with better cost models for those optimizations, etc
- flamedoge 10y agoInsertion of runtime alias checks still appears like magic to me. Maybe there is still work to be done, reducing # of runtime checks with FSM or something alike might be one.
- DannyBee 10y ago"Insertion of runtime alias checks still appears like magic to me." ICC does it, gcc does it, etc. In fact, things like Polly, pluto, etc are built around being able to add the right conditional guards to make loops execute in perfect orders with no dependences :) IE if (a bunch of stuff is true) execute perfect loop else whatever was there before.