summaryrefslogtreecommitdiffstats
path: root/llvm/utils/TableGen/CodeGenDAGPatterns.cpp
diff options
context:
space:
mode:
authorJakob Stoklund Olesen <stoklund@2pi.dk>2011-10-14 01:00:49 +0000
committerJakob Stoklund Olesen <stoklund@2pi.dk>2011-10-14 01:00:49 +0000
commitd9444d455e7158df4d801bc9ab05b8ad70318678 (patch)
tree59d718d00a9d42be046ac7cb5b5de16dd0cc3fd7 /llvm/utils/TableGen/CodeGenDAGPatterns.cpp
parent4c3e1402477107b4810564d046b9835e53bbc429 (diff)
downloadbcm5719-llvm-d9444d455e7158df4d801bc9ab05b8ad70318678.tar.gz
bcm5719-llvm-d9444d455e7158df4d801bc9ab05b8ad70318678.zip
Ban rematerializable instructions with side effects.
TableGen infers unmodeled side effects on instructions without a pattern. Fix some instruction definitions where that was overlooked. Also raise an error if a rematerializable instruction has unmodeled side effects. That doen't make any sense. llvm-svn: 141929
Diffstat (limited to 'llvm/utils/TableGen/CodeGenDAGPatterns.cpp')
-rw-r--r--llvm/utils/TableGen/CodeGenDAGPatterns.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/llvm/utils/TableGen/CodeGenDAGPatterns.cpp b/llvm/utils/TableGen/CodeGenDAGPatterns.cpp
index 4954f339869..dbf166262bb 100644
--- a/llvm/utils/TableGen/CodeGenDAGPatterns.cpp
+++ b/llvm/utils/TableGen/CodeGenDAGPatterns.cpp
@@ -2829,6 +2829,12 @@ void CodeGenDAGPatterns::InferInstructionFlags() {
InstInfo.isBitcast = IsBitcast;
InstInfo.hasSideEffects = HasSideEffects;
InstInfo.Operands.isVariadic = IsVariadic;
+
+ // Sanity checks.
+ if (InstInfo.isReMaterializable && InstInfo.hasSideEffects)
+ throw TGError(InstInfo.TheDef->getLoc(), "The instruction " +
+ InstInfo.TheDef->getName() +
+ " is rematerializable AND has unmodeled side effects?");
}
}
OpenPOWER on IntegriCloud