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
- Repository
- rL LLVM
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 ↗ | (On Diff #112912) | 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.