The loop dependence check looks for dependencies between store merge
candidates not captured by the chain sub-DAG doing a check of
predecessors which may be very large. Conservatively bound number of
nodes checked for compilation time. (Resolves PR34326).
Details
Details
- Reviewers
jyknight RKSimon efriedma dim - Commits
- rG656a28815c77: Merging r312022: --------------------------------------------------------------…
rGe7becd7e859a: [DAG] Bound loop dependence check in merge optimization.
rL312041: Merging r312022:
rL312022: [DAG] Bound loop dependence check in merge optimization.
Diff Detail
Diff Detail
- Build Status
Buildable 9696 Build 9696: arc lint + arc unit
Event Timeline
Comment Actions
I guess this is okay...? Adding arbitrary limits isn't nice, but I don't know what a nice solution looks like here. (Probably we should be using a different algorithm to find stores to merge; maybe something more like a DAG scheduling algorithm.)
lib/CodeGen/SelectionDAG/DAGCombiner.cpp | ||
---|---|---|
12795 | This helps in cases where there's a common ancestor nearby... but does that actually cover all interesting cases? |
Comment Actions
Based on Dimitry's comment in https://bugs.llvm.org/show_bug.cgi?id=34326#c13 this seems to solve the problem. Can we get it landed so it can be part of 5.0.0?
Comment Actions
I'm not sure if Nirav is around.
Eli: do you think this is ok for landing? It seems to fix the issue in the PR and is probably the final thing we need for 5.0.0.
This helps in cases where there's a common ancestor nearby... but does that actually cover all interesting cases?