Update clang to r339409.
Change-Id: I800772d2d838223be1f6b40d490c4591b937fca2
diff --git a/linux-x64/clang/include/llvm/IR/DIBuilder.h b/linux-x64/clang/include/llvm/IR/DIBuilder.h
index aa8a8ec..06c9421 100644
--- a/linux-x64/clang/include/llvm/IR/DIBuilder.h
+++ b/linux-x64/clang/include/llvm/IR/DIBuilder.h
@@ -46,6 +46,7 @@
DICompileUnit *CUNode; ///< The one compile unit created by this DIBuiler.
Function *DeclareFn; ///< llvm.dbg.declare
Function *ValueFn; ///< llvm.dbg.value
+ Function *LabelFn; ///< llvm.dbg.label
SmallVector<Metadata *, 4> AllEnumTypes;
/// Track the RetainTypes, since they can be updated later on.
@@ -69,6 +70,9 @@
/// copy.
DenseMap<MDNode *, SmallVector<TrackingMDNodeRef, 1>> PreservedVariables;
+ /// Each subprogram's preserved labels.
+ DenseMap<MDNode *, SmallVector<TrackingMDNodeRef, 1>> PreservedLabels;
+
/// Create a temporary.
///
/// Create an \a temporary node and track it in \a UnresolvedNodes.
@@ -79,6 +83,10 @@
DIExpression *Expr, const DILocation *DL,
BasicBlock *InsertBB, Instruction *InsertBefore);
+ /// Internal helper for insertLabel.
+ Instruction *insertLabel(DILabel *LabelInfo, const DILocation *DL,
+ BasicBlock *InsertBB, Instruction *InsertBefore);
+
/// Internal helper for insertDbgValueIntrinsic.
Instruction *
insertDbgValueIntrinsic(llvm::Value *Val, DILocalVariable *VarInfo,
@@ -237,10 +245,11 @@
/// \param Ty Original type.
/// \param BaseTy Base type. Ty is inherits from base.
/// \param BaseOffset Base offset.
+ /// \param VBPtrOffset Virtual base pointer offset.
/// \param Flags Flags to describe inheritance attribute,
/// e.g. private
DIDerivedType *createInheritance(DIType *Ty, DIType *BaseTy,
- uint64_t BaseOffset,
+ uint64_t BaseOffset, uint32_t VBPtrOffset,
DINode::DIFlags Flags);
/// Create debugging information entry for a member.
@@ -506,12 +515,15 @@
DINode::DIFlags Flags = DINode::FlagZero,
unsigned CC = 0);
- /// Create a new DIType* with "artificial" flag set.
- DIType *createArtificialType(DIType *Ty);
+ /// Create a distinct clone of \p SP with FlagArtificial set.
+ static DISubprogram *createArtificialSubprogram(DISubprogram *SP);
- /// Create a new DIType* with the "object pointer"
- /// flag set.
- DIType *createObjectPointerType(DIType *Ty);
+ /// Create a uniqued clone of \p Ty with FlagArtificial set.
+ static DIType *createArtificialType(DIType *Ty);
+
+ /// Create a uniqued clone of \p Ty with FlagObjectPointer and
+ /// FlagArtificial set.
+ static DIType *createObjectPointerType(DIType *Ty);
/// Create a permanent forward-declared type.
DICompositeType *createForwardDecl(unsigned Tag, StringRef Name,
@@ -591,6 +603,14 @@
DINode::DIFlags Flags = DINode::FlagZero,
uint32_t AlignInBits = 0);
+ /// Create a new descriptor for an label.
+ ///
+ /// \c Scope must be a \a DILocalScope, and thus its scope chain eventually
+ /// leads to a \a DISubprogram.
+ DILabel *
+ createLabel(DIScope *Scope, StringRef Name, DIFile *File, unsigned LineNo,
+ bool AlwaysPreserve = false);
+
/// Create a new descriptor for a parameter variable.
///
/// \c Scope must be a \a DILocalScope, and thus its scope chain eventually
@@ -782,6 +802,20 @@
DIExpression *Expr, const DILocation *DL,
Instruction *InsertBefore);
+ /// Insert a new llvm.dbg.label intrinsic call.
+ /// \param LabelInfo Label's debug info descriptor.
+ /// \param DL Debug info location.
+ /// \param InsertBefore Location for the new intrinsic.
+ Instruction *insertLabel(DILabel *LabelInfo, const DILocation *DL,
+ Instruction *InsertBefore);
+
+ /// Insert a new llvm.dbg.label intrinsic call.
+ /// \param LabelInfo Label's debug info descriptor.
+ /// \param DL Debug info location.
+ /// \param InsertAtEnd Location for the new intrinsic.
+ Instruction *insertLabel(DILabel *LabelInfo, const DILocation *DL,
+ BasicBlock *InsertAtEnd);
+
/// Insert a new llvm.dbg.value intrinsic call.
/// \param Val llvm::Value of the variable
/// \param VarInfo Variable's debug info descriptor.