diff options
| author | Bill Wendling <isanbard@gmail.com> | 2007-12-17 21:53:30 +0000 |
|---|---|---|
| committer | Bill Wendling <isanbard@gmail.com> | 2007-12-17 21:53:30 +0000 |
| commit | d5477afc1bb711bbc3e672b215c85eeddc369185 (patch) | |
| tree | 6a28c8a2691b2dd03b052533bee9c11b0f0e6411 | |
| parent | 9b482ba9ec67ae838f4e50dcfb6d595b2d8b7f3c (diff) | |
| download | bcm5719-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.h | 11 |
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. |

