diff options
author | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2011-10-14 01:00:49 +0000 |
---|---|---|
committer | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2011-10-14 01:00:49 +0000 |
commit | d9444d455e7158df4d801bc9ab05b8ad70318678 (patch) | |
tree | 59d718d00a9d42be046ac7cb5b5de16dd0cc3fd7 /llvm/utils/TableGen/CodeGenDAGPatterns.cpp | |
parent | 4c3e1402477107b4810564d046b9835e53bbc429 (diff) | |
download | bcm5719-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.cpp | 6 |
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?"); } } |