diff options
Diffstat (limited to 'llvm')
-rw-r--r-- | llvm/include/llvm/IR/Attributes.h | 15 | ||||
-rw-r--r-- | llvm/include/llvm/IR/BasicBlock.h | 13 | ||||
-rw-r--r-- | llvm/include/llvm/IR/CFG.h | 54 | ||||
-rw-r--r-- | llvm/include/llvm/IR/CallSite.h | 4 | ||||
-rw-r--r-- | llvm/include/llvm/IR/CallingConv.h | 12 | ||||
-rw-r--r-- | llvm/include/llvm/IR/DataLayout.h | 45 | ||||
-rw-r--r-- | llvm/include/llvm/IR/DebugInfo.h | 25 | ||||
-rw-r--r-- | llvm/include/llvm/IR/Dominators.h | 14 | ||||
-rw-r--r-- | llvm/include/llvm/IR/InlineAsm.h | 6 | ||||
-rw-r--r-- | llvm/include/llvm/IR/InstIterator.h | 34 | ||||
-rw-r--r-- | llvm/include/llvm/IR/InstrTypes.h | 46 | ||||
-rw-r--r-- | llvm/lib/IR/DataLayout.cpp | 27 | ||||
-rw-r--r-- | llvm/lib/IR/DebugInfo.cpp | 39 |
13 files changed, 182 insertions, 152 deletions
diff --git a/llvm/include/llvm/IR/Attributes.h b/llvm/include/llvm/IR/Attributes.h index adcb7266073..cbe681684a5 100644 --- a/llvm/include/llvm/IR/Attributes.h +++ b/llvm/include/llvm/IR/Attributes.h @@ -244,7 +244,8 @@ public: std::pair<unsigned, Optional<unsigned>> getAllocSizeArgs() const; std::string getAsString(bool InAttrGrp = false) const; - typedef const Attribute *iterator; + using iterator = const Attribute *; + iterator begin() const; iterator end() const; }; @@ -479,7 +480,7 @@ public: /// \brief Return the attributes at the index as a string. std::string getAsString(unsigned Index, bool InAttrGrp = false) const; - typedef ArrayRef<Attribute>::iterator iterator; + using iterator = ArrayRef<Attribute>::iterator; iterator begin(unsigned Slot) const; iterator end(unsigned Slot) const; @@ -662,11 +663,11 @@ public: bool empty() const { return Attrs.none(); } // Iterators for target-dependent attributes. - typedef std::pair<std::string, std::string> td_type; - typedef std::map<std::string, std::string>::iterator td_iterator; - typedef std::map<std::string, std::string>::const_iterator td_const_iterator; - typedef iterator_range<td_iterator> td_range; - typedef iterator_range<td_const_iterator> td_const_range; + using td_type = std::pair<std::string, std::string>; + using td_iterator = std::map<std::string, std::string>::iterator; + using td_const_iterator = std::map<std::string, std::string>::const_iterator; + using td_range = iterator_range<td_iterator>; + using td_const_range = iterator_range<td_const_iterator>; td_iterator td_begin() { return TargetDepAttrs.begin(); } td_iterator td_end() { return TargetDepAttrs.end(); } diff --git a/llvm/include/llvm/IR/BasicBlock.h b/llvm/include/llvm/IR/BasicBlock.h index bd210e1abf3..97989cf5c65 100644 --- a/llvm/include/llvm/IR/BasicBlock.h +++ b/llvm/include/llvm/IR/BasicBlock.h @@ -21,6 +21,7 @@ #include "llvm/IR/SymbolTableListTraits.h" #include "llvm/IR/Value.h" #include "llvm/Support/CBindingWrapping.h" +#include "llvm/Support/Compiler.h" #include "llvm-c/Types.h" #include <cassert> #include <cstddef> @@ -31,7 +32,9 @@ class CallInst; class Function; class LandingPadInst; class LLVMContext; +class Module; class TerminatorInst; +class ValueSymbolTable; /// \brief LLVM Basic Block Representation /// @@ -51,7 +54,7 @@ class TerminatorInst; class BasicBlock : public Value, // Basic blocks are data objects also public ilist_node_with_parent<BasicBlock, Function> { public: - typedef SymbolTableList<Instruction> InstListType; + using InstListType = SymbolTableList<Instruction>; private: friend class BlockAddress; @@ -80,10 +83,10 @@ public: LLVMContext &getContext() const; /// Instruction iterators... - typedef InstListType::iterator iterator; - typedef InstListType::const_iterator const_iterator; - typedef InstListType::reverse_iterator reverse_iterator; - typedef InstListType::const_reverse_iterator const_reverse_iterator; + using iterator = InstListType::iterator; + using const_iterator = InstListType::const_iterator; + using reverse_iterator = InstListType::reverse_iterator; + using const_reverse_iterator = InstListType::const_reverse_iterator; /// \brief Creates a new BasicBlock. /// diff --git a/llvm/include/llvm/IR/CFG.h b/llvm/include/llvm/IR/CFG.h index 52de11a06ba..e259e42e1ce 100644 --- a/llvm/include/llvm/IR/CFG.h +++ b/llvm/include/llvm/IR/CFG.h @@ -37,9 +37,9 @@ namespace llvm { template <class Ptr, class USE_iterator> // Predecessor Iterator class PredIterator : public std::iterator<std::forward_iterator_tag, Ptr, ptrdiff_t, Ptr*, Ptr*> { - typedef std::iterator<std::forward_iterator_tag, Ptr, ptrdiff_t, Ptr*, - Ptr*> super; - typedef PredIterator<Ptr, USE_iterator> Self; + using super = + std::iterator<std::forward_iterator_tag, Ptr, ptrdiff_t, Ptr*, Ptr*>; + using Self = PredIterator<Ptr, USE_iterator>; USE_iterator It; inline void advancePastNonTerminators() { @@ -49,8 +49,8 @@ class PredIterator : public std::iterator<std::forward_iterator_tag, } public: - typedef typename super::pointer pointer; - typedef typename super::reference reference; + using pointer = typename super::pointer; + using reference = typename super::reference; PredIterator() = default; explicit inline PredIterator(Ptr *bb) : It(bb->user_begin()) { @@ -90,11 +90,11 @@ public: } }; -typedef PredIterator<BasicBlock, Value::user_iterator> pred_iterator; -typedef PredIterator<const BasicBlock, - Value::const_user_iterator> const_pred_iterator; -typedef iterator_range<pred_iterator> pred_range; -typedef iterator_range<const_pred_iterator> pred_const_range; +using pred_iterator = PredIterator<BasicBlock, Value::user_iterator>; +using const_pred_iterator = + PredIterator<const BasicBlock, Value::const_user_iterator>; +using pred_range = iterator_range<pred_iterator>; +using pred_const_range = iterator_range<const_pred_iterator>; inline pred_iterator pred_begin(BasicBlock *BB) { return pred_iterator(BB); } inline const_pred_iterator pred_begin(const BasicBlock *BB) { @@ -118,12 +118,12 @@ inline pred_const_range predecessors(const BasicBlock *BB) { // BasicBlock succ_iterator helpers //===----------------------------------------------------------------------===// -typedef TerminatorInst::SuccIterator<TerminatorInst *, BasicBlock> - succ_iterator; -typedef TerminatorInst::SuccIterator<const TerminatorInst *, const BasicBlock> - succ_const_iterator; -typedef iterator_range<succ_iterator> succ_range; -typedef iterator_range<succ_const_iterator> succ_const_range; +using succ_iterator = + TerminatorInst::SuccIterator<TerminatorInst *, BasicBlock>; +using succ_const_iterator = + TerminatorInst::SuccIterator<const TerminatorInst *, const BasicBlock>; +using succ_range = iterator_range<succ_iterator>; +using succ_const_range = iterator_range<succ_const_iterator>; inline succ_iterator succ_begin(BasicBlock *BB) { return succ_iterator(BB->getTerminator()); @@ -160,8 +160,8 @@ struct isPodLike<TerminatorInst::SuccIterator<T, U>> { // graph of basic blocks... template <> struct GraphTraits<BasicBlock*> { - typedef BasicBlock *NodeRef; - typedef succ_iterator ChildIteratorType; + using NodeRef = BasicBlock *; + using ChildIteratorType = succ_iterator; static NodeRef getEntryNode(BasicBlock *BB) { return BB; } static ChildIteratorType child_begin(NodeRef N) { return succ_begin(N); } @@ -169,8 +169,8 @@ template <> struct GraphTraits<BasicBlock*> { }; template <> struct GraphTraits<const BasicBlock*> { - typedef const BasicBlock *NodeRef; - typedef succ_const_iterator ChildIteratorType; + using NodeRef = const BasicBlock *; + using ChildIteratorType = succ_const_iterator; static NodeRef getEntryNode(const BasicBlock *BB) { return BB; } @@ -184,16 +184,18 @@ template <> struct GraphTraits<const BasicBlock*> { // instead of the successor edges. // template <> struct GraphTraits<Inverse<BasicBlock*>> { - typedef BasicBlock *NodeRef; - typedef pred_iterator ChildIteratorType; + using NodeRef = BasicBlock *; + using ChildIteratorType = pred_iterator; + static NodeRef getEntryNode(Inverse<BasicBlock *> G) { return G.Graph; } static ChildIteratorType child_begin(NodeRef N) { return pred_begin(N); } static ChildIteratorType child_end(NodeRef N) { return pred_end(N); } }; template <> struct GraphTraits<Inverse<const BasicBlock*>> { - typedef const BasicBlock *NodeRef; - typedef const_pred_iterator ChildIteratorType; + using NodeRef = const BasicBlock *; + using ChildIteratorType = const_pred_iterator; + static NodeRef getEntryNode(Inverse<const BasicBlock *> G) { return G.Graph; } static ChildIteratorType child_begin(NodeRef N) { return pred_begin(N); } static ChildIteratorType child_end(NodeRef N) { return pred_end(N); } @@ -211,7 +213,7 @@ template <> struct GraphTraits<Function*> : public GraphTraits<BasicBlock*> { static NodeRef getEntryNode(Function *F) { return &F->getEntryBlock(); } // nodes_iterator/begin/end - Allow iteration over all nodes in the graph - typedef pointer_iterator<Function::iterator> nodes_iterator; + using nodes_iterator = pointer_iterator<Function::iterator>; static nodes_iterator nodes_begin(Function *F) { return nodes_iterator(F->begin()); @@ -228,7 +230,7 @@ template <> struct GraphTraits<const Function*> : static NodeRef getEntryNode(const Function *F) { return &F->getEntryBlock(); } // nodes_iterator/begin/end - Allow iteration over all nodes in the graph - typedef pointer_iterator<Function::const_iterator> nodes_iterator; + using nodes_iterator = pointer_iterator<Function::const_iterator>; static nodes_iterator nodes_begin(const Function *F) { return nodes_iterator(F->begin()); diff --git a/llvm/include/llvm/IR/CallSite.h b/llvm/include/llvm/IR/CallSite.h index d61431a51a9..4a806ab501e 100644 --- a/llvm/include/llvm/IR/CallSite.h +++ b/llvm/include/llvm/IR/CallSite.h @@ -207,7 +207,7 @@ public: /// The type of iterator to use when looping over actual arguments at this /// call site. - typedef IterTy arg_iterator; + using arg_iterator = IterTy; iterator_range<IterTy> args() const { return make_range(arg_begin(), arg_end()); @@ -231,7 +231,7 @@ public: /// Type of iterator to use when looping over data operands at this call site /// (see below). - typedef IterTy data_operand_iterator; + using data_operand_iterator = IterTy; /// data_operands_begin/data_operands_end - Return iterators iterating over /// the call / invoke argument list and bundle operands. For invokes, this is diff --git a/llvm/include/llvm/IR/CallingConv.h b/llvm/include/llvm/IR/CallingConv.h index 604e99c8b52..39fb3f1c791 100644 --- a/llvm/include/llvm/IR/CallingConv.h +++ b/llvm/include/llvm/IR/CallingConv.h @@ -1,4 +1,4 @@ -//===-- llvm/CallingConv.h - LLVM Calling Conventions -----------*- C++ -*-===// +//===- llvm/CallingConv.h - LLVM Calling Conventions ------------*- C++ -*-===// // // The LLVM Compiler Infrastructure // @@ -20,8 +20,9 @@ namespace llvm { /// the well-known calling conventions. /// namespace CallingConv { + /// LLVM IR allows to use arbitrary numbers as calling convention identifiers. - typedef unsigned ID; + using ID = unsigned; /// A set of enums which specify the assigned numeric values for known llvm /// calling conventions. @@ -203,8 +204,9 @@ namespace CallingConv { /// The highest possible calling convention ID. Must be some 2^k - 1. MaxID = 1023 }; -} // End CallingConv namespace -} // End llvm namespace +} // end namespace CallingConv + +} // end namespace llvm -#endif +#endif // LLVM_IR_CALLINGCONV_H diff --git a/llvm/include/llvm/IR/DataLayout.h b/llvm/include/llvm/IR/DataLayout.h index 1930d48577d..c1d398f17b5 100644 --- a/llvm/include/llvm/IR/DataLayout.h +++ b/llvm/include/llvm/IR/DataLayout.h @@ -1,4 +1,4 @@ -//===--------- llvm/DataLayout.h - Data size & alignment info ---*- C++ -*-===// +//===- llvm/DataLayout.h - Data size & alignment info -----------*- C++ -*-===// // // The LLVM Compiler Infrastructure // @@ -20,27 +20,32 @@ #ifndef LLVM_IR_DATALAYOUT_H #define LLVM_IR_DATALAYOUT_H +#include "llvm/ADT/ArrayRef.h" #include "llvm/ADT/SmallVector.h" #include "llvm/ADT/STLExtras.h" +#include "llvm/ADT/StringRef.h" #include "llvm/IR/DerivedTypes.h" #include "llvm/IR/Type.h" #include "llvm/Pass.h" -#include "llvm/Support/DataTypes.h" +#include "llvm/Support/Casting.h" +#include "llvm/Support/ErrorHandling.h" +#include "llvm/Support/MathExtras.h" +#include <cassert> +#include <cstdint> +#include <string> // This needs to be outside of the namespace, to avoid conflict with llvm-c // decl. -typedef struct LLVMOpaqueTargetData *LLVMTargetDataRef; +using LLVMTargetDataRef = struct LLVMOpaqueTargetData *; namespace llvm { -class Value; -class StructType; -class StructLayout; -class Triple; class GlobalVariable; class LLVMContext; -template<typename T> -class ArrayRef; +class Module; +class StructLayout; +class Triple; +class Value; /// Enum used to categorize the alignment types stored by LayoutAlignElem enum AlignTypeEnum { @@ -72,6 +77,7 @@ struct LayoutAlignElem { static LayoutAlignElem get(AlignTypeEnum align_type, unsigned abi_align, unsigned pref_align, uint32_t bit_width); + bool operator==(const LayoutAlignElem &rhs) const; }; @@ -90,6 +96,7 @@ struct PointerAlignElem { /// Initializer static PointerAlignElem get(uint32_t AddressSpace, unsigned ABIAlign, unsigned PrefAlign, uint32_t TypeByteWidth); + bool operator==(const PointerAlignElem &rhs) const; }; @@ -121,7 +128,7 @@ private: /// \brief Primitive type alignment data. This is sorted by type and bit /// width during construction. - typedef SmallVector<LayoutAlignElem, 16> AlignmentsTy; + using AlignmentsTy = SmallVector<LayoutAlignElem, 16>; AlignmentsTy Alignments; AlignmentsTy::const_iterator @@ -136,7 +143,7 @@ private: /// \brief The string representation used to create this DataLayout std::string StringRepresentation; - typedef SmallVector<PointerAlignElem, 8> PointersTy; + using PointersTy = SmallVector<PointerAlignElem, 8>; PointersTy Pointers; PointersTy::const_iterator @@ -147,7 +154,7 @@ private: PointersTy::iterator findPointerLowerBound(uint32_t AddressSpace); // The StructType -> StructLayout map. - mutable void *LayoutMap; + mutable void *LayoutMap = nullptr; /// Pointers in these address spaces are non-integral, and don't have a /// well-defined bitwise representation. @@ -172,16 +179,16 @@ private: public: /// Constructs a DataLayout from a specification string. See reset(). - explicit DataLayout(StringRef LayoutDescription) : LayoutMap(nullptr) { + explicit DataLayout(StringRef LayoutDescription) { reset(LayoutDescription); } /// Initialize target data from properties stored in the module. explicit DataLayout(const Module *M); - void init(const Module *M); + DataLayout(const DataLayout &DL) { *this = DL; } - DataLayout(const DataLayout &DL) : LayoutMap(nullptr) { *this = DL; } + ~DataLayout(); // Not virtual, do not subclass this class DataLayout &operator=(const DataLayout &DL) { clear(); @@ -200,7 +207,7 @@ public: bool operator==(const DataLayout &Other) const; bool operator!=(const DataLayout &Other) const { return !(*this == Other); } - ~DataLayout(); // Not virtual, do not subclass this class + void init(const Module *M); /// Parse a data layout string (with fallback to default values). void reset(StringRef LayoutDescription); @@ -489,6 +496,7 @@ class StructLayout { unsigned IsPadded : 1; unsigned NumElements : 31; uint64_t MemberOffsets[1]; // variable sized array! + public: uint64_t getSizeInBytes() const { return StructSize; } @@ -515,6 +523,7 @@ public: private: friend class DataLayout; // Only DataLayout can create this class + StructLayout(StructType *ST, const DataLayout &DL); }; @@ -560,6 +569,6 @@ inline uint64_t DataLayout::getTypeSizeInBits(Type *Ty) const { } } -} // End llvm namespace +} // end namespace llvm -#endif +#endif // LLVM_IR_DATALAYOUT_H diff --git a/llvm/include/llvm/IR/DebugInfo.h b/llvm/include/llvm/IR/DebugInfo.h index 04f46197b1c..1d8e7e2855f 100644 --- a/llvm/include/llvm/IR/DebugInfo.h +++ b/llvm/include/llvm/IR/DebugInfo.h @@ -21,17 +21,12 @@ #include "llvm/ADT/SmallVector.h" #include "llvm/ADT/iterator_range.h" #include "llvm/IR/DebugInfoMetadata.h" -#include "llvm/Support/Casting.h" -#include "llvm/Support/Dwarf.h" -#include "llvm/Support/ErrorHandling.h" -#include <iterator> namespace llvm { -class Module; + class DbgDeclareInst; class DbgValueInst; -template <typename K, typename V, typename KeyInfoT, typename BucketT> -class DenseMap; +class Module; /// \brief Find subprogram that is enclosing this scope. DISubprogram *getDISubprogram(const MDNode *Scope); @@ -95,13 +90,13 @@ private: bool addScope(DIScope *Scope); public: - typedef SmallVectorImpl<DICompileUnit *>::const_iterator - compile_unit_iterator; - typedef SmallVectorImpl<DISubprogram *>::const_iterator subprogram_iterator; - typedef SmallVectorImpl<DIGlobalVariableExpression *>::const_iterator - global_variable_expression_iterator; - typedef SmallVectorImpl<DIType *>::const_iterator type_iterator; - typedef SmallVectorImpl<DIScope *>::const_iterator scope_iterator; + using compile_unit_iterator = + SmallVectorImpl<DICompileUnit *>::const_iterator; + using subprogram_iterator = SmallVectorImpl<DISubprogram *>::const_iterator; + using global_variable_expression_iterator = + SmallVectorImpl<DIGlobalVariableExpression *>::const_iterator; + using type_iterator = SmallVectorImpl<DIType *>::const_iterator; + using scope_iterator = SmallVectorImpl<DIScope *>::const_iterator; iterator_range<compile_unit_iterator> compile_units() const { return make_range(CUs.begin(), CUs.end()); @@ -140,4 +135,4 @@ private: } // end namespace llvm -#endif +#endif // LLVM_IR_DEBUGINFO_H diff --git a/llvm/include/llvm/IR/Dominators.h b/llvm/include/llvm/IR/Dominators.h index 8f6c85f53ef..def91e73eb1 100644 --- a/llvm/include/llvm/IR/Dominators.h +++ b/llvm/include/llvm/IR/Dominators.h @@ -42,7 +42,7 @@ extern template void Calculate<Function, Inverse<BasicBlock *>>( DominatorTreeBaseByGraphTraits<GraphTraits<Inverse<BasicBlock *>>> &DT, Function &F); -typedef DomTreeNodeBase<BasicBlock> DomTreeNode; +using DomTreeNode = DomTreeNodeBase<BasicBlock>; class BasicBlockEdge { const BasicBlock *Start; @@ -70,7 +70,7 @@ public: }; template <> struct DenseMapInfo<BasicBlockEdge> { - typedef DenseMapInfo<const BasicBlock *> BBInfo; + using BBInfo = DenseMapInfo<const BasicBlock *>; static unsigned getHashValue(const BasicBlockEdge *V); @@ -113,7 +113,7 @@ template <> struct DenseMapInfo<BasicBlockEdge> { /// preceding statements; this is stated only to assist human understanding. class DominatorTree : public DominatorTreeBase<BasicBlock> { public: - typedef DominatorTreeBase<BasicBlock> Base; + using Base = DominatorTreeBase<BasicBlock>; DominatorTree() : DominatorTreeBase<BasicBlock>(false) {} explicit DominatorTree(Function &F) : DominatorTreeBase<BasicBlock>(false) { @@ -168,9 +168,9 @@ public: // iterable by generic graph iterators. template <class Node, class ChildIterator> struct DomTreeGraphTraitsBase { - typedef Node *NodeRef; - typedef ChildIterator ChildIteratorType; - typedef df_iterator<Node *, df_iterator_default_set<Node*>> nodes_iterator; + using NodeRef = Node *; + using ChildIteratorType = ChildIterator; + using nodes_iterator = df_iterator<Node *, df_iterator_default_set<Node*>>; static NodeRef getEntryNode(NodeRef N) { return N; } static ChildIteratorType child_begin(NodeRef N) { return N->begin(); } @@ -212,7 +212,7 @@ class DominatorTreeAnalysis : public AnalysisInfoMixin<DominatorTreeAnalysis> { public: /// \brief Provide the result typedef for this analysis pass. - typedef DominatorTree Result; + using Result = DominatorTree; /// \brief Run the analysis pass over a function and produce a dominator tree. DominatorTree run(Function &F, FunctionAnalysisManager &); diff --git a/llvm/include/llvm/IR/InlineAsm.h b/llvm/include/llvm/IR/InlineAsm.h index 5d2f72d211f..a57e7d63012 100644 --- a/llvm/include/llvm/IR/InlineAsm.h +++ b/llvm/include/llvm/IR/InlineAsm.h @@ -95,7 +95,7 @@ public: isClobber // '~x' }; - typedef std::vector<std::string> ConstraintCodeVector; + using ConstraintCodeVector = std::vector<std::string>; struct SubConstraintInfo { /// MatchingInput - If this is not -1, this is an output constraint where an @@ -112,9 +112,9 @@ public: SubConstraintInfo() = default; }; - typedef std::vector<SubConstraintInfo> SubConstraintInfoVector; + using SubConstraintInfoVector = std::vector<SubConstraintInfo>; struct ConstraintInfo; - typedef std::vector<ConstraintInfo> ConstraintInfoVector; + using ConstraintInfoVector = std::vector<ConstraintInfo>; struct ConstraintInfo { /// Type - The basic type of the constraint: input/output/clobber diff --git a/llvm/include/llvm/IR/InstIterator.h b/llvm/include/llvm/IR/InstIterator.h index 28fc473f149..2988fc935dd 100644 --- a/llvm/include/llvm/IR/InstIterator.h +++ b/llvm/include/llvm/IR/InstIterator.h @@ -31,20 +31,20 @@ namespace llvm { // inst_iterator and const_inst_iterator's. // template <class BB_t, class BB_i_t, class BI_t, class II_t> class InstIterator { - typedef BB_t BBty; - typedef BB_i_t BBIty; - typedef BI_t BIty; - typedef II_t IIty; + using BBty = BB_t; + using BBIty = BB_i_t; + using BIty = BI_t; + using IIty = II_t; BB_t *BBs; // BasicBlocksType BB_i_t BB; // BasicBlocksType::iterator BI_t BI; // BasicBlock::iterator public: - typedef std::bidirectional_iterator_tag iterator_category; - typedef IIty value_type; - typedef signed difference_type; - typedef IIty* pointer; - typedef IIty& reference; + using iterator_category = std::bidirectional_iterator_tag; + using value_type = IIty; + using difference_type = signed; + using pointer = IIty *; + using reference = IIty &; // Default constructor InstIterator() = default; @@ -119,13 +119,15 @@ private: } }; -typedef InstIterator<SymbolTableList<BasicBlock>, Function::iterator, - BasicBlock::iterator, Instruction> inst_iterator; -typedef InstIterator<const SymbolTableList<BasicBlock>, - Function::const_iterator, BasicBlock::const_iterator, - const Instruction> const_inst_iterator; -typedef iterator_range<inst_iterator> inst_range; -typedef iterator_range<const_inst_iterator> const_inst_range; +using inst_iterator = + InstIterator<SymbolTableList<BasicBlock>, Function::iterator, + BasicBlock::iterator, Instruction>; +using const_inst_iterator = + InstIterator<const SymbolTableList<BasicBlock>, + Function::const_iterator, BasicBlock::const_iterator, + const Instruction>; +using inst_range = iterator_range<inst_iterator>; +using const_inst_range = iterator_range<const_inst_iterator>; inline inst_iterator inst_begin(Function *F) { return inst_iterator(*F); } inline inst_iterator inst_end(Function *F) { return inst_iterator(*F, true); } diff --git a/llvm/include/llvm/IR/InstrTypes.h b/llvm/include/llvm/IR/InstrTypes.h index 6795b029cce..d16a5d318d7 100644 --- a/llvm/include/llvm/IR/InstrTypes.h +++ b/llvm/include/llvm/IR/InstrTypes.h @@ -1,4 +1,4 @@ -//===-- llvm/InstrTypes.h - Important Instruction subclasses ----*- C++ -*-===// +//===- llvm/InstrTypes.h - Important Instruction subclasses -----*- C++ -*-===// // // The LLVM Compiler Infrastructure // @@ -29,7 +29,9 @@ #include "llvm/IR/Instruction.h" #include "llvm/IR/LLVMContext.h" #include "llvm/IR/OperandTraits.h" +#include "llvm/IR/Type.h" #include "llvm/IR/User.h" +#include "llvm/IR/Value.h" #include "llvm/Support/Casting.h" #include "llvm/Support/ErrorHandling.h" #include <algorithm> @@ -114,17 +116,17 @@ public: template <class Term, class BB> // Successor Iterator class SuccIterator : public std::iterator<std::random_access_iterator_tag, BB, int, BB *, BB *> { - typedef std::iterator<std::random_access_iterator_tag, BB, int, BB *, BB *> - super; + using super = + std::iterator<std::random_access_iterator_tag, BB, int, BB *, BB *>; public: - typedef typename super::pointer pointer; - typedef typename super::reference reference; + using pointer = typename super::pointer; + using reference = typename super::reference; private: Term TermInst; unsigned idx; - typedef SuccIterator<Term, BB> Self; + using Self = SuccIterator<Term, BB>; inline bool index_is_valid(unsigned idx) { return idx < TermInst->getNumSuccessors(); @@ -260,11 +262,11 @@ public: } }; - typedef SuccIterator<TerminatorInst *, BasicBlock> succ_iterator; - typedef SuccIterator<const TerminatorInst *, const BasicBlock> - succ_const_iterator; - typedef iterator_range<succ_iterator> succ_range; - typedef iterator_range<succ_const_iterator> succ_const_range; + using succ_iterator = SuccIterator<TerminatorInst *, BasicBlock>; + using succ_const_iterator = + SuccIterator<const TerminatorInst *, const BasicBlock>; + using succ_range = iterator_range<succ_iterator>; + using succ_const_range = iterator_range<succ_const_iterator>; private: inline succ_iterator succ_begin() { return succ_iterator(this); } @@ -341,14 +343,16 @@ DEFINE_TRANSPARENT_OPERAND_ACCESSORS(UnaryInstruction, Value) class BinaryOperator : public Instruction { protected: - void init(BinaryOps iType); BinaryOperator(BinaryOps iType, Value *S1, Value *S2, Type *Ty, const Twine &Name, Instruction *InsertBefore); BinaryOperator(BinaryOps iType, Value *S1, Value *S2, Type *Ty, const Twine &Name, BasicBlock *InsertAtEnd); + void init(BinaryOps iType); + // Note: Instruction needs to be a friend here to call cloneImpl. friend class Instruction; + BinaryOperator *cloneImpl() const; public: @@ -1125,8 +1129,6 @@ DEFINE_TRANSPARENT_OPERAND_ACCESSORS(CmpInst, Value) //===----------------------------------------------------------------------===// class FuncletPadInst : public Instruction { private: - void init(Value *ParentPad, ArrayRef<Value *> Args, const Twine &NameStr); - FuncletPadInst(const FuncletPadInst &CPI); explicit FuncletPadInst(Instruction::FuncletPadOps Op, Value *ParentPad, @@ -1136,11 +1138,14 @@ private: ArrayRef<Value *> Args, unsigned Values, const Twine &NameStr, BasicBlock *InsertAtEnd); + void init(Value *ParentPad, ArrayRef<Value *> Args, const Twine &NameStr); + protected: // Note: Instruction needs to be a friend here to call cloneImpl. friend class Instruction; friend class CatchPadInst; friend class CleanupPadInst; + FuncletPadInst *cloneImpl() const; public: @@ -1261,7 +1266,8 @@ public: ArrayRef<InputTy> inputs() const { return Inputs; } - typedef typename std::vector<InputTy>::const_iterator input_iterator; + using input_iterator = typename std::vector<InputTy>::const_iterator; + size_t input_size() const { return Inputs.size(); } input_iterator input_begin() const { return Inputs.begin(); } input_iterator input_end() const { return Inputs.end(); } @@ -1269,8 +1275,8 @@ public: StringRef getTag() const { return Tag; } }; -typedef OperandBundleDefT<Value *> OperandBundleDef; -typedef OperandBundleDefT<const Value *> ConstOperandBundleDef; +using OperandBundleDef = OperandBundleDefT<Value *>; +using ConstOperandBundleDef = OperandBundleDefT<const Value *>; /// \brief A mixin to add operand bundle functionality to llvm instruction /// classes. @@ -1553,8 +1559,8 @@ protected: return OperandBundleUse(BOI.Tag, Inputs); } - typedef BundleOpInfo *bundle_op_iterator; - typedef const BundleOpInfo *const_bundle_op_iterator; + using bundle_op_iterator = BundleOpInfo *; + using const_bundle_op_iterator = const BundleOpInfo *; /// \brief Return the start of the list of BundleOpInfo instances associated /// with this OperandBundleUser. @@ -1654,6 +1660,6 @@ protected: } }; -} // end llvm namespace +} // end namespace llvm #endif // LLVM_IR_INSTRTYPES_H diff --git a/llvm/lib/IR/DataLayout.cpp b/llvm/lib/IR/DataLayout.cpp index 93bacdd2e80..c117d29b7f6 100644 --- a/llvm/lib/IR/DataLayout.cpp +++ b/llvm/lib/IR/DataLayout.cpp @@ -1,4 +1,4 @@ -//===-- DataLayout.cpp - Data size & alignment routines --------------------==// +//===- DataLayout.cpp - Data size & alignment routines ---------------------==// // // The LLVM Compiler Infrastructure // @@ -16,21 +16,27 @@ // //===----------------------------------------------------------------------===// -#include "llvm/IR/DataLayout.h" #include "llvm/ADT/DenseMap.h" -#include "llvm/ADT/STLExtras.h" +#include "llvm/ADT/StringRef.h" #include "llvm/ADT/Triple.h" #include "llvm/IR/Constants.h" +#include "llvm/IR/DataLayout.h" #include "llvm/IR/DerivedTypes.h" #include "llvm/IR/GetElementPtrTypeIterator.h" +#include "llvm/IR/GlobalVariable.h" #include "llvm/IR/Module.h" +#include "llvm/IR/Type.h" +#include "llvm/IR/Value.h" +#include "llvm/Support/Casting.h" #include "llvm/Support/ErrorHandling.h" -#include "llvm/Support/ManagedStatic.h" #include "llvm/Support/MathExtras.h" -#include "llvm/Support/Mutex.h" -#include "llvm/Support/raw_ostream.h" #include <algorithm> +#include <cassert> +#include <cstdint> #include <cstdlib> +#include <tuple> +#include <utility> + using namespace llvm; //===----------------------------------------------------------------------===// @@ -73,7 +79,6 @@ StructLayout::StructLayout(StructType *ST, const DataLayout &DL) { } } - /// getElementContainingOffset - Given a valid offset into the structure, /// return the structure index that contains it. unsigned StructLayout::getElementContainingOffset(uint64_t Offset) const { @@ -338,7 +343,7 @@ void DataLayout::parseSpecifier(StringRef Desc) { break; } case 'n': // Native integer types. - for (;;) { + while (true) { unsigned Width = getInt(Tok); if (Width == 0) report_fatal_error( @@ -393,7 +398,7 @@ void DataLayout::parseSpecifier(StringRef Desc) { } } -DataLayout::DataLayout(const Module *M) : LayoutMap(nullptr) { +DataLayout::DataLayout(const Module *M) { init(M); } @@ -522,7 +527,7 @@ unsigned DataLayout::getAlignmentInfo(AlignTypeEnum AlignType, namespace { class StructLayoutMap { - typedef DenseMap<StructType*, StructLayout*> LayoutInfoTy; + using LayoutInfoTy = DenseMap<StructType*, StructLayout*>; LayoutInfoTy LayoutInfo; public: @@ -577,7 +582,6 @@ const StructLayout *DataLayout::getStructLayout(StructType *Ty) const { return L; } - unsigned DataLayout::getPointerABIAlignment(unsigned AS) const { PointersTy::const_iterator I = findPointerLowerBound(AS); if (I == Pointers.end() || I->AddressSpace != AS) { @@ -778,4 +782,3 @@ unsigned DataLayout::getPreferredAlignment(const GlobalVariable *GV) const { unsigned DataLayout::getPreferredAlignmentLog(const GlobalVariable *GV) const { return Log2_32(getPreferredAlignment(GV)); } - diff --git a/llvm/lib/IR/DebugInfo.cpp b/llvm/lib/IR/DebugInfo.cpp index c5d39c54430..ca3828420a7 100644 --- a/llvm/lib/IR/DebugInfo.cpp +++ b/llvm/lib/IR/DebugInfo.cpp @@ -1,4 +1,4 @@ -//===--- DebugInfo.cpp - Debug Information Helper Classes -----------------===// +//===- DebugInfo.cpp - Debug Information Helper Classes -------------------===// // // The LLVM Compiler Infrastructure // @@ -12,22 +12,29 @@ // //===----------------------------------------------------------------------===// -#include "llvm/IR/DebugInfo.h" -#include "LLVMContextImpl.h" -#include "llvm/ADT/STLExtras.h" +#include "llvm/ADT/DenseMap.h" +#include "llvm/ADT/DenseSet.h" +#include "llvm/ADT/None.h" #include "llvm/ADT/SmallPtrSet.h" +#include "llvm/ADT/SmallVector.h" +#include "llvm/ADT/StringRef.h" +#include "llvm/IR/BasicBlock.h" #include "llvm/IR/Constants.h" -#include "llvm/IR/DIBuilder.h" -#include "llvm/IR/DerivedTypes.h" +#include "llvm/IR/DebugInfo.h" +#include "llvm/IR/DebugInfoMetadata.h" +#include "llvm/IR/DebugLoc.h" +#include "llvm/IR/Function.h" #include "llvm/IR/GVMaterializer.h" -#include "llvm/IR/Instructions.h" +#include "llvm/IR/Instruction.h" #include "llvm/IR/IntrinsicInst.h" -#include "llvm/IR/Intrinsics.h" +#include "llvm/IR/LLVMContext.h" +#include "llvm/IR/Metadata.h" #include "llvm/IR/Module.h" -#include "llvm/IR/ValueHandle.h" -#include "llvm/Support/Debug.h" -#include "llvm/Support/Dwarf.h" -#include "llvm/Support/raw_ostream.h" +#include "llvm/Support/Casting.h" +#include <algorithm> +#include <cassert> +#include <utility> + using namespace llvm; using namespace llvm::dwarf; @@ -249,7 +256,7 @@ bool DebugInfoFinder::addScope(DIScope *Scope) { return true; } -static llvm::MDNode *stripDebugLocFromLoopID(llvm::MDNode *N) { +static MDNode *stripDebugLocFromLoopID(MDNode *N) { assert(N->op_begin() != N->op_end() && "Missing self reference?"); // if there is no debug location, we do not have to rewrite this MDNode. @@ -288,7 +295,7 @@ bool llvm::stripDebugInfo(Function &F) { F.setSubprogram(nullptr); } - llvm::DenseMap<llvm::MDNode*, llvm::MDNode*> LoopIDsMap; + DenseMap<MDNode*, MDNode*> LoopIDsMap; for (BasicBlock &BB : F) { for (auto II = BB.begin(), End = BB.end(); II != End;) { Instruction &I = *II++; // We may delete the instruction, increment now. @@ -525,7 +532,7 @@ private: void traverse(MDNode *); }; -} // Anonymous namespace. +} // end anonymous namespace void DebugTypeInfoRemoval::traverse(MDNode *N) { if (!N || Replacements.count(N)) @@ -590,7 +597,7 @@ bool llvm::stripNonLineTableDebugInfo(Module &M) { GV.eraseMetadata(LLVMContext::MD_dbg); DebugTypeInfoRemoval Mapper(M.getContext()); - auto remap = [&](llvm::MDNode *Node) -> llvm::MDNode * { + auto remap = [&](MDNode *Node) -> MDNode * { if (!Node) return nullptr; Mapper.traverseAndRemap(Node); |