1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-23 19:23:23 +01:00

fix documentation comments; NFC

llvm-svn: 263345
This commit is contained in:
Sanjay Patel 2016-03-12 20:44:30 +00:00
parent 2077c270a0
commit 8e3352072c

View File

@ -42,23 +42,23 @@ class Instruction : public User,
DebugLoc DbgLoc; // 'dbg' Metadata cache.
enum {
/// HasMetadataBit - This is a bit stored in the SubClassData field which
/// indicates whether this instruction has metadata attached to it or not.
/// This is a bit stored in the SubClassData field which indicates whether
/// this instruction has metadata attached to it or not.
HasMetadataBit = 1 << 15
};
public:
// Out of line virtual method, so the vtable, etc has a home.
~Instruction() override;
/// user_back - Specialize the methods defined in Value, as we know that an
/// instruction can only be used by other instructions.
/// Specialize the methods defined in Value, as we know that an instruction
/// can only be used by other instructions.
Instruction *user_back() { return cast<Instruction>(*user_begin());}
const Instruction *user_back() const { return cast<Instruction>(*user_begin());}
inline const BasicBlock *getParent() const { return Parent; }
inline BasicBlock *getParent() { return Parent; }
/// \brief Return the module owning the function this instruction belongs to
/// Return the module owning the function this instruction belongs to
/// or nullptr it the function does not have a module.
///
/// Note: this is undefined behavior if the instruction does not have a
@ -66,20 +66,18 @@ public:
const Module *getModule() const;
Module *getModule();
/// \brief Return the function this instruction belongs to.
/// Return the function this instruction belongs to.
///
/// Note: it is undefined behavior to call this on an instruction not
/// currently inserted into a function.
const Function *getFunction() const;
Function *getFunction();
/// removeFromParent - This method unlinks 'this' from the containing basic
/// block, but does not delete it.
///
/// This method unlinks 'this' from the containing basic block, but does not
/// delete it.
void removeFromParent();
/// eraseFromParent - This method unlinks 'this' from the containing basic
/// block and deletes it.
/// This method unlinks 'this' from the containing basic block and deletes it.
///
/// \returns an iterator pointing to the element after the erased one
SymbolTableList<Instruction>::iterator eraseFromParent();
@ -92,16 +90,15 @@ public:
/// specified instruction.
void insertAfter(Instruction *InsertPos);
/// moveBefore - Unlink this instruction from its current basic block and
/// insert it into the basic block that MovePos lives in, right before
/// MovePos.
/// Unlink this instruction from its current basic block and insert it into
/// the basic block that MovePos lives in, right before MovePos.
void moveBefore(Instruction *MovePos);
//===--------------------------------------------------------------------===//
// Subclass classification.
//===--------------------------------------------------------------------===//
/// getOpcode() returns a member of one of the enums like Instruction::Add.
/// Returns a member of one of the enums like Instruction::Add.
unsigned getOpcode() const { return getValueID() - InstructionVal; }
const char *getOpcodeName() const { return getOpcodeName(getOpcode()); }
@ -121,28 +118,27 @@ public:
return Opcode >= BinaryOpsBegin && Opcode < BinaryOpsEnd;
}
/// @brief Determine if the Opcode is one of the shift instructions.
/// Determine if the Opcode is one of the shift instructions.
static inline bool isShift(unsigned Opcode) {
return Opcode >= Shl && Opcode <= AShr;
}
/// isLogicalShift - Return true if this is a logical shift left or a logical
/// shift right.
/// Return true if this is a logical shift left or a logical shift right.
inline bool isLogicalShift() const {
return getOpcode() == Shl || getOpcode() == LShr;
}
/// isArithmeticShift - Return true if this is an arithmetic shift right.
/// Return true if this is an arithmetic shift right.
inline bool isArithmeticShift() const {
return getOpcode() == AShr;
}
/// @brief Determine if the OpCode is one of the CastInst instructions.
/// Determine if the OpCode is one of the CastInst instructions.
static inline bool isCast(unsigned OpCode) {
return OpCode >= CastOpsBegin && OpCode < CastOpsEnd;
}
/// @brief Determine if the OpCode is one of the FuncletPadInst instructions.
/// Determine if the OpCode is one of the FuncletPadInst instructions.
static inline bool isFuncletPad(unsigned OpCode) {
return OpCode >= FuncletPadOpsBegin && OpCode < FuncletPadOpsEnd;
}
@ -151,55 +147,53 @@ public:
// Metadata manipulation.
//===--------------------------------------------------------------------===//
/// hasMetadata() - Return true if this instruction has any metadata attached
/// to it.
/// Return true if this instruction has any metadata attached to it.
bool hasMetadata() const { return DbgLoc || hasMetadataHashEntry(); }
/// hasMetadataOtherThanDebugLoc - Return true if this instruction has
/// metadata attached to it other than a debug location.
/// Return true if this instruction has metadata attached to it other than a
/// debug location.
bool hasMetadataOtherThanDebugLoc() const {
return hasMetadataHashEntry();
}
/// getMetadata - Get the metadata of given kind attached to this Instruction.
/// Get the metadata of given kind attached to this Instruction.
/// If the metadata is not found then return null.
MDNode *getMetadata(unsigned KindID) const {
if (!hasMetadata()) return nullptr;
return getMetadataImpl(KindID);
}
/// getMetadata - Get the metadata of given kind attached to this Instruction.
/// Get the metadata of given kind attached to this Instruction.
/// If the metadata is not found then return null.
MDNode *getMetadata(StringRef Kind) const {
if (!hasMetadata()) return nullptr;
return getMetadataImpl(Kind);
}
/// getAllMetadata - Get all metadata attached to this Instruction. The first
/// element of each pair returned is the KindID, the second element is the
/// metadata value. This list is returned sorted by the KindID.
/// Get all metadata attached to this Instruction. The first element of each
/// pair returned is the KindID, the second element is the metadata value.
/// This list is returned sorted by the KindID.
void
getAllMetadata(SmallVectorImpl<std::pair<unsigned, MDNode *>> &MDs) const {
if (hasMetadata())
getAllMetadataImpl(MDs);
}
/// getAllMetadataOtherThanDebugLoc - This does the same thing as
/// getAllMetadata, except that it filters out the debug location.
/// This does the same thing as getAllMetadata, except that it filters out the
/// debug location.
void getAllMetadataOtherThanDebugLoc(
SmallVectorImpl<std::pair<unsigned, MDNode *>> &MDs) const {
if (hasMetadataOtherThanDebugLoc())
getAllMetadataOtherThanDebugLocImpl(MDs);
}
/// getAAMetadata - Fills the AAMDNodes structure with AA metadata from
/// this instruction. When Merge is true, the existing AA metadata is
/// merged with that from this instruction providing the most-general result.
/// Fills the AAMDNodes structure with AA metadata from this instruction.
/// When Merge is true, the existing AA metadata is merged with that from this
/// instruction providing the most-general result.
void getAAMetadata(AAMDNodes &N, bool Merge = false) const;
/// setMetadata - Set the metadata of the specified kind to the specified
/// node. This updates/replaces metadata if already present, or removes it if
/// Node is null.
/// Set the metadata of the specified kind to the specified node. This updates
/// or replaces metadata if already present, or removes it if Node is null.
void setMetadata(unsigned KindID, MDNode *Node);
void setMetadata(StringRef Kind, MDNode *Node);
@ -220,14 +214,13 @@ public:
}
/// @}
/// setAAMetadata - Sets the metadata on this instruction from the
/// AAMDNodes structure.
/// Sets the metadata on this instruction from the AAMDNodes structure.
void setAAMetadata(const AAMDNodes &N);
/// setDebugLoc - Set the debug location information for this instruction.
/// Set the debug location information for this instruction.
void setDebugLoc(DebugLoc Loc) { DbgLoc = std::move(Loc); }
/// getDebugLoc - Return the debug location for this node as a DebugLoc.
/// Return the debug location for this node as a DebugLoc.
const DebugLoc &getDebugLoc() const { return DbgLoc; }
/// Set or clear the unsafe-algebra flag on this instruction, which must be an
@ -289,8 +282,7 @@ public:
void copyFastMathFlags(const Instruction *I);
private:
/// hasMetadataHashEntry - Return true if we have an entry in the on-the-side
/// metadata hash.
/// Return true if we have an entry in the on-the-side metadata hash.
bool hasMetadataHashEntry() const {
return (getSubclassDataFromValue() & HasMetadataBit) != 0;
}
@ -302,6 +294,7 @@ private:
getAllMetadataImpl(SmallVectorImpl<std::pair<unsigned, MDNode *>> &) const;
void getAllMetadataOtherThanDebugLocImpl(
SmallVectorImpl<std::pair<unsigned, MDNode *>> &) const;
/// Clear all hashtable-based metadata from this instruction.
void clearMetadataHashEntries();
public:
//===--------------------------------------------------------------------===//
@ -309,7 +302,7 @@ public:
//===--------------------------------------------------------------------===//
/// isAssociative - Return true if the instruction is associative:
/// Return true if the instruction is associative:
///
/// Associative operators satisfy: x op (y op z) === (x op y) op z
///
@ -318,7 +311,7 @@ public:
bool isAssociative() const;
static bool isAssociative(unsigned op);
/// isCommutative - Return true if the instruction is commutative:
/// Return true if the instruction is commutative:
///
/// Commutative operators satisfy: (x op y) === (y op x)
///
@ -328,7 +321,7 @@ public:
bool isCommutative() const { return isCommutative(getOpcode()); }
static bool isCommutative(unsigned op);
/// isIdempotent - Return true if the instruction is idempotent:
/// Return true if the instruction is idempotent:
///
/// Idempotent operators satisfy: x op x === x
///
@ -337,7 +330,7 @@ public:
bool isIdempotent() const { return isIdempotent(getOpcode()); }
static bool isIdempotent(unsigned op);
/// isNilpotent - Return true if the instruction is nilpotent:
/// Return true if the instruction is nilpotent:
///
/// Nilpotent operators satisfy: x op x === Id,
///
@ -349,37 +342,31 @@ public:
bool isNilpotent() const { return isNilpotent(getOpcode()); }
static bool isNilpotent(unsigned op);
/// mayWriteToMemory - Return true if this instruction may modify memory.
///
/// Return true if this instruction may modify memory.
bool mayWriteToMemory() const;
/// mayReadFromMemory - Return true if this instruction may read memory.
///
/// Return true if this instruction may read memory.
bool mayReadFromMemory() const;
/// mayReadOrWriteMemory - Return true if this instruction may read or
/// write memory.
///
/// Return true if this instruction may read or write memory.
bool mayReadOrWriteMemory() const {
return mayReadFromMemory() || mayWriteToMemory();
}
/// isAtomic - Return true if this instruction has an
/// AtomicOrdering of unordered or higher.
///
/// Return true if this instruction has an AtomicOrdering of unordered or
/// higher.
bool isAtomic() const;
/// mayThrow - Return true if this instruction may throw an exception.
///
/// Return true if this instruction may throw an exception.
bool mayThrow() const;
/// mayReturn - Return true if this is a function that may return.
/// this is true for all normal instructions. The only exception
/// Return true if this is a function that may return.
/// This is true for all normal instructions. The only exception
/// is functions that are marked with the 'noreturn' attribute.
///
bool mayReturn() const;
/// mayHaveSideEffects - Return true if the instruction may have side effects.
/// Return true if the instruction may have side effects.
///
/// Note that this does not consider malloc and alloca to have side
/// effects because the newly allocated memory is completely invisible to
@ -389,7 +376,7 @@ public:
return mayWriteToMemory() || mayThrow() || !mayReturn();
}
/// \brief Return true if the instruction is a variety of EH-block.
/// Return true if the instruction is a variety of EH-block.
bool isEHPad() const {
switch (getOpcode()) {
case Instruction::CatchSwitch:
@ -402,21 +389,21 @@ public:
}
}
/// clone() - Create a copy of 'this' instruction that is identical in all
/// ways except the following:
/// Create a copy of 'this' instruction that is identical in all ways except
/// the following:
/// * The instruction has no parent
/// * The instruction has no name
///
Instruction *clone() const;
/// isIdenticalTo - Return true if the specified instruction is exactly
/// identical to the current one. This means that all operands match and any
/// extra information (e.g. load is volatile) agree.
/// Return true if the specified instruction is exactly identical to the
/// current one. This means that all operands match and any extra information
/// (e.g. load is volatile) agree.
bool isIdenticalTo(const Instruction *I) const;
/// isIdenticalToWhenDefined - This is like isIdenticalTo, except that it
/// ignores the SubclassOptionalData flags, which specify conditions
/// under which the instruction's result is undefined.
/// This is like isIdenticalTo, except that it ignores the
/// SubclassOptionalData flags, which specify conditions under which the
/// instruction's result is undefined.
bool isIdenticalToWhenDefined(const Instruction *I) const;
/// When checking for operation equivalence (using isSameOperationAs) it is
@ -439,10 +426,9 @@ public:
/// @brief Determine if one instruction is the same operation as another.
bool isSameOperationAs(const Instruction *I, unsigned flags = 0) const;
/// isUsedOutsideOfBlock - Return true if there are any uses of this
/// instruction in blocks other than the specified block. Note that PHI nodes
/// are considered to evaluate their operands in the corresponding predecessor
/// block.
/// Return true if there are any uses of this instruction in blocks other than
/// the specified block. Note that PHI nodes are considered to evaluate their
/// operands in the corresponding predecessor block.
bool isUsedOutsideOfBlock(const BasicBlock *BB) const;