[PATCH] D31583: StackColoring: smarter check for slot overlap

Ariel Ben-Yehuda via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Apr 6 01:53:42 PDT 2017


arielb1 added inline comments.


================
Comment at: lib/CodeGen/StackColoring.cpp:1125

----------------
dberlin wrote:
> Or you could just augment the standard dataflow problem with more info?
> You also just kind of assert it doesn't give very good results, but it's pretty widely used with good results :)
> 
What I said is that what the old code was doing - propagating the N `S active` facts across the CFG and that 
saying that 2 nodes interfere if they are both potentially active at a point - is overconservative at merge points. 
Merging this PR caused x16 stack usage reductions in real world Rust compiler stack usage.

My algorithm also propagates the N `S active` facts, but uses them along with `S active starts` non-propagated facts to compute `S active & T active` more precisely.

Liveness can make it smarter, but aliasing makes it annoying to compute (and if there are opaque function calls in the merge BB, impossible to compute). 




https://reviews.llvm.org/D31583





More information about the llvm-commits mailing list