summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp
diff options
context:
space:
mode:
authorHal Finkel <hfinkel@anl.gov>2012-06-21 20:10:48 +0000
committerHal Finkel <hfinkel@anl.gov>2012-06-21 20:10:48 +0000
commita86b0f20dd43e5a06640fabb37c0fd25b5a44d67 (patch)
treeda568d03eecba1b4f03ba697afb9eb7cef26753d /llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp
parent8cf439f85a0dafd8794af48c7ad6660c28deb568 (diff)
downloadbcm5719-llvm-a86b0f20dd43e5a06640fabb37c0fd25b5a44d67.tar.gz
bcm5719-llvm-a86b0f20dd43e5a06640fabb37c0fd25b5a44d67.zip
Treat TargetGlobalAddress as a constant for the purpose of matching pre-inc stores on PPC.
Thanks to Tobias von Koch for pointing out this problem. llvm-svn: 158932
Diffstat (limited to 'llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp')
-rw-r--r--llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp b/llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp
index b53deda479f..a00f686adce 100644
--- a/llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp
+++ b/llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp
@@ -111,7 +111,8 @@ namespace {
/// immediate field. Because preinc imms have already been validated, just
/// accept it.
bool SelectAddrImmOffs(SDValue N, SDValue &Out) const {
- if (isa<ConstantSDNode>(N)) {
+ if (isa<ConstantSDNode>(N) || N.getOpcode() == PPCISD::Lo ||
+ N.getOpcode() == ISD::TargetGlobalAddress) {
Out = N;
return true;
}
@@ -123,6 +124,10 @@ namespace {
/// index field. Because preinc imms have already been validated, just
/// accept it.
bool SelectAddrIdxOffs(SDValue N, SDValue &Out) const {
+ if (isa<ConstantSDNode>(N) || N.getOpcode() == PPCISD::Lo ||
+ N.getOpcode() == ISD::TargetGlobalAddress)
+ return false;
+
Out = N;
return true;
}
OpenPOWER on IntegriCloud