mirror of
https://github.com/RPCSX/llvm.git
synced 2025-03-04 10:59:04 +00:00
house cleaning: "Don’t duplicate function or class name at the beginning of the comment."
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@217069 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
52fa0d066a
commit
8bf2a84891
@ -29,8 +29,7 @@
|
||||
|
||||
namespace llvm {
|
||||
|
||||
/// SmallVectorBase - This is all the non-templated stuff common to all
|
||||
/// SmallVectors.
|
||||
/// This is all the non-templated stuff common to all SmallVectors.
|
||||
class SmallVectorBase {
|
||||
protected:
|
||||
void *BeginX, *EndX, *CapacityX;
|
||||
@ -39,12 +38,12 @@ protected:
|
||||
SmallVectorBase(void *FirstEl, size_t Size)
|
||||
: BeginX(FirstEl), EndX(FirstEl), CapacityX((char*)FirstEl+Size) {}
|
||||
|
||||
/// grow_pod - This is an implementation of the grow() method which only works
|
||||
/// This is an implementation of the grow() method which only works
|
||||
/// on POD-like data types and is out of line to reduce code duplication.
|
||||
void grow_pod(void *FirstEl, size_t MinSizeInBytes, size_t TSize);
|
||||
|
||||
public:
|
||||
/// size_in_bytes - This returns size()*sizeof(T).
|
||||
/// This returns size()*sizeof(T).
|
||||
size_t size_in_bytes() const {
|
||||
return size_t((char*)EndX - (char*)BeginX);
|
||||
}
|
||||
@ -59,10 +58,9 @@ public:
|
||||
|
||||
template <typename T, unsigned N> struct SmallVectorStorage;
|
||||
|
||||
/// SmallVectorTemplateCommon - This is the part of SmallVectorTemplateBase
|
||||
/// which does not depend on whether the type T is a POD. The extra dummy
|
||||
/// template argument is used by ArrayRef to avoid unnecessarily requiring T
|
||||
/// to be complete.
|
||||
/// This is the part of SmallVectorTemplateBase which does not depend on whether
|
||||
/// the type T is a POD. The extra dummy template argument is used by ArrayRef
|
||||
/// to avoid unnecessarily requiring T to be complete.
|
||||
template <typename T, typename = void>
|
||||
class SmallVectorTemplateCommon : public SmallVectorBase {
|
||||
private:
|
||||
@ -82,13 +80,13 @@ protected:
|
||||
SmallVectorBase::grow_pod(&FirstEl, MinSizeInBytes, TSize);
|
||||
}
|
||||
|
||||
/// isSmall - Return true if this is a smallvector which has not had dynamic
|
||||
/// Return true if this is a smallvector which has not had dynamic
|
||||
/// memory allocated for it.
|
||||
bool isSmall() const {
|
||||
return BeginX == static_cast<const void*>(&FirstEl);
|
||||
}
|
||||
|
||||
/// resetToSmall - Put this vector in a state of being small.
|
||||
/// Put this vector in a state of being small.
|
||||
void resetToSmall() {
|
||||
BeginX = EndX = CapacityX = &FirstEl;
|
||||
}
|
||||
@ -128,13 +126,12 @@ public:
|
||||
size_type size() const { return end()-begin(); }
|
||||
size_type max_size() const { return size_type(-1) / sizeof(T); }
|
||||
|
||||
/// capacity - Return the total number of elements in the currently allocated
|
||||
/// buffer.
|
||||
/// Return the total number of elements in the currently allocated buffer.
|
||||
size_t capacity() const { return capacity_ptr() - begin(); }
|
||||
|
||||
/// data - Return a pointer to the vector's buffer, even if empty().
|
||||
/// Return a pointer to the vector's buffer, even if empty().
|
||||
pointer data() { return pointer(begin()); }
|
||||
/// data - Return a pointer to the vector's buffer, even if empty().
|
||||
/// Return a pointer to the vector's buffer, even if empty().
|
||||
const_pointer data() const { return const_pointer(begin()); }
|
||||
|
||||
reference operator[](unsigned idx) {
|
||||
@ -179,7 +176,7 @@ protected:
|
||||
}
|
||||
}
|
||||
|
||||
/// move - Use move-assignment to move the range [I, E) onto the
|
||||
/// Use move-assignment to move the range [I, E) onto the
|
||||
/// objects starting with "Dest". This is just <memory>'s
|
||||
/// std::move, but not all stdlibs actually provide that.
|
||||
template<typename It1, typename It2>
|
||||
@ -189,7 +186,7 @@ protected:
|
||||
return Dest;
|
||||
}
|
||||
|
||||
/// move_backward - Use move-assignment to move the range
|
||||
/// Use move-assignment to move the range
|
||||
/// [I, E) onto the objects ending at "Dest", moving objects
|
||||
/// in reverse order. This is just <algorithm>'s
|
||||
/// std::move_backward, but not all stdlibs actually provide that.
|
||||
@ -200,25 +197,24 @@ protected:
|
||||
return Dest;
|
||||
}
|
||||
|
||||
/// uninitialized_move - Move the range [I, E) into the uninitialized
|
||||
/// memory starting with "Dest", constructing elements as needed.
|
||||
/// Move the range [I, E) into the uninitialized memory starting with "Dest",
|
||||
/// constructing elements as needed.
|
||||
template<typename It1, typename It2>
|
||||
static void uninitialized_move(It1 I, It1 E, It2 Dest) {
|
||||
for (; I != E; ++I, ++Dest)
|
||||
::new ((void*) &*Dest) T(::std::move(*I));
|
||||
}
|
||||
|
||||
/// uninitialized_copy - Copy the range [I, E) onto the uninitialized
|
||||
/// memory starting with "Dest", constructing elements as needed.
|
||||
/// Copy the range [I, E) onto the uninitialized memory starting with "Dest",
|
||||
/// constructing elements as needed.
|
||||
template<typename It1, typename It2>
|
||||
static void uninitialized_copy(It1 I, It1 E, It2 Dest) {
|
||||
std::uninitialized_copy(I, E, Dest);
|
||||
}
|
||||
|
||||
/// grow - Grow the allocated memory (without initializing new
|
||||
/// elements), doubling the size of the allocated memory.
|
||||
/// Guarantees space for at least one more element, or MinSize more
|
||||
/// elements if specified.
|
||||
/// Grow the allocated memory (without initializing new elements), doubling
|
||||
/// the size of the allocated memory. Guarantees space for at least one more
|
||||
/// element, or MinSize more elements if specified.
|
||||
void grow(size_t MinSize = 0);
|
||||
|
||||
public:
|
||||
@ -279,22 +275,21 @@ protected:
|
||||
// No need to do a destroy loop for POD's.
|
||||
static void destroy_range(T *, T *) {}
|
||||
|
||||
/// move - Use move-assignment to move the range [I, E) onto the
|
||||
/// Use move-assignment to move the range [I, E) onto the
|
||||
/// objects starting with "Dest". For PODs, this is just memcpy.
|
||||
template<typename It1, typename It2>
|
||||
static It2 move(It1 I, It1 E, It2 Dest) {
|
||||
return ::std::copy(I, E, Dest);
|
||||
}
|
||||
|
||||
/// move_backward - Use move-assignment to move the range
|
||||
/// [I, E) onto the objects ending at "Dest", moving objects
|
||||
/// in reverse order.
|
||||
/// Use move-assignment to move the range [I, E) onto the objects ending at
|
||||
/// "Dest", moving objects in reverse order.
|
||||
template<typename It1, typename It2>
|
||||
static It2 move_backward(It1 I, It1 E, It2 Dest) {
|
||||
return ::std::copy_backward(I, E, Dest);
|
||||
}
|
||||
|
||||
/// uninitialized_move - Move the range [I, E) onto the uninitialized memory
|
||||
/// Move the range [I, E) onto the uninitialized memory
|
||||
/// starting with "Dest", constructing elements into it as needed.
|
||||
template<typename It1, typename It2>
|
||||
static void uninitialized_move(It1 I, It1 E, It2 Dest) {
|
||||
@ -302,7 +297,7 @@ protected:
|
||||
uninitialized_copy(I, E, Dest);
|
||||
}
|
||||
|
||||
/// uninitialized_copy - Copy the range [I, E) onto the uninitialized memory
|
||||
/// Copy the range [I, E) onto the uninitialized memory
|
||||
/// starting with "Dest", constructing elements into it as needed.
|
||||
template<typename It1, typename It2>
|
||||
static void uninitialized_copy(It1 I, It1 E, It2 Dest) {
|
||||
@ -310,7 +305,7 @@ protected:
|
||||
std::uninitialized_copy(I, E, Dest);
|
||||
}
|
||||
|
||||
/// uninitialized_copy - Copy the range [I, E) onto the uninitialized memory
|
||||
/// Copy the range [I, E) onto the uninitialized memory
|
||||
/// starting with "Dest", constructing elements into it as needed.
|
||||
template<typename T1, typename T2>
|
||||
static void uninitialized_copy(T1 *I, T1 *E, T2 *Dest) {
|
||||
@ -320,7 +315,7 @@ protected:
|
||||
memcpy(Dest, I, (E-I)*sizeof(T));
|
||||
}
|
||||
|
||||
/// grow - double the size of the allocated memory, guaranteeing space for at
|
||||
/// Double the size of the allocated memory, guaranteeing space for at
|
||||
/// least one more element or MinSize if specified.
|
||||
void grow(size_t MinSize = 0) {
|
||||
this->grow_pod(MinSize*sizeof(T), sizeof(T));
|
||||
@ -339,9 +334,8 @@ public:
|
||||
};
|
||||
|
||||
|
||||
/// SmallVectorImpl - This class consists of common code factored out of the
|
||||
/// SmallVector class to reduce code duplication based on the SmallVector 'N'
|
||||
/// template parameter.
|
||||
/// This class consists of common code factored out of the SmallVector class to
|
||||
/// reduce code duplication based on the SmallVector 'N' template parameter.
|
||||
template <typename T>
|
||||
class SmallVectorImpl : public SmallVectorTemplateBase<T, isPodLike<T>::value> {
|
||||
typedef SmallVectorTemplateBase<T, isPodLike<T>::value > SuperClass;
|
||||
@ -411,8 +405,7 @@ public:
|
||||
|
||||
void swap(SmallVectorImpl &RHS);
|
||||
|
||||
/// append - Add the specified range to the end of the SmallVector.
|
||||
///
|
||||
/// Add the specified range to the end of the SmallVector.
|
||||
template<typename in_iter>
|
||||
void append(in_iter in_start, in_iter in_end) {
|
||||
size_type NumInputs = std::distance(in_start, in_end);
|
||||
@ -427,8 +420,7 @@ public:
|
||||
this->setEnd(this->end() + NumInputs);
|
||||
}
|
||||
|
||||
/// append - Add the specified range to the end of the SmallVector.
|
||||
///
|
||||
/// Add the specified range to the end of the SmallVector.
|
||||
void append(size_type NumInputs, const T &Elt) {
|
||||
// Grow allocated space if needed.
|
||||
if (NumInputs > size_type(this->capacity_ptr()-this->end()))
|
||||
@ -833,7 +825,7 @@ struct SmallVectorStorage {
|
||||
template <typename T> struct SmallVectorStorage<T, 1> {};
|
||||
template <typename T> struct SmallVectorStorage<T, 0> {};
|
||||
|
||||
/// SmallVector - This is a 'vector' (really, a variable-sized array), optimized
|
||||
/// This is a 'vector' (really, a variable-sized array), optimized
|
||||
/// for the case when the array is small. It contains some number of elements
|
||||
/// in-place, which allows it to avoid heap allocation when the actual number of
|
||||
/// elements is below that threshold. This allows normal "small" cases to be
|
||||
@ -843,7 +835,7 @@ template <typename T> struct SmallVectorStorage<T, 0> {};
|
||||
///
|
||||
template <typename T, unsigned N>
|
||||
class SmallVector : public SmallVectorImpl<T> {
|
||||
/// Storage - Inline space for elements which aren't stored in the base class.
|
||||
/// Inline space for elements which aren't stored in the base class.
|
||||
SmallVectorStorage<T, N> Storage;
|
||||
public:
|
||||
SmallVector() : SmallVectorImpl<T>(N) {
|
||||
|
@ -29,8 +29,8 @@ class LLVMContext;
|
||||
// TerminatorInst Class
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
/// TerminatorInst - Subclasses of this class are all able to terminate a basic
|
||||
/// block. Thus, these are all the flow control type of operations.
|
||||
/// Subclasses of this class are all able to terminate a basic
|
||||
/// block. Thus, these are all the flow control type of operations.
|
||||
///
|
||||
class TerminatorInst : public Instruction {
|
||||
protected:
|
||||
@ -54,20 +54,17 @@ protected:
|
||||
TerminatorInst *clone_impl() const override = 0;
|
||||
public:
|
||||
|
||||
/// getNumSuccessors - Return the number of successors that this terminator
|
||||
/// has.
|
||||
/// Return the number of successors that this terminator has.
|
||||
unsigned getNumSuccessors() const {
|
||||
return getNumSuccessorsV();
|
||||
}
|
||||
|
||||
/// getSuccessor - Return the specified successor.
|
||||
///
|
||||
/// Return the specified successor.
|
||||
BasicBlock *getSuccessor(unsigned idx) const {
|
||||
return getSuccessorV(idx);
|
||||
}
|
||||
|
||||
/// setSuccessor - Update the specified successor to point at the provided
|
||||
/// block.
|
||||
/// Update the specified successor to point at the provided block.
|
||||
void setSuccessor(unsigned idx, BasicBlock *B) {
|
||||
setSuccessorV(idx, B);
|
||||
}
|
||||
@ -153,7 +150,7 @@ public:
|
||||
/// Transparently provide more efficient getOperand methods.
|
||||
DECLARE_TRANSPARENT_OPERAND_ACCESSORS(Value);
|
||||
|
||||
/// Create() - Construct a binary instruction, given the opcode and the two
|
||||
/// Construct a binary instruction, given the opcode and the two
|
||||
/// operands. Optionally (if InstBefore is specified) insert the instruction
|
||||
/// into a BasicBlock right before the specified instruction. The specified
|
||||
/// Instruction is allowed to be a dereferenced end iterator.
|
||||
@ -162,14 +159,14 @@ public:
|
||||
const Twine &Name = Twine(),
|
||||
Instruction *InsertBefore = nullptr);
|
||||
|
||||
/// Create() - Construct a binary instruction, given the opcode and the two
|
||||
/// Construct a binary instruction, given the opcode and the two
|
||||
/// operands. Also automatically insert this instruction to the end of the
|
||||
/// BasicBlock specified.
|
||||
///
|
||||
static BinaryOperator *Create(BinaryOps Op, Value *S1, Value *S2,
|
||||
const Twine &Name, BasicBlock *InsertAtEnd);
|
||||
|
||||
/// Create* - These methods just forward to Create, and are useful when you
|
||||
/// These methods just forward to Create, and are useful when you
|
||||
/// statically know what type of instruction you're going to create. These
|
||||
/// helpers just save some typing.
|
||||
#define HANDLE_BINARY_INST(N, OPC, CLASS) \
|
||||
@ -281,8 +278,7 @@ public:
|
||||
/// Helper functions to construct and inspect unary operations (NEG and NOT)
|
||||
/// via binary operators SUB and XOR:
|
||||
///
|
||||
/// CreateNeg, CreateNot - Create the NEG and NOT
|
||||
/// instructions out of SUB and XOR instructions.
|
||||
/// Create the NEG and NOT instructions out of SUB and XOR instructions.
|
||||
///
|
||||
static BinaryOperator *CreateNeg(Value *Op, const Twine &Name = "",
|
||||
Instruction *InsertBefore = nullptr);
|
||||
@ -305,16 +301,14 @@ public:
|
||||
static BinaryOperator *CreateNot(Value *Op, const Twine &Name,
|
||||
BasicBlock *InsertAtEnd);
|
||||
|
||||
/// isNeg, isFNeg, isNot - Check if the given Value is a
|
||||
/// NEG, FNeg, or NOT instruction.
|
||||
/// Check if the given Value is a NEG, FNeg, or NOT instruction.
|
||||
///
|
||||
static bool isNeg(const Value *V);
|
||||
static bool isFNeg(const Value *V, bool IgnoreZeroSign=false);
|
||||
static bool isNot(const Value *V);
|
||||
|
||||
/// getNegArgument, getNotArgument - Helper functions to extract the
|
||||
/// unary argument of a NEG, FNEG or NOT operation implemented via
|
||||
/// Sub, FSub, or Xor.
|
||||
/// Helper functions to extract the unary argument of a NEG, FNEG or NOT
|
||||
/// operation implemented via Sub, FSub, or Xor.
|
||||
///
|
||||
static const Value *getNegArgument(const Value *BinOp);
|
||||
static Value *getNegArgument( Value *BinOp);
|
||||
@ -327,35 +321,32 @@ public:
|
||||
return static_cast<BinaryOps>(Instruction::getOpcode());
|
||||
}
|
||||
|
||||
/// swapOperands - Exchange the two operands to this instruction.
|
||||
/// Exchange the two operands to this instruction.
|
||||
/// This instruction is safe to use on any binary instruction and
|
||||
/// does not modify the semantics of the instruction. If the instruction
|
||||
/// cannot be reversed (ie, it's a Div), then return true.
|
||||
///
|
||||
bool swapOperands();
|
||||
|
||||
/// setHasNoUnsignedWrap - Set or clear the nsw flag on this instruction,
|
||||
/// which must be an operator which supports this flag. See LangRef.html
|
||||
/// for the meaning of this flag.
|
||||
/// Set or clear the nsw flag on this instruction, which must be an operator
|
||||
/// which supports this flag. See LangRef.html for the meaning of this flag.
|
||||
void setHasNoUnsignedWrap(bool b = true);
|
||||
|
||||
/// setHasNoSignedWrap - Set or clear the nsw flag on this instruction,
|
||||
/// which must be an operator which supports this flag. See LangRef.html
|
||||
/// for the meaning of this flag.
|
||||
/// Set or clear the nsw flag on this instruction, which must be an operator
|
||||
/// which supports this flag. See LangRef.html for the meaning of this flag.
|
||||
void setHasNoSignedWrap(bool b = true);
|
||||
|
||||
/// setIsExact - Set or clear the exact flag on this instruction,
|
||||
/// which must be an operator which supports this flag. See LangRef.html
|
||||
/// for the meaning of this flag.
|
||||
/// Set or clear the exact flag on this instruction, which must be an operator
|
||||
/// which supports this flag. See LangRef.html for the meaning of this flag.
|
||||
void setIsExact(bool b = true);
|
||||
|
||||
/// hasNoUnsignedWrap - Determine whether the no unsigned wrap flag is set.
|
||||
/// Determine whether the no unsigned wrap flag is set.
|
||||
bool hasNoUnsignedWrap() const;
|
||||
|
||||
/// hasNoSignedWrap - Determine whether the no signed wrap flag is set.
|
||||
/// Determine whether the no signed wrap flag is set.
|
||||
bool hasNoSignedWrap() const;
|
||||
|
||||
/// isExact - Determine whether the exact flag is set.
|
||||
/// Determine whether the exact flag is set.
|
||||
bool isExact() const;
|
||||
|
||||
/// Convenience method to copy supported wrapping, exact, and fast-math flags
|
||||
@ -386,7 +377,7 @@ DEFINE_TRANSPARENT_OPERAND_ACCESSORS(BinaryOperator, Value)
|
||||
// CastInst Class
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
/// CastInst - This is the base class for all instructions that perform data
|
||||
/// This is the base class for all instructions that perform data
|
||||
/// casts. It is simply provided so that instruction category testing
|
||||
/// can be performed with code like:
|
||||
///
|
||||
|
Loading…
x
Reference in New Issue
Block a user