summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBill Wendling <isanbard@gmail.com>2007-12-17 21:53:30 +0000
committerBill Wendling <isanbard@gmail.com>2007-12-17 21:53:30 +0000
commitd5477afc1bb711bbc3e672b215c85eeddc369185 (patch)
tree6a28c8a2691b2dd03b052533bee9c11b0f0e6411
parent9b482ba9ec67ae838f4e50dcfb6d595b2d8b7f3c (diff)
downloadbcm5719-llvm-d5477afc1bb711bbc3e672b215c85eeddc369185.tar.gz
bcm5719-llvm-d5477afc1bb711bbc3e672b215c85eeddc369185.zip
Add "hasSideEffects" method to MachineInstrInfo class.
llvm-svn: 45126
-rw-r--r--llvm/include/llvm/Target/TargetInstrInfo.h11
1 files changed, 10 insertions, 1 deletions
diff --git a/llvm/include/llvm/Target/TargetInstrInfo.h b/llvm/include/llvm/Target/TargetInstrInfo.h
index 28a08b28bfd..9b77649b796 100644
--- a/llvm/include/llvm/Target/TargetInstrInfo.h
+++ b/llvm/include/llvm/Target/TargetInstrInfo.h
@@ -314,6 +314,15 @@ public:
isReallyTriviallyReMaterializable(MI);
}
+ /// hasSideEffects - Returns true if the instruction has side effects that are
+ /// not captured by any operands of the instruction or other flags.
+ bool hasSideEffects(MachineInstr *MI) const {
+ const TargetInstrDescriptor *TID = MI->getInstrDescriptor();
+ if (!(TID->Flags & M_NEVER_HAS_SIDE_EFFECTS ||
+ TID->Flags & M_MAY_HAVE_SIDE_EFFECTS)) return true;
+ if (TID->Flags & M_NEVER_HAS_SIDE_EFFECTS) return false;
+ return !isReallySideEffectFree(MI); // May have side effects
+ }
protected:
/// isReallyTriviallyReMaterializable - For instructions with opcodes for
/// which the M_REMATERIALIZABLE flag is set, this function tests whether the
@@ -329,7 +338,7 @@ protected:
/// isReallySideEffectFree - If the M_MAY_HAVE_SIDE_EFFECTS flag is set, this
/// method is called to determine if the specific instance of this
- /// instructions has side effects. This is useful in cases of instructions,
+ /// instruction has side effects. This is useful in cases of instructions,
/// like loads, which generally always have side effects. A load from a
/// constant pool doesn't have side effects, though. So we need to
/// differentiate it from the general case.
OpenPOWER on IntegriCloud