Indexed outputs are addition / subtractions and can be interpreted as such.
Diff Detail
- Build Status
Buildable 13367 Build 13367: arc lint + arc unit
Event Timeline
There are two aspects to this patch:
- Correctness: are we correctly distinguishing indexed loads and stores from unindexed loads and stores?
- Performance: are we optimizing indexed loads and stores as aggressively as possible?
This patch looks like it's mixing up the two. Please separate it into two patches, so we can evaluate the two aspects separately.
llvm/lib/CodeGen/SelectionDAG/SelectionDAGAddressAnalysis.cpp | ||
---|---|---|
133 | Maybe add a LLVM_FALLTHROUGH and default case here? |
llvm/lib/CodeGen/SelectionDAG/SelectionDAGAddressAnalysis.cpp | ||
---|---|---|
133 | We'd still need to have a trailing break after the switch (or a do-loop-again varaible) to drop out of the while loop because of the other 2 cases. |
llvm/lib/CodeGen/SelectionDAG/SelectionDAGAddressAnalysis.cpp | ||
---|---|---|
133 | You're right - my mistake. |
Looks reasonable to me, modulo style nit.
llvm/lib/CodeGen/SelectionDAG/SelectionDAGAddressAnalysis.cpp | ||
---|---|---|
127 | This is a confusing way to write this. It gets the correct answer, but I'd prefer if the load/store result value numbers (0 for store, 1 for load) were just explicitly spelled out with a conditional. |
This is a confusing way to write this. It gets the correct answer, but I'd prefer if the load/store result value numbers (0 for store, 1 for load) were just explicitly spelled out with a conditional.