mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-31 12:41:49 +01:00
DebugInfo: New metadata representation for global variables.
This patch reverses the edge from DIGlobalVariable to GlobalVariable. This will allow us to more easily preserve debug info metadata when manipulating global variables. Fixes PR30362. A program for upgrading test cases is attached to that bug. Differential Revision: http://reviews.llvm.org/D20147 llvm-svn: 281284
This commit is contained in:
parent
e9cf3722e5
commit
a9fbb2813b
@ -454,20 +454,21 @@ namespace llvm {
|
|||||||
/// \param Ty Variable Type.
|
/// \param Ty Variable Type.
|
||||||
/// \param isLocalToUnit Boolean flag indicate whether this variable is
|
/// \param isLocalToUnit Boolean flag indicate whether this variable is
|
||||||
/// externally visible or not.
|
/// externally visible or not.
|
||||||
/// \param Val llvm::Value of the variable.
|
/// \param Expr The location of the global relative to the attached
|
||||||
|
/// GlobalVariable.
|
||||||
/// \param Decl Reference to the corresponding declaration.
|
/// \param Decl Reference to the corresponding declaration.
|
||||||
DIGlobalVariable *createGlobalVariable(DIScope *Context, StringRef Name,
|
DIGlobalVariable *createGlobalVariable(DIScope *Context, StringRef Name,
|
||||||
StringRef LinkageName, DIFile *File,
|
StringRef LinkageName, DIFile *File,
|
||||||
unsigned LineNo, DIType *Ty,
|
unsigned LineNo, DIType *Ty,
|
||||||
bool isLocalToUnit,
|
bool isLocalToUnit,
|
||||||
llvm::Constant *Val,
|
DIExpression *Expr = nullptr,
|
||||||
MDNode *Decl = nullptr);
|
MDNode *Decl = nullptr);
|
||||||
|
|
||||||
/// Identical to createGlobalVariable
|
/// Identical to createGlobalVariable
|
||||||
/// except that the resulting DbgNode is temporary and meant to be RAUWed.
|
/// except that the resulting DbgNode is temporary and meant to be RAUWed.
|
||||||
DIGlobalVariable *createTempGlobalVariableFwdDecl(
|
DIGlobalVariable *createTempGlobalVariableFwdDecl(
|
||||||
DIScope *Context, StringRef Name, StringRef LinkageName, DIFile *File,
|
DIScope *Context, StringRef Name, StringRef LinkageName, DIFile *File,
|
||||||
unsigned LineNo, DIType *Ty, bool isLocalToUnit, llvm::Constant *Val,
|
unsigned LineNo, DIType *Ty, bool isLocalToUnit, DIExpression *Expr,
|
||||||
MDNode *Decl = nullptr);
|
MDNode *Decl = nullptr);
|
||||||
|
|
||||||
/// Create a new descriptor for an auto variable. This is a local variable
|
/// Create a new descriptor for an auto variable. This is a local variable
|
||||||
@ -514,6 +515,13 @@ namespace llvm {
|
|||||||
DIExpression *createBitPieceExpression(unsigned OffsetInBits,
|
DIExpression *createBitPieceExpression(unsigned OffsetInBits,
|
||||||
unsigned SizeInBits);
|
unsigned SizeInBits);
|
||||||
|
|
||||||
|
/// Create an expression for a variable that does not have an address, but
|
||||||
|
/// does have a constant value.
|
||||||
|
DIExpression *createConstantValueExpression(uint64_t Val) {
|
||||||
|
return DIExpression::get(
|
||||||
|
VMContext, {dwarf::DW_OP_constu, Val, dwarf::DW_OP_stack_value});
|
||||||
|
}
|
||||||
|
|
||||||
/// Create a new descriptor for the specified subprogram.
|
/// Create a new descriptor for the specified subprogram.
|
||||||
/// See comments in DISubprogram* for descriptions of these fields.
|
/// See comments in DISubprogram* for descriptions of these fields.
|
||||||
/// \param Scope Function scope.
|
/// \param Scope Function scope.
|
||||||
|
@ -1862,6 +1862,159 @@ public:
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/// \brief DWARF expression.
|
||||||
|
///
|
||||||
|
/// This is (almost) a DWARF expression that modifies the location of a
|
||||||
|
/// variable, or the location of a single piece of a variable, or (when using
|
||||||
|
/// DW_OP_stack_value) is the constant variable value.
|
||||||
|
///
|
||||||
|
/// FIXME: Instead of DW_OP_plus taking an argument, this should use DW_OP_const
|
||||||
|
/// and have DW_OP_plus consume the topmost elements on the stack.
|
||||||
|
///
|
||||||
|
/// TODO: Co-allocate the expression elements.
|
||||||
|
/// TODO: Separate from MDNode, or otherwise drop Distinct and Temporary
|
||||||
|
/// storage types.
|
||||||
|
class DIExpression : public MDNode {
|
||||||
|
friend class LLVMContextImpl;
|
||||||
|
friend class MDNode;
|
||||||
|
|
||||||
|
std::vector<uint64_t> Elements;
|
||||||
|
|
||||||
|
DIExpression(LLVMContext &C, StorageType Storage, ArrayRef<uint64_t> Elements)
|
||||||
|
: MDNode(C, DIExpressionKind, Storage, None),
|
||||||
|
Elements(Elements.begin(), Elements.end()) {}
|
||||||
|
~DIExpression() = default;
|
||||||
|
|
||||||
|
static DIExpression *getImpl(LLVMContext &Context,
|
||||||
|
ArrayRef<uint64_t> Elements, StorageType Storage,
|
||||||
|
bool ShouldCreate = true);
|
||||||
|
|
||||||
|
TempDIExpression cloneImpl() const {
|
||||||
|
return getTemporary(getContext(), getElements());
|
||||||
|
}
|
||||||
|
|
||||||
|
public:
|
||||||
|
DEFINE_MDNODE_GET(DIExpression, (ArrayRef<uint64_t> Elements), (Elements))
|
||||||
|
|
||||||
|
TempDIExpression clone() const { return cloneImpl(); }
|
||||||
|
|
||||||
|
ArrayRef<uint64_t> getElements() const { return Elements; }
|
||||||
|
|
||||||
|
unsigned getNumElements() const { return Elements.size(); }
|
||||||
|
uint64_t getElement(unsigned I) const {
|
||||||
|
assert(I < Elements.size() && "Index out of range");
|
||||||
|
return Elements[I];
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Return whether this is a piece of an aggregate variable.
|
||||||
|
bool isBitPiece() const;
|
||||||
|
|
||||||
|
/// Return the offset of this piece in bits.
|
||||||
|
uint64_t getBitPieceOffset() const;
|
||||||
|
|
||||||
|
/// Return the size of this piece in bits.
|
||||||
|
uint64_t getBitPieceSize() const;
|
||||||
|
|
||||||
|
typedef ArrayRef<uint64_t>::iterator element_iterator;
|
||||||
|
element_iterator elements_begin() const { return getElements().begin(); }
|
||||||
|
element_iterator elements_end() const { return getElements().end(); }
|
||||||
|
|
||||||
|
/// A lightweight wrapper around an expression operand.
|
||||||
|
///
|
||||||
|
/// TODO: Store arguments directly and change \a DIExpression to store a
|
||||||
|
/// range of these.
|
||||||
|
class ExprOperand {
|
||||||
|
const uint64_t *Op;
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit ExprOperand(const uint64_t *Op) : Op(Op) {}
|
||||||
|
|
||||||
|
const uint64_t *get() const { return Op; }
|
||||||
|
|
||||||
|
/// Get the operand code.
|
||||||
|
uint64_t getOp() const { return *Op; }
|
||||||
|
|
||||||
|
/// Get an argument to the operand.
|
||||||
|
///
|
||||||
|
/// Never returns the operand itself.
|
||||||
|
uint64_t getArg(unsigned I) const { return Op[I + 1]; }
|
||||||
|
|
||||||
|
unsigned getNumArgs() const { return getSize() - 1; }
|
||||||
|
|
||||||
|
/// Return the size of the operand.
|
||||||
|
///
|
||||||
|
/// Return the number of elements in the operand (1 + args).
|
||||||
|
unsigned getSize() const;
|
||||||
|
};
|
||||||
|
|
||||||
|
/// An iterator for expression operands.
|
||||||
|
class expr_op_iterator
|
||||||
|
: public std::iterator<std::input_iterator_tag, ExprOperand> {
|
||||||
|
ExprOperand Op;
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit expr_op_iterator(element_iterator I) : Op(I) {}
|
||||||
|
|
||||||
|
element_iterator getBase() const { return Op.get(); }
|
||||||
|
const ExprOperand &operator*() const { return Op; }
|
||||||
|
const ExprOperand *operator->() const { return &Op; }
|
||||||
|
|
||||||
|
expr_op_iterator &operator++() {
|
||||||
|
increment();
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
expr_op_iterator operator++(int) {
|
||||||
|
expr_op_iterator T(*this);
|
||||||
|
increment();
|
||||||
|
return T;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Get the next iterator.
|
||||||
|
///
|
||||||
|
/// \a std::next() doesn't work because this is technically an
|
||||||
|
/// input_iterator, but it's a perfectly valid operation. This is an
|
||||||
|
/// accessor to provide the same functionality.
|
||||||
|
expr_op_iterator getNext() const { return ++expr_op_iterator(*this); }
|
||||||
|
|
||||||
|
bool operator==(const expr_op_iterator &X) const {
|
||||||
|
return getBase() == X.getBase();
|
||||||
|
}
|
||||||
|
bool operator!=(const expr_op_iterator &X) const {
|
||||||
|
return getBase() != X.getBase();
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
void increment() { Op = ExprOperand(getBase() + Op.getSize()); }
|
||||||
|
};
|
||||||
|
|
||||||
|
/// Visit the elements via ExprOperand wrappers.
|
||||||
|
///
|
||||||
|
/// These range iterators visit elements through \a ExprOperand wrappers.
|
||||||
|
/// This is not guaranteed to be a valid range unless \a isValid() gives \c
|
||||||
|
/// true.
|
||||||
|
///
|
||||||
|
/// \pre \a isValid() gives \c true.
|
||||||
|
/// @{
|
||||||
|
expr_op_iterator expr_op_begin() const {
|
||||||
|
return expr_op_iterator(elements_begin());
|
||||||
|
}
|
||||||
|
expr_op_iterator expr_op_end() const {
|
||||||
|
return expr_op_iterator(elements_end());
|
||||||
|
}
|
||||||
|
/// @}
|
||||||
|
|
||||||
|
bool isValid() const;
|
||||||
|
|
||||||
|
static bool classof(const Metadata *MD) {
|
||||||
|
return MD->getMetadataID() == DIExpressionKind;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Is the first element a DW_OP_deref?.
|
||||||
|
bool startsWithDeref() const {
|
||||||
|
return getNumElements() > 0 && getElement(0) == dwarf::DW_OP_deref;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
/// \brief Global variables.
|
/// \brief Global variables.
|
||||||
///
|
///
|
||||||
/// TODO: Remove DisplayName. It's always equal to Name.
|
/// TODO: Remove DisplayName. It's always equal to Name.
|
||||||
@ -1882,26 +2035,25 @@ class DIGlobalVariable : public DIVariable {
|
|||||||
static DIGlobalVariable *
|
static DIGlobalVariable *
|
||||||
getImpl(LLVMContext &Context, DIScope *Scope, StringRef Name,
|
getImpl(LLVMContext &Context, DIScope *Scope, StringRef Name,
|
||||||
StringRef LinkageName, DIFile *File, unsigned Line, DITypeRef Type,
|
StringRef LinkageName, DIFile *File, unsigned Line, DITypeRef Type,
|
||||||
bool IsLocalToUnit, bool IsDefinition, Constant *Variable,
|
bool IsLocalToUnit, bool IsDefinition, DIExpression *Expr,
|
||||||
DIDerivedType *StaticDataMemberDeclaration, StorageType Storage,
|
DIDerivedType *StaticDataMemberDeclaration, StorageType Storage,
|
||||||
bool ShouldCreate = true) {
|
bool ShouldCreate = true) {
|
||||||
return getImpl(Context, Scope, getCanonicalMDString(Context, Name),
|
return getImpl(Context, Scope, getCanonicalMDString(Context, Name),
|
||||||
getCanonicalMDString(Context, LinkageName), File, Line, Type,
|
getCanonicalMDString(Context, LinkageName), File, Line, Type,
|
||||||
IsLocalToUnit, IsDefinition,
|
IsLocalToUnit, IsDefinition, Expr,
|
||||||
Variable ? ConstantAsMetadata::get(Variable) : nullptr,
|
|
||||||
StaticDataMemberDeclaration, Storage, ShouldCreate);
|
StaticDataMemberDeclaration, Storage, ShouldCreate);
|
||||||
}
|
}
|
||||||
static DIGlobalVariable *
|
static DIGlobalVariable *
|
||||||
getImpl(LLVMContext &Context, Metadata *Scope, MDString *Name,
|
getImpl(LLVMContext &Context, Metadata *Scope, MDString *Name,
|
||||||
MDString *LinkageName, Metadata *File, unsigned Line, Metadata *Type,
|
MDString *LinkageName, Metadata *File, unsigned Line, Metadata *Type,
|
||||||
bool IsLocalToUnit, bool IsDefinition, Metadata *Variable,
|
bool IsLocalToUnit, bool IsDefinition, Metadata *Expr,
|
||||||
Metadata *StaticDataMemberDeclaration, StorageType Storage,
|
Metadata *StaticDataMemberDeclaration, StorageType Storage,
|
||||||
bool ShouldCreate = true);
|
bool ShouldCreate = true);
|
||||||
|
|
||||||
TempDIGlobalVariable cloneImpl() const {
|
TempDIGlobalVariable cloneImpl() const {
|
||||||
return getTemporary(getContext(), getScope(), getName(), getLinkageName(),
|
return getTemporary(getContext(), getScope(), getName(), getLinkageName(),
|
||||||
getFile(), getLine(), getType(), isLocalToUnit(),
|
getFile(), getLine(), getType(), isLocalToUnit(),
|
||||||
isDefinition(), getVariable(),
|
isDefinition(), getExpr(),
|
||||||
getStaticDataMemberDeclaration());
|
getStaticDataMemberDeclaration());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1909,17 +2061,17 @@ public:
|
|||||||
DEFINE_MDNODE_GET(DIGlobalVariable,
|
DEFINE_MDNODE_GET(DIGlobalVariable,
|
||||||
(DIScope * Scope, StringRef Name, StringRef LinkageName,
|
(DIScope * Scope, StringRef Name, StringRef LinkageName,
|
||||||
DIFile *File, unsigned Line, DITypeRef Type,
|
DIFile *File, unsigned Line, DITypeRef Type,
|
||||||
bool IsLocalToUnit, bool IsDefinition, Constant *Variable,
|
bool IsLocalToUnit, bool IsDefinition, DIExpression *Expr,
|
||||||
DIDerivedType *StaticDataMemberDeclaration),
|
DIDerivedType *StaticDataMemberDeclaration),
|
||||||
(Scope, Name, LinkageName, File, Line, Type, IsLocalToUnit,
|
(Scope, Name, LinkageName, File, Line, Type, IsLocalToUnit,
|
||||||
IsDefinition, Variable, StaticDataMemberDeclaration))
|
IsDefinition, Expr, StaticDataMemberDeclaration))
|
||||||
DEFINE_MDNODE_GET(DIGlobalVariable,
|
DEFINE_MDNODE_GET(DIGlobalVariable,
|
||||||
(Metadata * Scope, MDString *Name, MDString *LinkageName,
|
(Metadata * Scope, MDString *Name, MDString *LinkageName,
|
||||||
Metadata *File, unsigned Line, Metadata *Type,
|
Metadata *File, unsigned Line, Metadata *Type,
|
||||||
bool IsLocalToUnit, bool IsDefinition, Metadata *Variable,
|
bool IsLocalToUnit, bool IsDefinition, Metadata *Expr,
|
||||||
Metadata *StaticDataMemberDeclaration),
|
Metadata *StaticDataMemberDeclaration),
|
||||||
(Scope, Name, LinkageName, File, Line, Type, IsLocalToUnit,
|
(Scope, Name, LinkageName, File, Line, Type, IsLocalToUnit,
|
||||||
IsDefinition, Variable, StaticDataMemberDeclaration))
|
IsDefinition, Expr, StaticDataMemberDeclaration))
|
||||||
|
|
||||||
TempDIGlobalVariable clone() const { return cloneImpl(); }
|
TempDIGlobalVariable clone() const { return cloneImpl(); }
|
||||||
|
|
||||||
@ -1927,17 +2079,18 @@ public:
|
|||||||
bool isDefinition() const { return IsDefinition; }
|
bool isDefinition() const { return IsDefinition; }
|
||||||
StringRef getDisplayName() const { return getStringOperand(4); }
|
StringRef getDisplayName() const { return getStringOperand(4); }
|
||||||
StringRef getLinkageName() const { return getStringOperand(5); }
|
StringRef getLinkageName() const { return getStringOperand(5); }
|
||||||
Constant *getVariable() const {
|
DIExpression *getExpr() const {
|
||||||
if (auto *C = cast_or_null<ConstantAsMetadata>(getRawVariable()))
|
return cast_or_null<DIExpression>(getRawExpr());
|
||||||
return dyn_cast<Constant>(C->getValue());
|
}
|
||||||
return nullptr;
|
void replaceExpr(DIExpression *E) {
|
||||||
|
replaceOperandWith(6, E);
|
||||||
}
|
}
|
||||||
DIDerivedType *getStaticDataMemberDeclaration() const {
|
DIDerivedType *getStaticDataMemberDeclaration() const {
|
||||||
return cast_or_null<DIDerivedType>(getRawStaticDataMemberDeclaration());
|
return cast_or_null<DIDerivedType>(getRawStaticDataMemberDeclaration());
|
||||||
}
|
}
|
||||||
|
|
||||||
MDString *getRawLinkageName() const { return getOperandAs<MDString>(5); }
|
MDString *getRawLinkageName() const { return getOperandAs<MDString>(5); }
|
||||||
Metadata *getRawVariable() const { return getOperand(6); }
|
Metadata *getRawExpr() const { return getOperand(6); }
|
||||||
Metadata *getRawStaticDataMemberDeclaration() const { return getOperand(7); }
|
Metadata *getRawStaticDataMemberDeclaration() const { return getOperand(7); }
|
||||||
|
|
||||||
static bool classof(const Metadata *MD) {
|
static bool classof(const Metadata *MD) {
|
||||||
@ -2024,158 +2177,6 @@ public:
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
/// \brief DWARF expression.
|
|
||||||
///
|
|
||||||
/// This is (almost) a DWARF expression that modifies the location of a
|
|
||||||
/// variable or (or the location of a single piece of a variable).
|
|
||||||
///
|
|
||||||
/// FIXME: Instead of DW_OP_plus taking an argument, this should use DW_OP_const
|
|
||||||
/// and have DW_OP_plus consume the topmost elements on the stack.
|
|
||||||
///
|
|
||||||
/// TODO: Co-allocate the expression elements.
|
|
||||||
/// TODO: Separate from MDNode, or otherwise drop Distinct and Temporary
|
|
||||||
/// storage types.
|
|
||||||
class DIExpression : public MDNode {
|
|
||||||
friend class LLVMContextImpl;
|
|
||||||
friend class MDNode;
|
|
||||||
|
|
||||||
std::vector<uint64_t> Elements;
|
|
||||||
|
|
||||||
DIExpression(LLVMContext &C, StorageType Storage, ArrayRef<uint64_t> Elements)
|
|
||||||
: MDNode(C, DIExpressionKind, Storage, None),
|
|
||||||
Elements(Elements.begin(), Elements.end()) {}
|
|
||||||
~DIExpression() = default;
|
|
||||||
|
|
||||||
static DIExpression *getImpl(LLVMContext &Context,
|
|
||||||
ArrayRef<uint64_t> Elements, StorageType Storage,
|
|
||||||
bool ShouldCreate = true);
|
|
||||||
|
|
||||||
TempDIExpression cloneImpl() const {
|
|
||||||
return getTemporary(getContext(), getElements());
|
|
||||||
}
|
|
||||||
|
|
||||||
public:
|
|
||||||
DEFINE_MDNODE_GET(DIExpression, (ArrayRef<uint64_t> Elements), (Elements))
|
|
||||||
|
|
||||||
TempDIExpression clone() const { return cloneImpl(); }
|
|
||||||
|
|
||||||
ArrayRef<uint64_t> getElements() const { return Elements; }
|
|
||||||
|
|
||||||
unsigned getNumElements() const { return Elements.size(); }
|
|
||||||
uint64_t getElement(unsigned I) const {
|
|
||||||
assert(I < Elements.size() && "Index out of range");
|
|
||||||
return Elements[I];
|
|
||||||
}
|
|
||||||
|
|
||||||
/// \brief Return whether this is a piece of an aggregate variable.
|
|
||||||
bool isBitPiece() const;
|
|
||||||
|
|
||||||
/// \brief Return the offset of this piece in bits.
|
|
||||||
uint64_t getBitPieceOffset() const;
|
|
||||||
|
|
||||||
/// \brief Return the size of this piece in bits.
|
|
||||||
uint64_t getBitPieceSize() const;
|
|
||||||
|
|
||||||
typedef ArrayRef<uint64_t>::iterator element_iterator;
|
|
||||||
element_iterator elements_begin() const { return getElements().begin(); }
|
|
||||||
element_iterator elements_end() const { return getElements().end(); }
|
|
||||||
|
|
||||||
/// \brief A lightweight wrapper around an expression operand.
|
|
||||||
///
|
|
||||||
/// TODO: Store arguments directly and change \a DIExpression to store a
|
|
||||||
/// range of these.
|
|
||||||
class ExprOperand {
|
|
||||||
const uint64_t *Op;
|
|
||||||
|
|
||||||
public:
|
|
||||||
explicit ExprOperand(const uint64_t *Op) : Op(Op) {}
|
|
||||||
|
|
||||||
const uint64_t *get() const { return Op; }
|
|
||||||
|
|
||||||
/// \brief Get the operand code.
|
|
||||||
uint64_t getOp() const { return *Op; }
|
|
||||||
|
|
||||||
/// \brief Get an argument to the operand.
|
|
||||||
///
|
|
||||||
/// Never returns the operand itself.
|
|
||||||
uint64_t getArg(unsigned I) const { return Op[I + 1]; }
|
|
||||||
|
|
||||||
unsigned getNumArgs() const { return getSize() - 1; }
|
|
||||||
|
|
||||||
/// \brief Return the size of the operand.
|
|
||||||
///
|
|
||||||
/// Return the number of elements in the operand (1 + args).
|
|
||||||
unsigned getSize() const;
|
|
||||||
};
|
|
||||||
|
|
||||||
/// \brief An iterator for expression operands.
|
|
||||||
class expr_op_iterator
|
|
||||||
: public std::iterator<std::input_iterator_tag, ExprOperand> {
|
|
||||||
ExprOperand Op;
|
|
||||||
|
|
||||||
public:
|
|
||||||
explicit expr_op_iterator(element_iterator I) : Op(I) {}
|
|
||||||
|
|
||||||
element_iterator getBase() const { return Op.get(); }
|
|
||||||
const ExprOperand &operator*() const { return Op; }
|
|
||||||
const ExprOperand *operator->() const { return &Op; }
|
|
||||||
|
|
||||||
expr_op_iterator &operator++() {
|
|
||||||
increment();
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
expr_op_iterator operator++(int) {
|
|
||||||
expr_op_iterator T(*this);
|
|
||||||
increment();
|
|
||||||
return T;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// \brief Get the next iterator.
|
|
||||||
///
|
|
||||||
/// \a std::next() doesn't work because this is technically an
|
|
||||||
/// input_iterator, but it's a perfectly valid operation. This is an
|
|
||||||
/// accessor to provide the same functionality.
|
|
||||||
expr_op_iterator getNext() const { return ++expr_op_iterator(*this); }
|
|
||||||
|
|
||||||
bool operator==(const expr_op_iterator &X) const {
|
|
||||||
return getBase() == X.getBase();
|
|
||||||
}
|
|
||||||
bool operator!=(const expr_op_iterator &X) const {
|
|
||||||
return getBase() != X.getBase();
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
|
||||||
void increment() { Op = ExprOperand(getBase() + Op.getSize()); }
|
|
||||||
};
|
|
||||||
|
|
||||||
/// \brief Visit the elements via ExprOperand wrappers.
|
|
||||||
///
|
|
||||||
/// These range iterators visit elements through \a ExprOperand wrappers.
|
|
||||||
/// This is not guaranteed to be a valid range unless \a isValid() gives \c
|
|
||||||
/// true.
|
|
||||||
///
|
|
||||||
/// \pre \a isValid() gives \c true.
|
|
||||||
/// @{
|
|
||||||
expr_op_iterator expr_op_begin() const {
|
|
||||||
return expr_op_iterator(elements_begin());
|
|
||||||
}
|
|
||||||
expr_op_iterator expr_op_end() const {
|
|
||||||
return expr_op_iterator(elements_end());
|
|
||||||
}
|
|
||||||
/// @}
|
|
||||||
|
|
||||||
bool isValid() const;
|
|
||||||
|
|
||||||
static bool classof(const Metadata *MD) {
|
|
||||||
return MD->getMetadataID() == DIExpressionKind;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// \brief Is the first element a DW_OP_deref?.
|
|
||||||
bool startsWithDeref() const {
|
|
||||||
return getNumElements() > 0 && getElement(0) == dwarf::DW_OP_deref;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
class DIObjCProperty : public DINode {
|
class DIObjCProperty : public DINode {
|
||||||
friend class LLVMContextImpl;
|
friend class LLVMContextImpl;
|
||||||
friend class MDNode;
|
friend class MDNode;
|
||||||
|
@ -27,8 +27,9 @@
|
|||||||
|
|
||||||
namespace llvm {
|
namespace llvm {
|
||||||
|
|
||||||
class Module;
|
|
||||||
class Constant;
|
class Constant;
|
||||||
|
class DIGlobalVariable;
|
||||||
|
class Module;
|
||||||
template <typename ValueSubClass> class SymbolTableListTraits;
|
template <typename ValueSubClass> class SymbolTableListTraits;
|
||||||
|
|
||||||
class GlobalVariable : public GlobalObject, public ilist_node<GlobalVariable> {
|
class GlobalVariable : public GlobalObject, public ilist_node<GlobalVariable> {
|
||||||
@ -165,6 +166,9 @@ public:
|
|||||||
/// drops not only the reference to the initializer but also to any metadata.
|
/// drops not only the reference to the initializer but also to any metadata.
|
||||||
void dropAllReferences();
|
void dropAllReferences();
|
||||||
|
|
||||||
|
void addDebugInfo(DIGlobalVariable *GV);
|
||||||
|
void getDebugInfo(SmallVectorImpl<DIGlobalVariable *> &GVs) const;
|
||||||
|
|
||||||
// Methods for support type inquiry through isa, cast, and dyn_cast:
|
// Methods for support type inquiry through isa, cast, and dyn_cast:
|
||||||
static inline bool classof(const Value *V) {
|
static inline bool classof(const Value *V) {
|
||||||
return V->getValueID() == Value::GlobalVariableVal;
|
return V->getValueID() == Value::GlobalVariableVal;
|
||||||
|
@ -4201,7 +4201,7 @@ bool LLParser::ParseDIGlobalVariable(MDNode *&Result, bool IsDistinct) {
|
|||||||
OPTIONAL(type, MDField, ); \
|
OPTIONAL(type, MDField, ); \
|
||||||
OPTIONAL(isLocal, MDBoolField, ); \
|
OPTIONAL(isLocal, MDBoolField, ); \
|
||||||
OPTIONAL(isDefinition, MDBoolField, (true)); \
|
OPTIONAL(isDefinition, MDBoolField, (true)); \
|
||||||
OPTIONAL(variable, MDConstant, ); \
|
OPTIONAL(expr, MDField, ); \
|
||||||
OPTIONAL(declaration, MDField, );
|
OPTIONAL(declaration, MDField, );
|
||||||
PARSE_MD_FIELDS();
|
PARSE_MD_FIELDS();
|
||||||
#undef VISIT_MD_FIELDS
|
#undef VISIT_MD_FIELDS
|
||||||
@ -4209,7 +4209,7 @@ bool LLParser::ParseDIGlobalVariable(MDNode *&Result, bool IsDistinct) {
|
|||||||
Result = GET_OR_DISTINCT(DIGlobalVariable,
|
Result = GET_OR_DISTINCT(DIGlobalVariable,
|
||||||
(Context, scope.Val, name.Val, linkageName.Val,
|
(Context, scope.Val, name.Val, linkageName.Val,
|
||||||
file.Val, line.Val, type.Val, isLocal.Val,
|
file.Val, line.Val, type.Val, isLocal.Val,
|
||||||
isDefinition.Val, variable.Val, declaration.Val));
|
isDefinition.Val, expr.Val, declaration.Val));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2679,14 +2679,35 @@ std::error_code BitcodeReader::parseMetadata(bool ModuleLevel) {
|
|||||||
return error("Invalid record");
|
return error("Invalid record");
|
||||||
|
|
||||||
IsDistinct = Record[0];
|
IsDistinct = Record[0];
|
||||||
MetadataList.assignValue(
|
|
||||||
GET_OR_DISTINCT(DIGlobalVariable,
|
// Upgrade old metadata, which stored a global variable reference or a
|
||||||
(Context, getMDOrNull(Record[1]),
|
// ConstantInt here.
|
||||||
getMDString(Record[2]), getMDString(Record[3]),
|
Metadata *Expr = getMDOrNull(Record[9]);
|
||||||
getMDOrNull(Record[4]), Record[5],
|
GlobalVariable *Attach = nullptr;
|
||||||
getDITypeRefOrNull(Record[6]), Record[7], Record[8],
|
if (auto *CMD = dyn_cast_or_null<ConstantAsMetadata>(Expr)) {
|
||||||
getMDOrNull(Record[9]), getMDOrNull(Record[10]))),
|
if (auto *GV = dyn_cast<GlobalVariable>(CMD->getValue())) {
|
||||||
NextMetadataNo++);
|
Attach = GV;
|
||||||
|
Expr = nullptr;
|
||||||
|
} else if (auto *CI = dyn_cast<ConstantInt>(CMD->getValue())) {
|
||||||
|
Expr = DIExpression::get(Context,
|
||||||
|
{dwarf::DW_OP_constu, CI->getZExtValue(),
|
||||||
|
dwarf::DW_OP_stack_value});
|
||||||
|
} else {
|
||||||
|
Expr = nullptr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
DIGlobalVariable *DGV = GET_OR_DISTINCT(
|
||||||
|
DIGlobalVariable,
|
||||||
|
(Context, getMDOrNull(Record[1]), getMDString(Record[2]),
|
||||||
|
getMDString(Record[3]), getMDOrNull(Record[4]), Record[5],
|
||||||
|
getDITypeRefOrNull(Record[6]), Record[7], Record[8], Expr,
|
||||||
|
getMDOrNull(Record[10])));
|
||||||
|
MetadataList.assignValue(DGV, NextMetadataNo++);
|
||||||
|
|
||||||
|
if (Attach)
|
||||||
|
Attach->addDebugInfo(DGV);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case bitc::METADATA_LOCAL_VAR: {
|
case bitc::METADATA_LOCAL_VAR: {
|
||||||
|
@ -1710,7 +1710,7 @@ void ModuleBitcodeWriter::writeDIGlobalVariable(
|
|||||||
Record.push_back(VE.getMetadataOrNullID(N->getType()));
|
Record.push_back(VE.getMetadataOrNullID(N->getType()));
|
||||||
Record.push_back(N->isLocalToUnit());
|
Record.push_back(N->isLocalToUnit());
|
||||||
Record.push_back(N->isDefinition());
|
Record.push_back(N->isDefinition());
|
||||||
Record.push_back(VE.getMetadataOrNullID(N->getRawVariable()));
|
Record.push_back(VE.getMetadataOrNullID(N->getRawExpr()));
|
||||||
Record.push_back(VE.getMetadataOrNullID(N->getStaticDataMemberDeclaration()));
|
Record.push_back(VE.getMetadataOrNullID(N->getStaticDataMemberDeclaration()));
|
||||||
|
|
||||||
Stream.EmitRecord(bitc::METADATA_GLOBAL_VAR, Record, Abbrev);
|
Stream.EmitRecord(bitc::METADATA_GLOBAL_VAR, Record, Abbrev);
|
||||||
|
@ -2001,6 +2001,14 @@ void CodeViewDebug::emitDebugInfoForUDTs(
|
|||||||
}
|
}
|
||||||
|
|
||||||
void CodeViewDebug::emitDebugInfoForGlobals() {
|
void CodeViewDebug::emitDebugInfoForGlobals() {
|
||||||
|
DenseMap<const DIGlobalVariable *, const GlobalVariable *> GlobalMap;
|
||||||
|
for (const GlobalVariable &GV : MMI->getModule()->globals()) {
|
||||||
|
SmallVector<MDNode *, 1> MDs;
|
||||||
|
GV.getMetadata(LLVMContext::MD_dbg, MDs);
|
||||||
|
for (MDNode *MD : MDs)
|
||||||
|
GlobalMap[cast<DIGlobalVariable>(MD)] = &GV;
|
||||||
|
}
|
||||||
|
|
||||||
NamedMDNode *CUs = MMI->getModule()->getNamedMetadata("llvm.dbg.cu");
|
NamedMDNode *CUs = MMI->getModule()->getNamedMetadata("llvm.dbg.cu");
|
||||||
for (const MDNode *Node : CUs->operands()) {
|
for (const MDNode *Node : CUs->operands()) {
|
||||||
const auto *CU = cast<DICompileUnit>(Node);
|
const auto *CU = cast<DICompileUnit>(Node);
|
||||||
@ -2011,15 +2019,14 @@ void CodeViewDebug::emitDebugInfoForGlobals() {
|
|||||||
switchToDebugSectionForSymbol(nullptr);
|
switchToDebugSectionForSymbol(nullptr);
|
||||||
MCSymbol *EndLabel = nullptr;
|
MCSymbol *EndLabel = nullptr;
|
||||||
for (const DIGlobalVariable *G : CU->getGlobalVariables()) {
|
for (const DIGlobalVariable *G : CU->getGlobalVariables()) {
|
||||||
if (const auto *GV = dyn_cast_or_null<GlobalVariable>(G->getVariable())) {
|
if (const auto *GV = GlobalMap.lookup(G))
|
||||||
if (!GV->hasComdat() && !GV->isDeclarationForLinker()) {
|
if (!GV->hasComdat() && !GV->isDeclarationForLinker()) {
|
||||||
if (!EndLabel) {
|
if (!EndLabel) {
|
||||||
OS.AddComment("Symbol subsection for globals");
|
OS.AddComment("Symbol subsection for globals");
|
||||||
EndLabel = beginCVSubsection(ModuleSubstreamKind::Symbols);
|
EndLabel = beginCVSubsection(ModuleSubstreamKind::Symbols);
|
||||||
}
|
}
|
||||||
emitDebugInfoForGlobal(G, Asm->getSymbol(GV));
|
emitDebugInfoForGlobal(G, GV, Asm->getSymbol(GV));
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (EndLabel)
|
if (EndLabel)
|
||||||
endCVSubsection(EndLabel);
|
endCVSubsection(EndLabel);
|
||||||
@ -2027,14 +2034,14 @@ void CodeViewDebug::emitDebugInfoForGlobals() {
|
|||||||
// Second, emit each global that is in a comdat into its own .debug$S
|
// Second, emit each global that is in a comdat into its own .debug$S
|
||||||
// section along with its own symbol substream.
|
// section along with its own symbol substream.
|
||||||
for (const DIGlobalVariable *G : CU->getGlobalVariables()) {
|
for (const DIGlobalVariable *G : CU->getGlobalVariables()) {
|
||||||
if (const auto *GV = dyn_cast_or_null<GlobalVariable>(G->getVariable())) {
|
if (const auto *GV = GlobalMap.lookup(G)) {
|
||||||
if (GV->hasComdat()) {
|
if (GV->hasComdat()) {
|
||||||
MCSymbol *GVSym = Asm->getSymbol(GV);
|
MCSymbol *GVSym = Asm->getSymbol(GV);
|
||||||
OS.AddComment("Symbol subsection for " +
|
OS.AddComment("Symbol subsection for " +
|
||||||
Twine(GlobalValue::getRealLinkageName(GV->getName())));
|
Twine(GlobalValue::getRealLinkageName(GV->getName())));
|
||||||
switchToDebugSectionForSymbol(GVSym);
|
switchToDebugSectionForSymbol(GVSym);
|
||||||
EndLabel = beginCVSubsection(ModuleSubstreamKind::Symbols);
|
EndLabel = beginCVSubsection(ModuleSubstreamKind::Symbols);
|
||||||
emitDebugInfoForGlobal(G, GVSym);
|
emitDebugInfoForGlobal(G, GV, GVSym);
|
||||||
endCVSubsection(EndLabel);
|
endCVSubsection(EndLabel);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2055,6 +2062,7 @@ void CodeViewDebug::emitDebugInfoForRetainedTypes() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void CodeViewDebug::emitDebugInfoForGlobal(const DIGlobalVariable *DIGV,
|
void CodeViewDebug::emitDebugInfoForGlobal(const DIGlobalVariable *DIGV,
|
||||||
|
const GlobalVariable *GV,
|
||||||
MCSymbol *GVSym) {
|
MCSymbol *GVSym) {
|
||||||
// DataSym record, see SymbolRecord.h for more info.
|
// DataSym record, see SymbolRecord.h for more info.
|
||||||
// FIXME: Thread local data, etc
|
// FIXME: Thread local data, etc
|
||||||
@ -2063,7 +2071,6 @@ void CodeViewDebug::emitDebugInfoForGlobal(const DIGlobalVariable *DIGV,
|
|||||||
OS.AddComment("Record length");
|
OS.AddComment("Record length");
|
||||||
OS.emitAbsoluteSymbolDiff(DataEnd, DataBegin, 2);
|
OS.emitAbsoluteSymbolDiff(DataEnd, DataBegin, 2);
|
||||||
OS.EmitLabel(DataBegin);
|
OS.EmitLabel(DataBegin);
|
||||||
const auto *GV = cast<GlobalVariable>(DIGV->getVariable());
|
|
||||||
if (DIGV->isLocalToUnit()) {
|
if (DIGV->isLocalToUnit()) {
|
||||||
if (GV->isThreadLocal()) {
|
if (GV->isThreadLocal()) {
|
||||||
OS.AddComment("Record kind: S_LTHREAD32");
|
OS.AddComment("Record kind: S_LTHREAD32");
|
||||||
|
@ -202,7 +202,8 @@ class LLVM_LIBRARY_VISIBILITY CodeViewDebug : public DebugHandlerBase {
|
|||||||
void emitDebugInfoForUDTs(
|
void emitDebugInfoForUDTs(
|
||||||
ArrayRef<std::pair<std::string, codeview::TypeIndex>> UDTs);
|
ArrayRef<std::pair<std::string, codeview::TypeIndex>> UDTs);
|
||||||
|
|
||||||
void emitDebugInfoForGlobal(const DIGlobalVariable *DIGV, MCSymbol *GVSym);
|
void emitDebugInfoForGlobal(const DIGlobalVariable *DIGV,
|
||||||
|
const GlobalVariable *GV, MCSymbol *GVSym);
|
||||||
|
|
||||||
/// Opens a subsection of the given kind in a .debug$S codeview section.
|
/// Opens a subsection of the given kind in a .debug$S codeview section.
|
||||||
/// Returns an end label for use with endCVSubsection when the subsection is
|
/// Returns an end label for use with endCVSubsection when the subsection is
|
||||||
|
@ -73,36 +73,9 @@ unsigned DwarfCompileUnit::getOrCreateSourceID(StringRef FileName,
|
|||||||
Asm->OutStreamer->hasRawTextSupport() ? 0 : getUniqueID());
|
Asm->OutStreamer->hasRawTextSupport() ? 0 : getUniqueID());
|
||||||
}
|
}
|
||||||
|
|
||||||
// Return const expression if value is a GEP to access merged global
|
|
||||||
// constant. e.g.
|
|
||||||
// i8* getelementptr ({ i8, i8, i8, i8 }* @_MergedGlobals, i32 0, i32 0)
|
|
||||||
static const ConstantExpr *getMergedGlobalExpr(const Value *V) {
|
|
||||||
const ConstantExpr *CE = dyn_cast_or_null<ConstantExpr>(V);
|
|
||||||
if (!CE || CE->getNumOperands() != 3 ||
|
|
||||||
CE->getOpcode() != Instruction::GetElementPtr)
|
|
||||||
return nullptr;
|
|
||||||
|
|
||||||
// First operand points to a global struct.
|
|
||||||
Value *Ptr = CE->getOperand(0);
|
|
||||||
GlobalValue *GV = dyn_cast<GlobalValue>(Ptr);
|
|
||||||
if (!GV || !isa<StructType>(GV->getValueType()))
|
|
||||||
return nullptr;
|
|
||||||
|
|
||||||
// Second operand is zero.
|
|
||||||
const ConstantInt *CI = dyn_cast_or_null<ConstantInt>(CE->getOperand(1));
|
|
||||||
if (!CI || !CI->isZero())
|
|
||||||
return nullptr;
|
|
||||||
|
|
||||||
// Third operand is offset.
|
|
||||||
if (!isa<ConstantInt>(CE->getOperand(2)))
|
|
||||||
return nullptr;
|
|
||||||
|
|
||||||
return CE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// getOrCreateGlobalVariableDIE - get or create global variable DIE.
|
/// getOrCreateGlobalVariableDIE - get or create global variable DIE.
|
||||||
DIE *DwarfCompileUnit::getOrCreateGlobalVariableDIE(
|
DIE *DwarfCompileUnit::getOrCreateGlobalVariableDIE(
|
||||||
const DIGlobalVariable *GV) {
|
const DIGlobalVariable *GV, const GlobalVariable *Global) {
|
||||||
// Check for pre-existence.
|
// Check for pre-existence.
|
||||||
if (DIE *Die = getDIE(GV))
|
if (DIE *Die = getDIE(GV))
|
||||||
return Die;
|
return Die;
|
||||||
@ -147,12 +120,22 @@ DIE *DwarfCompileUnit::getOrCreateGlobalVariableDIE(
|
|||||||
|
|
||||||
// Add location.
|
// Add location.
|
||||||
bool addToAccelTable = false;
|
bool addToAccelTable = false;
|
||||||
if (auto *Global = dyn_cast_or_null<GlobalVariable>(GV->getVariable())) {
|
|
||||||
|
DIExpression *Expr = GV->getExpr();
|
||||||
|
|
||||||
|
// For compatibility with DWARF 3 and earlier,
|
||||||
|
// DW_AT_location(DW_OP_constu, X, DW_OP_stack_value) becomes
|
||||||
|
// DW_AT_const_value(X).
|
||||||
|
if (Expr && Expr->getNumElements() == 3 &&
|
||||||
|
Expr->getElement(0) == dwarf::DW_OP_constu &&
|
||||||
|
Expr->getElement(2) == dwarf::DW_OP_stack_value) {
|
||||||
|
addConstantValue(*VariableDIE, /*Unsigned=*/true, Expr->getElement(1));
|
||||||
// We cannot describe the location of dllimport'd variables: the computation
|
// We cannot describe the location of dllimport'd variables: the computation
|
||||||
// of their address requires loads from the IAT.
|
// of their address requires loads from the IAT.
|
||||||
if (!Global->hasDLLImportStorageClass()) {
|
} else if (!Global || !Global->hasDLLImportStorageClass()) {
|
||||||
|
DIELoc *Loc = new (DIEValueAllocator) DIELoc;
|
||||||
|
if (Global) {
|
||||||
addToAccelTable = true;
|
addToAccelTable = true;
|
||||||
DIELoc *Loc = new (DIEValueAllocator) DIELoc;
|
|
||||||
const MCSymbol *Sym = Asm->getSymbol(Global);
|
const MCSymbol *Sym = Asm->getSymbol(Global);
|
||||||
if (Global->isThreadLocal()) {
|
if (Global->isThreadLocal()) {
|
||||||
if (Asm->TM.Options.EmulatedTLS) {
|
if (Asm->TM.Options.EmulatedTLS) {
|
||||||
@ -187,30 +170,16 @@ DIE *DwarfCompileUnit::getOrCreateGlobalVariableDIE(
|
|||||||
addOpAddress(*Loc, Sym);
|
addOpAddress(*Loc, Sym);
|
||||||
}
|
}
|
||||||
|
|
||||||
addBlock(*VariableDIE, dwarf::DW_AT_location, Loc);
|
if (Expr) {
|
||||||
if (DD->useAllLinkageNames())
|
DIEDwarfExpression DwarfExpr(*Asm, *this, *Loc);
|
||||||
addLinkageName(*VariableDIE, GV->getLinkageName());
|
DwarfExpr.AddExpression(Expr->expr_op_begin(), Expr->expr_op_end());
|
||||||
}
|
}
|
||||||
} else if (const ConstantInt *CI =
|
|
||||||
dyn_cast_or_null<ConstantInt>(GV->getVariable())) {
|
|
||||||
addConstantValue(*VariableDIE, CI, GTy);
|
|
||||||
} else if (const ConstantExpr *CE = getMergedGlobalExpr(GV->getVariable())) {
|
|
||||||
auto *Ptr = cast<GlobalValue>(CE->getOperand(0));
|
|
||||||
if (!Ptr->hasDLLImportStorageClass()) {
|
|
||||||
addToAccelTable = true;
|
|
||||||
// GV is a merged global.
|
|
||||||
DIELoc *Loc = new (DIEValueAllocator) DIELoc;
|
|
||||||
MCSymbol *Sym = Asm->getSymbol(Ptr);
|
|
||||||
DD->addArangeLabel(SymbolCU(this, Sym));
|
|
||||||
addOpAddress(*Loc, Sym);
|
|
||||||
addUInt(*Loc, dwarf::DW_FORM_data1, dwarf::DW_OP_constu);
|
|
||||||
SmallVector<Value *, 3> Idx(CE->op_begin() + 1, CE->op_end());
|
|
||||||
addUInt(*Loc, dwarf::DW_FORM_udata,
|
|
||||||
Asm->getDataLayout().getIndexedOffsetInType(Ptr->getValueType(),
|
|
||||||
Idx));
|
|
||||||
addUInt(*Loc, dwarf::DW_FORM_data1, dwarf::DW_OP_plus);
|
|
||||||
addBlock(*VariableDIE, dwarf::DW_AT_location, Loc);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
addBlock(*VariableDIE, dwarf::DW_AT_location, Loc);
|
||||||
|
|
||||||
|
if (DD->useAllLinkageNames())
|
||||||
|
addLinkageName(*VariableDIE, GV->getLinkageName());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (addToAccelTable) {
|
if (addToAccelTable) {
|
||||||
@ -674,7 +643,7 @@ DIE *DwarfCompileUnit::constructImportedEntityDIE(
|
|||||||
else if (auto *T = dyn_cast<DIType>(Entity))
|
else if (auto *T = dyn_cast<DIType>(Entity))
|
||||||
EntityDie = getOrCreateTypeDIE(T);
|
EntityDie = getOrCreateTypeDIE(T);
|
||||||
else if (auto *GV = dyn_cast<DIGlobalVariable>(Entity))
|
else if (auto *GV = dyn_cast<DIGlobalVariable>(Entity))
|
||||||
EntityDie = getOrCreateGlobalVariableDIE(GV);
|
EntityDie = getOrCreateGlobalVariableDIE(GV, nullptr);
|
||||||
else
|
else
|
||||||
EntityDie = getDIE(Entity);
|
EntityDie = getDIE(Entity);
|
||||||
assert(EntityDie);
|
assert(EntityDie);
|
||||||
|
@ -97,7 +97,8 @@ public:
|
|||||||
void applyStmtList(DIE &D);
|
void applyStmtList(DIE &D);
|
||||||
|
|
||||||
/// getOrCreateGlobalVariableDIE - get or create global variable DIE.
|
/// getOrCreateGlobalVariableDIE - get or create global variable DIE.
|
||||||
DIE *getOrCreateGlobalVariableDIE(const DIGlobalVariable *GV);
|
DIE *getOrCreateGlobalVariableDIE(const DIGlobalVariable *GV,
|
||||||
|
const GlobalVariable *Global);
|
||||||
|
|
||||||
/// addLabelAddress - Add a dwarf label attribute data and value using
|
/// addLabelAddress - Add a dwarf label attribute data and value using
|
||||||
/// either DW_FORM_addr or DW_FORM_GNU_addr_index.
|
/// either DW_FORM_addr or DW_FORM_GNU_addr_index.
|
||||||
|
@ -477,12 +477,20 @@ void DwarfDebug::beginModule() {
|
|||||||
MMI->setDebugInfoAvailability(NumDebugCUs > 0);
|
MMI->setDebugInfoAvailability(NumDebugCUs > 0);
|
||||||
SingleCU = NumDebugCUs == 1;
|
SingleCU = NumDebugCUs == 1;
|
||||||
|
|
||||||
|
DenseMap<DIGlobalVariable *, const GlobalVariable *> GVMap;
|
||||||
|
for (const GlobalVariable &Global : M->globals()) {
|
||||||
|
SmallVector<DIGlobalVariable *, 1> GVs;
|
||||||
|
Global.getDebugInfo(GVs);
|
||||||
|
for (auto &GV : GVs)
|
||||||
|
GVMap[GV] = &Global;
|
||||||
|
}
|
||||||
|
|
||||||
for (DICompileUnit *CUNode : M->debug_compile_units()) {
|
for (DICompileUnit *CUNode : M->debug_compile_units()) {
|
||||||
DwarfCompileUnit &CU = constructDwarfCompileUnit(CUNode);
|
DwarfCompileUnit &CU = constructDwarfCompileUnit(CUNode);
|
||||||
for (auto *IE : CUNode->getImportedEntities())
|
for (auto *IE : CUNode->getImportedEntities())
|
||||||
CU.addImportedEntity(IE);
|
CU.addImportedEntity(IE);
|
||||||
for (auto *GV : CUNode->getGlobalVariables())
|
for (auto *GV : CUNode->getGlobalVariables())
|
||||||
CU.getOrCreateGlobalVariableDIE(GV);
|
CU.getOrCreateGlobalVariableDIE(GV, GVMap.lookup(GV));
|
||||||
for (auto *Ty : CUNode->getEnumTypes()) {
|
for (auto *Ty : CUNode->getEnumTypes()) {
|
||||||
// The enum types array by design contains pointers to
|
// The enum types array by design contains pointers to
|
||||||
// MDNodes rather than DIRefs. Unique them here.
|
// MDNodes rather than DIRefs. Unique them here.
|
||||||
|
@ -278,6 +278,13 @@ void DwarfExpression::AddExpression(DIExpression::expr_op_iterator I,
|
|||||||
case dwarf::DW_OP_deref:
|
case dwarf::DW_OP_deref:
|
||||||
EmitOp(dwarf::DW_OP_deref);
|
EmitOp(dwarf::DW_OP_deref);
|
||||||
break;
|
break;
|
||||||
|
case dwarf::DW_OP_constu:
|
||||||
|
EmitOp(dwarf::DW_OP_constu);
|
||||||
|
EmitUnsigned(I->getArg(0));
|
||||||
|
break;
|
||||||
|
case dwarf::DW_OP_stack_value:
|
||||||
|
AddStackValue();
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
llvm_unreachable("unhandled opcode found in expression");
|
llvm_unreachable("unhandled opcode found in expression");
|
||||||
}
|
}
|
||||||
|
@ -451,10 +451,16 @@ bool GlobalMerge::doMerge(const SmallVectorImpl<GlobalVariable *> &Globals,
|
|||||||
M, MergedTy, isConst, GlobalValue::PrivateLinkage, MergedInit,
|
M, MergedTy, isConst, GlobalValue::PrivateLinkage, MergedInit,
|
||||||
"_MergedGlobals", nullptr, GlobalVariable::NotThreadLocal, AddrSpace);
|
"_MergedGlobals", nullptr, GlobalVariable::NotThreadLocal, AddrSpace);
|
||||||
|
|
||||||
|
const StructLayout *MergedLayout = DL.getStructLayout(MergedTy);
|
||||||
|
|
||||||
for (ssize_t k = i, idx = 0; k != j; k = GlobalSet.find_next(k), ++idx) {
|
for (ssize_t k = i, idx = 0; k != j; k = GlobalSet.find_next(k), ++idx) {
|
||||||
GlobalValue::LinkageTypes Linkage = Globals[k]->getLinkage();
|
GlobalValue::LinkageTypes Linkage = Globals[k]->getLinkage();
|
||||||
std::string Name = Globals[k]->getName();
|
std::string Name = Globals[k]->getName();
|
||||||
|
|
||||||
|
// Copy metadata while adjusting any debug info metadata by the original
|
||||||
|
// global's offset within the merged global.
|
||||||
|
MergedGV->copyMetadata(Globals[k], MergedLayout->getElementOffset(idx));
|
||||||
|
|
||||||
Constant *Idx[2] = {
|
Constant *Idx[2] = {
|
||||||
ConstantInt::get(Int32Ty, 0),
|
ConstantInt::get(Int32Ty, 0),
|
||||||
ConstantInt::get(Int32Ty, idx),
|
ConstantInt::get(Int32Ty, idx),
|
||||||
|
@ -1816,7 +1816,7 @@ static void writeDIGlobalVariable(raw_ostream &Out, const DIGlobalVariable *N,
|
|||||||
Printer.printMetadata("type", N->getRawType());
|
Printer.printMetadata("type", N->getRawType());
|
||||||
Printer.printBool("isLocal", N->isLocalToUnit());
|
Printer.printBool("isLocal", N->isLocalToUnit());
|
||||||
Printer.printBool("isDefinition", N->isDefinition());
|
Printer.printBool("isDefinition", N->isDefinition());
|
||||||
Printer.printMetadata("variable", N->getRawVariable());
|
Printer.printMetadata("expr", N->getExpr());
|
||||||
Printer.printMetadata("declaration", N->getRawStaticDataMemberDeclaration());
|
Printer.printMetadata("declaration", N->getRawStaticDataMemberDeclaration());
|
||||||
Out << ")";
|
Out << ")";
|
||||||
}
|
}
|
||||||
|
@ -535,13 +535,13 @@ static void checkGlobalVariableScope(DIScope *Context) {
|
|||||||
|
|
||||||
DIGlobalVariable *DIBuilder::createGlobalVariable(
|
DIGlobalVariable *DIBuilder::createGlobalVariable(
|
||||||
DIScope *Context, StringRef Name, StringRef LinkageName, DIFile *F,
|
DIScope *Context, StringRef Name, StringRef LinkageName, DIFile *F,
|
||||||
unsigned LineNumber, DIType *Ty, bool isLocalToUnit, Constant *Val,
|
unsigned LineNumber, DIType *Ty, bool isLocalToUnit, DIExpression *Expr,
|
||||||
MDNode *Decl) {
|
MDNode *Decl) {
|
||||||
checkGlobalVariableScope(Context);
|
checkGlobalVariableScope(Context);
|
||||||
|
|
||||||
auto *N = DIGlobalVariable::getDistinct(
|
auto *N = DIGlobalVariable::getDistinct(
|
||||||
VMContext, cast_or_null<DIScope>(Context), Name, LinkageName, F,
|
VMContext, cast_or_null<DIScope>(Context), Name, LinkageName, F,
|
||||||
LineNumber, Ty, isLocalToUnit, true, Val,
|
LineNumber, Ty, isLocalToUnit, true, Expr,
|
||||||
cast_or_null<DIDerivedType>(Decl));
|
cast_or_null<DIDerivedType>(Decl));
|
||||||
AllGVs.push_back(N);
|
AllGVs.push_back(N);
|
||||||
return N;
|
return N;
|
||||||
@ -549,13 +549,13 @@ DIGlobalVariable *DIBuilder::createGlobalVariable(
|
|||||||
|
|
||||||
DIGlobalVariable *DIBuilder::createTempGlobalVariableFwdDecl(
|
DIGlobalVariable *DIBuilder::createTempGlobalVariableFwdDecl(
|
||||||
DIScope *Context, StringRef Name, StringRef LinkageName, DIFile *F,
|
DIScope *Context, StringRef Name, StringRef LinkageName, DIFile *F,
|
||||||
unsigned LineNumber, DIType *Ty, bool isLocalToUnit, Constant *Val,
|
unsigned LineNumber, DIType *Ty, bool isLocalToUnit, DIExpression *Expr,
|
||||||
MDNode *Decl) {
|
MDNode *Decl) {
|
||||||
checkGlobalVariableScope(Context);
|
checkGlobalVariableScope(Context);
|
||||||
|
|
||||||
return DIGlobalVariable::getTemporary(
|
return DIGlobalVariable::getTemporary(
|
||||||
VMContext, cast_or_null<DIScope>(Context), Name, LinkageName, F,
|
VMContext, cast_or_null<DIScope>(Context), Name, LinkageName, F,
|
||||||
LineNumber, Ty, isLocalToUnit, false, Val,
|
LineNumber, Ty, isLocalToUnit, false, Expr,
|
||||||
cast_or_null<DIDerivedType>(Decl))
|
cast_or_null<DIDerivedType>(Decl))
|
||||||
.release();
|
.release();
|
||||||
}
|
}
|
||||||
|
@ -551,6 +551,7 @@ unsigned DIExpression::ExprOperand::getSize() const {
|
|||||||
switch (getOp()) {
|
switch (getOp()) {
|
||||||
case dwarf::DW_OP_bit_piece:
|
case dwarf::DW_OP_bit_piece:
|
||||||
return 3;
|
return 3;
|
||||||
|
case dwarf::DW_OP_constu:
|
||||||
case dwarf::DW_OP_plus:
|
case dwarf::DW_OP_plus:
|
||||||
case dwarf::DW_OP_minus:
|
case dwarf::DW_OP_minus:
|
||||||
return 2;
|
return 2;
|
||||||
@ -570,8 +571,11 @@ bool DIExpression::isValid() const {
|
|||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
case dwarf::DW_OP_bit_piece:
|
case dwarf::DW_OP_bit_piece:
|
||||||
// Piece expressions must be at the end.
|
case dwarf::DW_OP_stack_value:
|
||||||
|
// We only support bit piece and stack value expressions which appear at
|
||||||
|
// the end.
|
||||||
return I->get() + I->getSize() == E->get();
|
return I->get() + I->getSize() == E->get();
|
||||||
|
case dwarf::DW_OP_constu:
|
||||||
case dwarf::DW_OP_plus:
|
case dwarf::DW_OP_plus:
|
||||||
case dwarf::DW_OP_minus:
|
case dwarf::DW_OP_minus:
|
||||||
case dwarf::DW_OP_deref:
|
case dwarf::DW_OP_deref:
|
||||||
|
@ -758,23 +758,23 @@ template <> struct MDNodeKeyImpl<DIGlobalVariable> {
|
|||||||
Metadata *Type;
|
Metadata *Type;
|
||||||
bool IsLocalToUnit;
|
bool IsLocalToUnit;
|
||||||
bool IsDefinition;
|
bool IsDefinition;
|
||||||
Metadata *Variable;
|
Metadata *Expr;
|
||||||
Metadata *StaticDataMemberDeclaration;
|
Metadata *StaticDataMemberDeclaration;
|
||||||
|
|
||||||
MDNodeKeyImpl(Metadata *Scope, MDString *Name, MDString *LinkageName,
|
MDNodeKeyImpl(Metadata *Scope, MDString *Name, MDString *LinkageName,
|
||||||
Metadata *File, unsigned Line, Metadata *Type,
|
Metadata *File, unsigned Line, Metadata *Type,
|
||||||
bool IsLocalToUnit, bool IsDefinition, Metadata *Variable,
|
bool IsLocalToUnit, bool IsDefinition, Metadata *Expr,
|
||||||
Metadata *StaticDataMemberDeclaration)
|
Metadata *StaticDataMemberDeclaration)
|
||||||
: Scope(Scope), Name(Name), LinkageName(LinkageName), File(File),
|
: Scope(Scope), Name(Name), LinkageName(LinkageName), File(File),
|
||||||
Line(Line), Type(Type), IsLocalToUnit(IsLocalToUnit),
|
Line(Line), Type(Type), IsLocalToUnit(IsLocalToUnit),
|
||||||
IsDefinition(IsDefinition), Variable(Variable),
|
IsDefinition(IsDefinition), Expr(Expr),
|
||||||
StaticDataMemberDeclaration(StaticDataMemberDeclaration) {}
|
StaticDataMemberDeclaration(StaticDataMemberDeclaration) {}
|
||||||
MDNodeKeyImpl(const DIGlobalVariable *N)
|
MDNodeKeyImpl(const DIGlobalVariable *N)
|
||||||
: Scope(N->getRawScope()), Name(N->getRawName()),
|
: Scope(N->getRawScope()), Name(N->getRawName()),
|
||||||
LinkageName(N->getRawLinkageName()), File(N->getRawFile()),
|
LinkageName(N->getRawLinkageName()), File(N->getRawFile()),
|
||||||
Line(N->getLine()), Type(N->getRawType()),
|
Line(N->getLine()), Type(N->getRawType()),
|
||||||
IsLocalToUnit(N->isLocalToUnit()), IsDefinition(N->isDefinition()),
|
IsLocalToUnit(N->isLocalToUnit()), IsDefinition(N->isDefinition()),
|
||||||
Variable(N->getRawVariable()),
|
Expr(N->getRawExpr()),
|
||||||
StaticDataMemberDeclaration(N->getRawStaticDataMemberDeclaration()) {}
|
StaticDataMemberDeclaration(N->getRawStaticDataMemberDeclaration()) {}
|
||||||
|
|
||||||
bool isKeyOf(const DIGlobalVariable *RHS) const {
|
bool isKeyOf(const DIGlobalVariable *RHS) const {
|
||||||
@ -783,13 +783,13 @@ template <> struct MDNodeKeyImpl<DIGlobalVariable> {
|
|||||||
File == RHS->getRawFile() && Line == RHS->getLine() &&
|
File == RHS->getRawFile() && Line == RHS->getLine() &&
|
||||||
Type == RHS->getRawType() && IsLocalToUnit == RHS->isLocalToUnit() &&
|
Type == RHS->getRawType() && IsLocalToUnit == RHS->isLocalToUnit() &&
|
||||||
IsDefinition == RHS->isDefinition() &&
|
IsDefinition == RHS->isDefinition() &&
|
||||||
Variable == RHS->getRawVariable() &&
|
Expr == RHS->getRawExpr() &&
|
||||||
StaticDataMemberDeclaration ==
|
StaticDataMemberDeclaration ==
|
||||||
RHS->getRawStaticDataMemberDeclaration();
|
RHS->getRawStaticDataMemberDeclaration();
|
||||||
}
|
}
|
||||||
unsigned getHashValue() const {
|
unsigned getHashValue() const {
|
||||||
return hash_combine(Scope, Name, LinkageName, File, Line, Type,
|
return hash_combine(Scope, Name, LinkageName, File, Line, Type,
|
||||||
IsLocalToUnit, IsDefinition, Variable,
|
IsLocalToUnit, IsDefinition, Expr,
|
||||||
StaticDataMemberDeclaration);
|
StaticDataMemberDeclaration);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -1424,6 +1424,21 @@ void GlobalObject::copyMetadata(const GlobalObject *Other, unsigned Offset) {
|
|||||||
*MDNode::get(getContext(), {NewOffsetMD, TypeId}));
|
*MDNode::get(getContext(), {NewOffsetMD, TypeId}));
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
// If an offset adjustment was specified we need to modify the DIExpression
|
||||||
|
// to prepend the adjustment:
|
||||||
|
// !DIExpression(DW_OP_plus, Offset, [original expr])
|
||||||
|
if (Offset != 0 && MD.first == LLVMContext::MD_dbg) {
|
||||||
|
DIGlobalVariable *GV = cast<DIGlobalVariable>(MD.second);
|
||||||
|
DIExpression *E = GV->getExpr();
|
||||||
|
ArrayRef<uint64_t> OrigElements;
|
||||||
|
if (E)
|
||||||
|
OrigElements = E->getElements();
|
||||||
|
std::vector<uint64_t> Elements(OrigElements.size() + 2);
|
||||||
|
Elements[0] = dwarf::DW_OP_plus;
|
||||||
|
Elements[1] = Offset;
|
||||||
|
std::copy(OrigElements.begin(), OrigElements.end(), Elements.begin() + 2);
|
||||||
|
GV->replaceExpr(DIExpression::get(getContext(), Elements));
|
||||||
|
}
|
||||||
addMetadata(MD.first, *MD.second);
|
addMetadata(MD.first, *MD.second);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1444,3 +1459,15 @@ void Function::setSubprogram(DISubprogram *SP) {
|
|||||||
DISubprogram *Function::getSubprogram() const {
|
DISubprogram *Function::getSubprogram() const {
|
||||||
return cast_or_null<DISubprogram>(getMetadata(LLVMContext::MD_dbg));
|
return cast_or_null<DISubprogram>(getMetadata(LLVMContext::MD_dbg));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GlobalVariable::addDebugInfo(DIGlobalVariable *GV) {
|
||||||
|
addMetadata(LLVMContext::MD_dbg, *GV);
|
||||||
|
}
|
||||||
|
|
||||||
|
void GlobalVariable::getDebugInfo(
|
||||||
|
SmallVectorImpl<DIGlobalVariable *> &GVs) const {
|
||||||
|
SmallVector<MDNode *, 1> MDs;
|
||||||
|
getMetadata(LLVMContext::MD_dbg, MDs);
|
||||||
|
for (MDNode *MD : MDs)
|
||||||
|
GVs.push_back(cast<DIGlobalVariable>(MD));
|
||||||
|
}
|
||||||
|
@ -1112,12 +1112,8 @@ void Verifier::visitDIGlobalVariable(const DIGlobalVariable &N) {
|
|||||||
|
|
||||||
AssertDI(N.getTag() == dwarf::DW_TAG_variable, "invalid tag", &N);
|
AssertDI(N.getTag() == dwarf::DW_TAG_variable, "invalid tag", &N);
|
||||||
AssertDI(!N.getName().empty(), "missing global variable name", &N);
|
AssertDI(!N.getName().empty(), "missing global variable name", &N);
|
||||||
if (auto *V = N.getRawVariable()) {
|
if (auto *V = N.getRawExpr())
|
||||||
AssertDI(isa<ConstantAsMetadata>(V) &&
|
AssertDI(isa<DIExpression>(V), "invalid expression location", &N, V);
|
||||||
!isa<Function>(cast<ConstantAsMetadata>(V)->getValue()),
|
|
||||||
"invalid global variable ref", &N, V);
|
|
||||||
visitConstantExprsRecursively(cast<ConstantAsMetadata>(V)->getValue());
|
|
||||||
}
|
|
||||||
if (auto *Member = N.getRawStaticDataMemberDeclaration()) {
|
if (auto *Member = N.getRawStaticDataMemberDeclaration()) {
|
||||||
AssertDI(isa<DIDerivedType>(Member),
|
AssertDI(isa<DIDerivedType>(Member),
|
||||||
"invalid static data member declaration", &N, Member);
|
"invalid static data member declaration", &N, Member);
|
||||||
|
@ -465,7 +465,7 @@ class IRLinker {
|
|||||||
|
|
||||||
Error linkModuleFlagsMetadata();
|
Error linkModuleFlagsMetadata();
|
||||||
|
|
||||||
void linkGlobalInit(GlobalVariable &Dst, GlobalVariable &Src);
|
void linkGlobalVariable(GlobalVariable &Dst, GlobalVariable &Src);
|
||||||
Error linkFunctionBody(Function &Dst, Function &Src);
|
Error linkFunctionBody(Function &Dst, Function &Src);
|
||||||
void linkAliasBody(GlobalAlias &Dst, GlobalAlias &Src);
|
void linkAliasBody(GlobalAlias &Dst, GlobalAlias &Src);
|
||||||
Error linkGlobalValueBody(GlobalValue &Dst, GlobalValue &Src);
|
Error linkGlobalValueBody(GlobalValue &Dst, GlobalValue &Src);
|
||||||
@ -942,7 +942,9 @@ Expected<Constant *> IRLinker::linkGlobalValueProto(GlobalValue *SGV,
|
|||||||
|
|
||||||
/// Update the initializers in the Dest module now that all globals that may be
|
/// Update the initializers in the Dest module now that all globals that may be
|
||||||
/// referenced are in Dest.
|
/// referenced are in Dest.
|
||||||
void IRLinker::linkGlobalInit(GlobalVariable &Dst, GlobalVariable &Src) {
|
void IRLinker::linkGlobalVariable(GlobalVariable &Dst, GlobalVariable &Src) {
|
||||||
|
Dst.copyMetadata(&Src, 0);
|
||||||
|
|
||||||
// Figure out what the initializer looks like in the dest module.
|
// Figure out what the initializer looks like in the dest module.
|
||||||
Mapper.scheduleMapGlobalInitializer(Dst, *Src.getInitializer());
|
Mapper.scheduleMapGlobalInitializer(Dst, *Src.getInitializer());
|
||||||
}
|
}
|
||||||
@ -985,7 +987,7 @@ Error IRLinker::linkGlobalValueBody(GlobalValue &Dst, GlobalValue &Src) {
|
|||||||
if (auto *F = dyn_cast<Function>(&Src))
|
if (auto *F = dyn_cast<Function>(&Src))
|
||||||
return linkFunctionBody(cast<Function>(Dst), *F);
|
return linkFunctionBody(cast<Function>(Dst), *F);
|
||||||
if (auto *GVar = dyn_cast<GlobalVariable>(&Src)) {
|
if (auto *GVar = dyn_cast<GlobalVariable>(&Src)) {
|
||||||
linkGlobalInit(cast<GlobalVariable>(Dst), *GVar);
|
linkGlobalVariable(cast<GlobalVariable>(Dst), *GVar);
|
||||||
return Error::success();
|
return Error::success();
|
||||||
}
|
}
|
||||||
linkAliasBody(cast<GlobalAlias>(Dst), cast<GlobalAlias>(Src));
|
linkAliasBody(cast<GlobalAlias>(Dst), cast<GlobalAlias>(Src));
|
||||||
|
@ -312,13 +312,14 @@ bool StripDeadDebugInfo::runOnModule(Module &M) {
|
|||||||
// replace the current list of potentially dead global variables/functions
|
// replace the current list of potentially dead global variables/functions
|
||||||
// with the live list.
|
// with the live list.
|
||||||
SmallVector<Metadata *, 64> LiveGlobalVariables;
|
SmallVector<Metadata *, 64> LiveGlobalVariables;
|
||||||
SmallVector<Metadata *, 64> LiveSubprograms;
|
|
||||||
DenseSet<const MDNode *> VisitedSet;
|
DenseSet<const MDNode *> VisitedSet;
|
||||||
|
|
||||||
std::set<DISubprogram *> LiveSPs;
|
std::set<DIGlobalVariable *> LiveGVs;
|
||||||
for (Function &F : M) {
|
for (GlobalVariable &GV : M.globals()) {
|
||||||
if (DISubprogram *SP = F.getSubprogram())
|
SmallVector<DIGlobalVariable *, 1> DIs;
|
||||||
LiveSPs.insert(SP);
|
GV.getDebugInfo(DIs);
|
||||||
|
for (DIGlobalVariable *DI : DIs)
|
||||||
|
LiveGVs.insert(DI);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (DICompileUnit *DIC : F.compile_units()) {
|
for (DICompileUnit *DIC : F.compile_units()) {
|
||||||
@ -329,9 +330,8 @@ bool StripDeadDebugInfo::runOnModule(Module &M) {
|
|||||||
if (!VisitedSet.insert(DIG).second)
|
if (!VisitedSet.insert(DIG).second)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
// If the global variable referenced by DIG is not null, the global
|
// If a global variable references DIG, the global variable is live.
|
||||||
// variable is live.
|
if (LiveGVs.count(DIG))
|
||||||
if (DIG->getVariable())
|
|
||||||
LiveGlobalVariables.push_back(DIG);
|
LiveGlobalVariables.push_back(DIG);
|
||||||
else
|
else
|
||||||
GlobalVariableChange = true;
|
GlobalVariableChange = true;
|
||||||
@ -345,7 +345,6 @@ bool StripDeadDebugInfo::runOnModule(Module &M) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Reset lists for the next iteration.
|
// Reset lists for the next iteration.
|
||||||
LiveSubprograms.clear();
|
|
||||||
LiveGlobalVariables.clear();
|
LiveGlobalVariables.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
@foo = global i32 0
|
@foo = global i32 0
|
||||||
|
|
||||||
; CHECK: !named = !{!0, !1, !2, !3, !4, !5, !6, !7, !8, !9}
|
; CHECK: !named = !{!0, !1, !2, !3, !4, !5, !6, !8, !9, !10}
|
||||||
!named = !{!0, !1, !2, !3, !4, !5, !6, !7, !8, !9}
|
!named = !{!0, !1, !2, !3, !4, !5, !6, !7, !8, !9}
|
||||||
|
|
||||||
!0 = !DIFile(filename: "scope.h", directory: "/path/to/dir")
|
!0 = !DIFile(filename: "scope.h", directory: "/path/to/dir")
|
||||||
@ -12,16 +12,17 @@
|
|||||||
!3 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
|
!3 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
|
||||||
!4 = distinct !{}
|
!4 = distinct !{}
|
||||||
|
|
||||||
; CHECK: !5 = !DIGlobalVariable(name: "foo", linkageName: "foo", scope: !0, file: !2, line: 7, type: !3, isLocal: true, isDefinition: false, variable: i32* @foo)
|
; CHECK: !5 = !DIGlobalVariable(name: "foo", linkageName: "foo", scope: !0, file: !2, line: 7, type: !3, isLocal: true, isDefinition: false)
|
||||||
!5 = !DIGlobalVariable(name: "foo", linkageName: "foo", scope: !0,
|
!5 = !DIGlobalVariable(name: "foo", linkageName: "foo", scope: !0,
|
||||||
file: !2, line: 7, type: !3, isLocal: true,
|
file: !2, line: 7, type: !3, isLocal: true,
|
||||||
isDefinition: false, variable: i32* @foo)
|
isDefinition: false)
|
||||||
|
|
||||||
; CHECK: !6 = !DIGlobalVariable(name: "foo", scope: !0, isLocal: false, isDefinition: true)
|
; CHECK: !6 = !DIGlobalVariable(name: "foo", scope: !0, isLocal: false, isDefinition: true, expr: !7)
|
||||||
!6 = !DIGlobalVariable(name: "foo", scope: !0)
|
; CHECK: !7 = !DIExpression(DW_OP_constu, 42, DW_OP_stack_value)
|
||||||
|
!6 = !DIGlobalVariable(name: "foo", scope: !0, expr: !DIExpression(DW_OP_constu, 42, DW_OP_stack_value))
|
||||||
|
|
||||||
!7 = !DICompositeType(tag: DW_TAG_structure_type, name: "Class", size: 8, align: 8)
|
!7 = !DICompositeType(tag: DW_TAG_structure_type, name: "Class", size: 8, align: 8)
|
||||||
!8 = !DIDerivedType(tag: DW_TAG_member, name: "mem", flags: DIFlagStaticMember, scope: !7, baseType: !3)
|
!8 = !DIDerivedType(tag: DW_TAG_member, name: "mem", flags: DIFlagStaticMember, scope: !7, baseType: !3)
|
||||||
|
|
||||||
; CHECK: !9 = !DIGlobalVariable(name: "mem", scope: !0, isLocal: false, isDefinition: true, declaration: !8)
|
; CHECK: !10 = !DIGlobalVariable(name: "mem", scope: !0, isLocal: false, isDefinition: true, declaration: !9)
|
||||||
!9 = !DIGlobalVariable(name: "mem", scope: !0, declaration: !8)
|
!9 = !DIGlobalVariable(name: "mem", scope: !0, declaration: !8)
|
||||||
|
8
test/Bitcode/diglobalvariable-3.8.ll
Normal file
8
test/Bitcode/diglobalvariable-3.8.ll
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
; RUN: llvm-dis -o - %s.bc | FileCheck %s
|
||||||
|
|
||||||
|
; CHECK: !0 = distinct !DIGlobalVariable(name: "a", scope: null, isLocal: false, isDefinition: true, expr: !1)
|
||||||
|
; CHECK: !1 = !DIExpression(DW_OP_constu, 42, DW_OP_stack_value)
|
||||||
|
|
||||||
|
!named = !{!0}
|
||||||
|
|
||||||
|
!0 = distinct !DIGlobalVariable(name: "a", variable: i32 42)
|
BIN
test/Bitcode/diglobalvariable-3.8.ll.bc
Normal file
BIN
test/Bitcode/diglobalvariable-3.8.ll.bc
Normal file
Binary file not shown.
@ -4,20 +4,22 @@
|
|||||||
; Establish a stable order.
|
; Establish a stable order.
|
||||||
!named = !{!0, !1, !2, !3, !4, !6, !7, !8, !9, !10, !11, !12, !13, !14, !15, !16}
|
!named = !{!0, !1, !2, !3, !4, !6, !7, !8, !9, !10, !11, !12, !13, !14, !15, !16}
|
||||||
|
|
||||||
; CHECK: !0 = !DIFile(filename: "path/to/file", directory: "/path/to/dir")
|
; CHECK: @G1 = global i32 0, !dbg !0
|
||||||
|
|
||||||
|
; CHECK: !0 = !DIGlobalVariable(name: "G",{{.*}} type: !1,
|
||||||
; CHECK-NEXT: !1 = !DICompositeType(tag: DW_TAG_structure_type, name: "T1"{{.*}}, identifier: "T1")
|
; CHECK-NEXT: !1 = !DICompositeType(tag: DW_TAG_structure_type, name: "T1"{{.*}}, identifier: "T1")
|
||||||
; CHECK-NEXT: !2 = !DICompositeType(tag: DW_TAG_structure_type, name: "T2", scope: !1{{.*}}, baseType: !1, vtableHolder: !1, identifier: "T2")
|
; CHECK-NEXT: !2 = !DIFile(filename: "path/to/file", directory: "/path/to/dir")
|
||||||
; CHECK-NEXT: !3 = !DIDerivedType(tag: DW_TAG_member, name: "M1", scope: !1{{.*}}, baseType: !2)
|
; CHECK-NEXT: !3 = !DICompositeType(tag: DW_TAG_structure_type, name: "T2", scope: !1{{.*}}, baseType: !1, vtableHolder: !1, identifier: "T2")
|
||||||
; CHECK-NEXT: !4 = !DISubroutineType(types: !5)
|
; CHECK-NEXT: !4 = !DIDerivedType(tag: DW_TAG_member, name: "M1", scope: !1{{.*}}, baseType: !3)
|
||||||
; CHECK-NEXT: !5 = !{!1, !2}
|
; CHECK-NEXT: !5 = !DISubroutineType(types: !6)
|
||||||
; CHECK-NEXT: !6 = !DISubprogram(scope: !1,{{.*}} containingType: !1{{[,)]}}
|
; CHECK-NEXT: !6 = !{!1, !3}
|
||||||
; CHECK-NEXT: !7 = !DILocalVariable(name: "V1", scope: !6, type: !2)
|
; CHECK-NEXT: !7 = !DISubprogram(scope: !1,{{.*}} containingType: !1{{[,)]}}
|
||||||
; CHECK-NEXT: !8 = !DIObjCProperty(name: "P1", type: !1)
|
; CHECK-NEXT: !8 = !DILocalVariable(name: "V1", scope: !7, type: !3)
|
||||||
; CHECK-NEXT: !9 = !DITemplateTypeParameter(type: !1)
|
; CHECK-NEXT: !9 = !DIObjCProperty(name: "P1", type: !1)
|
||||||
; CHECK-NEXT: !10 = !DIGlobalVariable(name: "G",{{.*}} type: !1,{{.*}} variable: i32* @G1)
|
; CHECK-NEXT: !10 = !DITemplateTypeParameter(type: !1)
|
||||||
; CHECK-NEXT: !11 = !DITemplateValueParameter(type: !1, value: i32* @G1)
|
; CHECK-NEXT: !11 = !DITemplateValueParameter(type: !1, value: i32* @G1)
|
||||||
; CHECK-NEXT: !12 = !DIImportedEntity(tag: DW_TAG_imported_module, name: "T2", scope: !0, entity: !1)
|
; CHECK-NEXT: !12 = !DIImportedEntity(tag: DW_TAG_imported_module, name: "T2", scope: !2, entity: !1)
|
||||||
; CHECK-NEXT: !13 = !DICompositeType(tag: DW_TAG_structure_type, name: "T3", file: !0, elements: !14, identifier: "T3")
|
; CHECK-NEXT: !13 = !DICompositeType(tag: DW_TAG_structure_type, name: "T3", file: !2, elements: !14, identifier: "T3")
|
||||||
; CHECK-NEXT: !14 = !{!15}
|
; CHECK-NEXT: !14 = !{!15}
|
||||||
; CHECK-NEXT: !15 = !DISubprogram(scope: !13,
|
; CHECK-NEXT: !15 = !DISubprogram(scope: !13,
|
||||||
; CHECK-NEXT: !16 = !DIDerivedType(tag: DW_TAG_ptr_to_member_type,{{.*}} extraData: !13)
|
; CHECK-NEXT: !16 = !DIDerivedType(tag: DW_TAG_ptr_to_member_type,{{.*}} extraData: !13)
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
target datalayout = "e-p:32:32:32-i1:8:32-i8:8:32-i16:16:32-i32:32:32-i64:32:32-f32:32:32-f64:32:32-v64:64:64-v128:128:128-a0:0:32-n32"
|
target datalayout = "e-p:32:32:32-i1:8:32-i8:8:32-i16:16:32-i32:32:32-i64:32:32-f32:32:32-f64:32:32-v64:64:64-v128:128:128-a0:0:32-n32"
|
||||||
target triple = "thumbv7-apple-darwin3.0.0-iphoneos"
|
target triple = "thumbv7-apple-darwin3.0.0-iphoneos"
|
||||||
|
|
||||||
@length = common global i32 0, align 4 ; <i32*> [#uses=1]
|
@length = common global i32 0, align 4, !dbg !14 ; <i32*> [#uses=1]
|
||||||
|
|
||||||
define void @x0(i8* nocapture %buf, i32 %nbytes) nounwind optsize {
|
define void @x0(i8* nocapture %buf, i32 %nbytes) nounwind optsize {
|
||||||
entry:
|
entry:
|
||||||
@ -60,7 +60,7 @@ declare void @llvm.dbg.value(metadata, i64, metadata, metadata) nounwind readnon
|
|||||||
!11 = distinct !DILexicalBlock(line: 5, column: 1, file: !26, scope: !1)
|
!11 = distinct !DILexicalBlock(line: 5, column: 1, file: !26, scope: !1)
|
||||||
!12 = !DILocalVariable(name: "c", line: 7, scope: !11, file: !2, type: !13)
|
!12 = !DILocalVariable(name: "c", line: 7, scope: !11, file: !2, type: !13)
|
||||||
!13 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
|
!13 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
|
||||||
!14 = !DIGlobalVariable(name: "length", linkageName: "length", line: 1, isLocal: false, isDefinition: true, scope: !2, file: !2, type: !13, variable: i32* @length)
|
!14 = !DIGlobalVariable(name: "length", linkageName: "length", line: 1, isLocal: false, isDefinition: true, scope: !2, file: !2, type: !13)
|
||||||
!15 = !DILocation(line: 4, column: 24, scope: !1)
|
!15 = !DILocation(line: 4, column: 24, scope: !1)
|
||||||
!16 = !DILocation(line: 4, column: 43, scope: !1)
|
!16 = !DILocation(line: 4, column: 43, scope: !1)
|
||||||
!17 = !DILocation(line: 9, column: 2, scope: !11)
|
!17 = !DILocation(line: 9, column: 2, scope: !11)
|
||||||
|
@ -3,11 +3,11 @@
|
|||||||
target datalayout = "e-p:32:32:32-i1:8:32-i8:8:32-i16:16:32-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:32:64-v128:32:128-a0:0:32-n32"
|
target datalayout = "e-p:32:32:32-i1:8:32-i8:8:32-i16:16:32-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:32:64-v128:32:128-a0:0:32-n32"
|
||||||
target triple = "thumbv7-apple-darwin10"
|
target triple = "thumbv7-apple-darwin10"
|
||||||
|
|
||||||
@x1 = internal global i8 1, align 1
|
@x1 = internal global i8 1, align 1, !dbg !13
|
||||||
@x2 = internal global i8 1, align 1
|
@x2 = internal global i8 1, align 1, !dbg !14
|
||||||
@x3 = internal global i8 1, align 1
|
@x3 = internal global i8 1, align 1, !dbg !15
|
||||||
@x4 = internal global i8 1, align 1
|
@x4 = internal global i8 1, align 1, !dbg !16
|
||||||
@x5 = global i8 1, align 1
|
@x5 = global i8 1, align 1, !dbg !17
|
||||||
|
|
||||||
; Check debug info output for merged global.
|
; Check debug info output for merged global.
|
||||||
; DW_AT_location
|
; DW_AT_location
|
||||||
@ -21,12 +21,12 @@ target triple = "thumbv7-apple-darwin10"
|
|||||||
; CHECK-NOT: DW_TAG
|
; CHECK-NOT: DW_TAG
|
||||||
; CHECK: DW_AT_name {{.*}} "x1"
|
; CHECK: DW_AT_name {{.*}} "x1"
|
||||||
; CHECK-NOT: {{DW_TAG|NULL}}
|
; CHECK-NOT: {{DW_TAG|NULL}}
|
||||||
; CHECK: DW_AT_location [DW_FORM_exprloc] (<0x8> 03 [[ADDR:.. .. .. ..]] 10 00 22 )
|
; CHECK: DW_AT_location [DW_FORM_exprloc] (<0x5> 03 [[ADDR:.. .. .. ..]] )
|
||||||
; CHECK: DW_TAG_variable
|
; CHECK: DW_TAG_variable
|
||||||
; CHECK-NOT: DW_TAG
|
; CHECK-NOT: DW_TAG
|
||||||
; CHECK: DW_AT_name {{.*}} "x2"
|
; CHECK: DW_AT_name {{.*}} "x2"
|
||||||
; CHECK-NOT: {{DW_TAG|NULL}}
|
; CHECK-NOT: {{DW_TAG|NULL}}
|
||||||
; CHECK: DW_AT_location [DW_FORM_exprloc] (<0x8> 03 [[ADDR]] 10 01 22 )
|
; CHECK: DW_AT_location [DW_FORM_exprloc] (<0x7> 03 [[ADDR]] 23 01 )
|
||||||
|
|
||||||
define zeroext i8 @get1(i8 zeroext %a) nounwind optsize !dbg !0 {
|
define zeroext i8 @get1(i8 zeroext %a) nounwind optsize !dbg !0 {
|
||||||
entry:
|
entry:
|
||||||
@ -91,11 +91,11 @@ entry:
|
|||||||
!10 = !DILocalVariable(name: "a", line: 4, arg: 1, scope: !0, file: !1, type: !5)
|
!10 = !DILocalVariable(name: "a", line: 4, arg: 1, scope: !0, file: !1, type: !5)
|
||||||
!11 = !DILocalVariable(name: "b", line: 4, scope: !12, file: !1, type: !5)
|
!11 = !DILocalVariable(name: "b", line: 4, scope: !12, file: !1, type: !5)
|
||||||
!12 = distinct !DILexicalBlock(line: 4, column: 0, file: !47, scope: !0)
|
!12 = distinct !DILexicalBlock(line: 4, column: 0, file: !47, scope: !0)
|
||||||
!13 = !DIGlobalVariable(name: "x1", line: 3, isLocal: true, isDefinition: true, scope: !1, file: !1, type: !5, variable: i8* @x1)
|
!13 = !DIGlobalVariable(name: "x1", line: 3, isLocal: true, isDefinition: true, scope: !1, file: !1, type: !5)
|
||||||
!14 = !DIGlobalVariable(name: "x2", line: 6, isLocal: true, isDefinition: true, scope: !1, file: !1, type: !5, variable: i8* @x2)
|
!14 = !DIGlobalVariable(name: "x2", line: 6, isLocal: true, isDefinition: true, scope: !1, file: !1, type: !5)
|
||||||
!15 = !DIGlobalVariable(name: "x3", line: 9, isLocal: true, isDefinition: true, scope: !1, file: !1, type: !5, variable: i8* @x3)
|
!15 = !DIGlobalVariable(name: "x3", line: 9, isLocal: true, isDefinition: true, scope: !1, file: !1, type: !5)
|
||||||
!16 = !DIGlobalVariable(name: "x4", line: 12, isLocal: true, isDefinition: true, scope: !1, file: !1, type: !5, variable: i8* @x4)
|
!16 = !DIGlobalVariable(name: "x4", line: 12, isLocal: true, isDefinition: true, scope: !1, file: !1, type: !5)
|
||||||
!17 = !DIGlobalVariable(name: "x5", line: 15, isLocal: false, isDefinition: true, scope: !1, file: !1, type: !5, variable: i8* @x5)
|
!17 = !DIGlobalVariable(name: "x5", line: 15, isLocal: false, isDefinition: true, scope: !1, file: !1, type: !5)
|
||||||
!18 = !DILocalVariable(name: "a", line: 7, arg: 1, scope: !6, file: !1, type: !5)
|
!18 = !DILocalVariable(name: "a", line: 7, arg: 1, scope: !6, file: !1, type: !5)
|
||||||
!19 = !DILocalVariable(name: "b", line: 7, scope: !20, file: !1, type: !5)
|
!19 = !DILocalVariable(name: "b", line: 7, scope: !20, file: !1, type: !5)
|
||||||
!20 = distinct !DILexicalBlock(line: 7, column: 0, file: !47, scope: !6)
|
!20 = distinct !DILexicalBlock(line: 7, column: 0, file: !47, scope: !6)
|
||||||
|
@ -12,18 +12,18 @@
|
|||||||
; CHECK-NOT: DW_TAG
|
; CHECK-NOT: DW_TAG
|
||||||
; CHECK: DW_AT_name {{.*}} "x1"
|
; CHECK: DW_AT_name {{.*}} "x1"
|
||||||
; CHECK-NOT: {{DW_TAG|NULL}}
|
; CHECK-NOT: {{DW_TAG|NULL}}
|
||||||
; CHECK: DW_AT_location [DW_FORM_exprloc] (<0x8> 03 [[ADDR:.. .. .. ..]] 10 00 22 )
|
; CHECK: DW_AT_location [DW_FORM_exprloc] (<0x5> 03 [[ADDR:.. .. .. ..]] )
|
||||||
; CHECK: DW_TAG_variable
|
; CHECK: DW_TAG_variable
|
||||||
; CHECK-NOT: DW_TAG
|
; CHECK-NOT: DW_TAG
|
||||||
; CHECK: DW_AT_name {{.*}} "x2"
|
; CHECK: DW_AT_name {{.*}} "x2"
|
||||||
; CHECK-NOT: {{DW_TAG|NULL}}
|
; CHECK-NOT: {{DW_TAG|NULL}}
|
||||||
; CHECK: DW_AT_location [DW_FORM_exprloc] (<0x8> 03 [[ADDR]] 10 04 22 )
|
; CHECK: DW_AT_location [DW_FORM_exprloc] (<0x7> 03 [[ADDR]] 23 04 )
|
||||||
|
|
||||||
target datalayout = "e-p:32:32:32-i1:8:32-i8:8:32-i16:16:32-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:32:64-v128:32:128-a0:0:32-n32"
|
target datalayout = "e-p:32:32:32-i1:8:32-i8:8:32-i16:16:32-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:32:64-v128:32:128-a0:0:32-n32"
|
||||||
target triple = "thumbv7-apple-macosx10.7.0"
|
target triple = "thumbv7-apple-macosx10.7.0"
|
||||||
|
|
||||||
@x1 = internal unnamed_addr global i32 1, align 4
|
@x1 = internal unnamed_addr global i32 1, align 4, !dbg !25
|
||||||
@x2 = internal unnamed_addr global i32 2, align 4
|
@x2 = internal unnamed_addr global i32 2, align 4, !dbg !26
|
||||||
@x3 = internal unnamed_addr global i32 3, align 4
|
@x3 = internal unnamed_addr global i32 3, align 4
|
||||||
@x4 = internal unnamed_addr global i32 4, align 4
|
@x4 = internal unnamed_addr global i32 4, align 4
|
||||||
@x5 = global i32 0, align 4
|
@x5 = global i32 0, align 4
|
||||||
@ -95,8 +95,8 @@ declare void @llvm.dbg.value(metadata, i64, metadata, metadata) nounwind readnon
|
|||||||
!19 = !DILocalVariable(name: "a", line: 14, arg: 1, scope: !8, file: !2, type: !5)
|
!19 = !DILocalVariable(name: "a", line: 14, arg: 1, scope: !8, file: !2, type: !5)
|
||||||
!20 = !DILocalVariable(name: "b", line: 14, scope: !21, file: !2, type: !5)
|
!20 = !DILocalVariable(name: "b", line: 14, scope: !21, file: !2, type: !5)
|
||||||
!21 = distinct !DILexicalBlock(line: 14, column: 19, file: !47, scope: !8)
|
!21 = distinct !DILexicalBlock(line: 14, column: 19, file: !47, scope: !8)
|
||||||
!25 = !DIGlobalVariable(name: "x1", line: 4, isLocal: true, isDefinition: true, scope: !0, file: !2, type: !5, variable: i32* @x1)
|
!25 = !DIGlobalVariable(name: "x1", line: 4, isLocal: true, isDefinition: true, scope: !0, file: !2, type: !5)
|
||||||
!26 = !DIGlobalVariable(name: "x2", line: 7, isLocal: true, isDefinition: true, scope: !0, file: !2, type: !5, variable: i32* @x2)
|
!26 = !DIGlobalVariable(name: "x2", line: 7, isLocal: true, isDefinition: true, scope: !0, file: !2, type: !5)
|
||||||
!27 = !DILocalVariable(name: "a", line: 17, arg: 1, scope: !9, file: !2, type: !5)
|
!27 = !DILocalVariable(name: "a", line: 17, arg: 1, scope: !9, file: !2, type: !5)
|
||||||
!28 = !DILocalVariable(name: "b", line: 17, scope: !29, file: !2, type: !5)
|
!28 = !DILocalVariable(name: "b", line: 17, scope: !29, file: !2, type: !5)
|
||||||
!29 = distinct !DILexicalBlock(line: 17, column: 19, file: !47, scope: !9)
|
!29 = distinct !DILexicalBlock(line: 17, column: 19, file: !47, scope: !9)
|
||||||
|
@ -9,10 +9,10 @@
|
|||||||
target datalayout = "e-p:32:32:32-i1:8:32-i8:8:32-i16:16:32-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:32:64-v128:32:128-a0:0:32-n32-S32"
|
target datalayout = "e-p:32:32:32-i1:8:32-i8:8:32-i16:16:32-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:32:64-v128:32:128-a0:0:32-n32-S32"
|
||||||
target triple = "thumbv7-apple-ios3.0.0"
|
target triple = "thumbv7-apple-ios3.0.0"
|
||||||
|
|
||||||
@c = common global i32 0, align 4
|
@c = common global i32 0, align 4, !dbg !19
|
||||||
@b = common global i32 0, align 4
|
@b = common global i32 0, align 4, !dbg !18
|
||||||
@a = common global i64 0, align 8
|
@a = common global i64 0, align 8, !dbg !16
|
||||||
@d = common global i32 0, align 4
|
@d = common global i32 0, align 4, !dbg !20
|
||||||
|
|
||||||
; Function Attrs: nounwind ssp
|
; Function Attrs: nounwind ssp
|
||||||
define i32 @pr16110() #0 !dbg !4 {
|
define i32 @pr16110() #0 !dbg !4 {
|
||||||
@ -94,11 +94,11 @@ attributes #3 = { nounwind }
|
|||||||
!13 = distinct !DILexicalBlock(line: 12, column: 0, file: !1, scope: !4)
|
!13 = distinct !DILexicalBlock(line: 12, column: 0, file: !1, scope: !4)
|
||||||
!14 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 32, align: 32, baseType: !8)
|
!14 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 32, align: 32, baseType: !8)
|
||||||
!15 = !{!16, !18, !19, !20}
|
!15 = !{!16, !18, !19, !20}
|
||||||
!16 = !DIGlobalVariable(name: "a", line: 1, isLocal: false, isDefinition: true, scope: null, file: !5, type: !17, variable: i64* @a)
|
!16 = !DIGlobalVariable(name: "a", line: 1, isLocal: false, isDefinition: true, scope: null, file: !5, type: !17)
|
||||||
!17 = !DIBasicType(tag: DW_TAG_base_type, name: "long long int", size: 64, align: 32, encoding: DW_ATE_signed)
|
!17 = !DIBasicType(tag: DW_TAG_base_type, name: "long long int", size: 64, align: 32, encoding: DW_ATE_signed)
|
||||||
!18 = !DIGlobalVariable(name: "b", line: 2, isLocal: false, isDefinition: true, scope: null, file: !5, type: !8, variable: i32* @b)
|
!18 = !DIGlobalVariable(name: "b", line: 2, isLocal: false, isDefinition: true, scope: null, file: !5, type: !8)
|
||||||
!19 = !DIGlobalVariable(name: "c", line: 3, isLocal: false, isDefinition: true, scope: null, file: !5, type: !8, variable: i32* @c)
|
!19 = !DIGlobalVariable(name: "c", line: 3, isLocal: false, isDefinition: true, scope: null, file: !5, type: !8)
|
||||||
!20 = !DIGlobalVariable(name: "d", line: 4, isLocal: false, isDefinition: true, scope: null, file: !5, type: !8, variable: i32* @d)
|
!20 = !DIGlobalVariable(name: "d", line: 4, isLocal: false, isDefinition: true, scope: null, file: !5, type: !8)
|
||||||
!21 = !DILocation(line: 10, scope: !22)
|
!21 = !DILocation(line: 10, scope: !22)
|
||||||
!22 = distinct !DILexicalBlock(line: 10, column: 0, file: !1, scope: !4)
|
!22 = distinct !DILexicalBlock(line: 10, column: 0, file: !1, scope: !4)
|
||||||
!26 = !DILocation(line: 12, scope: !13)
|
!26 = !DILocation(line: 12, scope: !13)
|
||||||
|
@ -7,7 +7,7 @@ target triple = "nvptx64-nvidia-cuda"
|
|||||||
|
|
||||||
; Generic space variables should be converted to global space AKA addrspace(1).
|
; Generic space variables should be converted to global space AKA addrspace(1).
|
||||||
; CHECK-DAG: @static_var = {{.*}}addrspace(1)
|
; CHECK-DAG: @static_var = {{.*}}addrspace(1)
|
||||||
@static_var = externally_initialized global i8 0, align 1
|
@static_var = externally_initialized global i8 0, align 1, !dbg !4
|
||||||
; CHECK-DAG: @.str = {{.*}}addrspace(1)
|
; CHECK-DAG: @.str = {{.*}}addrspace(1)
|
||||||
@.str = private unnamed_addr constant [4 x i8] c"XXX\00", align 1
|
@.str = private unnamed_addr constant [4 x i8] c"XXX\00", align 1
|
||||||
|
|
||||||
@ -43,12 +43,11 @@ declare void @extfunc(i8 signext)
|
|||||||
; Find list of global variables and make sure it's the one used by DICompileUnit
|
; Find list of global variables and make sure it's the one used by DICompileUnit
|
||||||
; CHECK: [[GLOBALSNODE]] = !{[[GVNODE:![0-9]+]]}
|
; CHECK: [[GLOBALSNODE]] = !{[[GVNODE:![0-9]+]]}
|
||||||
!4 = distinct !DIGlobalVariable(name: "static_var", scope: !0, file: !1, line: 2, type: !5, isLocal: false,
|
!4 = distinct !DIGlobalVariable(name: "static_var", scope: !0, file: !1, line: 2, type: !5, isLocal: false,
|
||||||
isDefinition: true, variable: i8* @static_var)
|
isDefinition: true)
|
||||||
; Debug info must also be updated to reflect new address space.
|
; Debug info must also be updated to reflect new address space.
|
||||||
; CHECK: [[GVNODE]] = distinct !DIGlobalVariable(name: "static_var"
|
; CHECK: [[GVNODE]] = distinct !DIGlobalVariable(name: "static_var"
|
||||||
; CHECK-SAME: scope: [[CUNODE]]
|
; CHECK-SAME: scope: [[CUNODE]]
|
||||||
; CHECK-SAME: type: [[TYPENODE:![0-9]+]]
|
; CHECK-SAME: type: [[TYPENODE:![0-9]+]]
|
||||||
; CHECK-SAME: variable: i8* addrspacecast (i8 addrspace(1)* @static_var to i8*)
|
|
||||||
!5 = !DIBasicType(name: "char", size: 8, align: 8, encoding: DW_ATE_signed_char)
|
!5 = !DIBasicType(name: "char", size: 8, align: 8, encoding: DW_ATE_signed_char)
|
||||||
; CHECK: [[TYPENODE]] = !DIBasicType(name: "char"
|
; CHECK: [[TYPENODE]] = !DIBasicType(name: "char"
|
||||||
!6 = !{i32 2, !"Dwarf Version", i32 4}
|
!6 = !{i32 2, !"Dwarf Version", i32 4}
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
target datalayout = "E-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-f128:128:128-v128:128:128-n32:64"
|
target datalayout = "E-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-f128:128:128-v128:128:128-n32:64"
|
||||||
target triple = "powerpc64-unknown-linux-gnu"
|
target triple = "powerpc64-unknown-linux-gnu"
|
||||||
|
|
||||||
@grid_points = external global [3 x i32], align 4
|
@grid_points = external global [3 x i32], align 4, !dbg !299
|
||||||
|
|
||||||
; Function Attrs: nounwind
|
; Function Attrs: nounwind
|
||||||
define fastcc void @compute_rhs() #0 !dbg !114 {
|
define fastcc void @compute_rhs() #0 !dbg !114 {
|
||||||
@ -352,7 +352,7 @@ attributes #1 = { nounwind readnone }
|
|||||||
!296 = !DILocalVariable(name: "j", line: 907, scope: !293, file: !5, type: !8)
|
!296 = !DILocalVariable(name: "j", line: 907, scope: !293, file: !5, type: !8)
|
||||||
!297 = !DILocalVariable(name: "k", line: 907, scope: !293, file: !5, type: !8)
|
!297 = !DILocalVariable(name: "k", line: 907, scope: !293, file: !5, type: !8)
|
||||||
!298 = !{!299, !304, !305, !309, !310, !311, !312, !313, !314, !315, !316, !317, !318, !319, !320, !321, !322, !323, !324, !325, !326, !327, !328, !329, !330, !331, !332, !333, !334, !335, !336, !337, !338, !339, !340, !341, !342, !343, !347, !350, !351, !352, !353, !354, !355, !356, !360, !361, !362, !363, !364, !365, !366, !367, !368, !369, !370, !371, !372, !373, !374, !375, !376, !377, !378, !379, !380, !381, !382, !383, !384, !385, !386, !387, !388, !389, !390, !391, !392, !393, !394, !395, !396, !397, !398, !399, !400, !401, !402, !403, !404, !405, !406, !407, !408, !409, !410, !411, !412, !413, !414, !415, !416, !417, !418, !419, !422, !426, !427, !430, !431, !434, !435, !436, !437}
|
!298 = !{!299, !304, !305, !309, !310, !311, !312, !313, !314, !315, !316, !317, !318, !319, !320, !321, !322, !323, !324, !325, !326, !327, !328, !329, !330, !331, !332, !333, !334, !335, !336, !337, !338, !339, !340, !341, !342, !343, !347, !350, !351, !352, !353, !354, !355, !356, !360, !361, !362, !363, !364, !365, !366, !367, !368, !369, !370, !371, !372, !373, !374, !375, !376, !377, !378, !379, !380, !381, !382, !383, !384, !385, !386, !387, !388, !389, !390, !391, !392, !393, !394, !395, !396, !397, !398, !399, !400, !401, !402, !403, !404, !405, !406, !407, !408, !409, !410, !411, !412, !413, !414, !415, !416, !417, !418, !419, !422, !426, !427, !430, !431, !434, !435, !436, !437}
|
||||||
!299 = !DIGlobalVariable(name: "grid_points", line: 28, isLocal: true, isDefinition: true, scope: null, file: !300, type: !302, variable: [3 x i32]* @grid_points)
|
!299 = !DIGlobalVariable(name: "grid_points", line: 28, isLocal: true, isDefinition: true, scope: null, file: !300, type: !302)
|
||||||
!300 = !DIFile(filename: "./header.h", directory: "/home/hfinkel/src/NPB2.3-omp-C/BT")
|
!300 = !DIFile(filename: "./header.h", directory: "/home/hfinkel/src/NPB2.3-omp-C/BT")
|
||||||
!301 = !{!"./header.h", !"/home/hfinkel/src/NPB2.3-omp-C/BT"}
|
!301 = !{!"./header.h", !"/home/hfinkel/src/NPB2.3-omp-C/BT"}
|
||||||
!302 = !DICompositeType(tag: DW_TAG_array_type, size: 96, align: 32, baseType: !8, elements: !303)
|
!302 = !DICompositeType(tag: DW_TAG_array_type, size: 96, align: 32, baseType: !8, elements: !303)
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
; Verify that we no longer crash in VSX swap removal when debug values
|
; Verify that we no longer crash in VSX swap removal when debug values
|
||||||
; are in the code stream.
|
; are in the code stream.
|
||||||
|
|
||||||
@php_intpow10.powers = external unnamed_addr constant [23 x double], align 8
|
@php_intpow10.powers = external unnamed_addr constant [23 x double], align 8, !dbg !24
|
||||||
|
|
||||||
; Function Attrs: nounwind
|
; Function Attrs: nounwind
|
||||||
define double @_php_math_round(double %value, i32 signext %places, i32 signext %mode) #0 !dbg !6 {
|
define double @_php_math_round(double %value, i32 signext %places, i32 signext %mode) #0 !dbg !6 {
|
||||||
@ -79,7 +79,7 @@ attributes #3 = { nounwind }
|
|||||||
!21 = !{!22}
|
!21 = !{!22}
|
||||||
!22 = !DILocalVariable(name: "power", arg: 1, scope: !18, file: !1, line: 1, type: !9)
|
!22 = !DILocalVariable(name: "power", arg: 1, scope: !18, file: !1, line: 1, type: !9)
|
||||||
!23 = !{!24}
|
!23 = !{!24}
|
||||||
!24 = !DIGlobalVariable(name: "powers", scope: !18, file: !1, line: 3, type: !25, isLocal: true, isDefinition: true, variable: [23 x double]* @php_intpow10.powers)
|
!24 = !DIGlobalVariable(name: "powers", scope: !18, file: !1, line: 3, type: !25, isLocal: true, isDefinition: true)
|
||||||
!25 = !DICompositeType(tag: DW_TAG_array_type, baseType: !26, size: 1472, align: 64, elements: !27)
|
!25 = !DICompositeType(tag: DW_TAG_array_type, baseType: !26, size: 1472, align: 64, elements: !27)
|
||||||
!26 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !4)
|
!26 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !4)
|
||||||
!27 = !{!28}
|
!27 = !{!28}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
; RUN: llc < %s -mcpu=generic -mtriple=i386-apple-darwin -no-integrated-as
|
; RUN: llc < %s -mcpu=generic -mtriple=i386-apple-darwin -no-integrated-as
|
||||||
|
|
||||||
@g1 = global double 0.000000e+00, align 8
|
@g1 = global double 0.000000e+00, align 8, !dbg !22
|
||||||
@g2 = global i32 0, align 4
|
@g2 = global i32 0, align 4, !dbg !23
|
||||||
|
|
||||||
define void @_Z16fpuop_arithmeticjj(i32, i32) !dbg !4 {
|
define void @_Z16fpuop_arithmeticjj(i32, i32) !dbg !4 {
|
||||||
entry:
|
entry:
|
||||||
@ -64,7 +64,7 @@ declare void @llvm.dbg.value(metadata, i64, metadata, metadata)
|
|||||||
!19 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
|
!19 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
|
||||||
!20 = !DILocalVariable(name: "value", line: 16, scope: !4, file: !6, type: !14)
|
!20 = !DILocalVariable(name: "value", line: 16, scope: !4, file: !6, type: !14)
|
||||||
!21 = !{!22, !23}
|
!21 = !{!22, !23}
|
||||||
!22 = !DIGlobalVariable(name: "g1", line: 5, isLocal: false, isDefinition: true, scope: null, file: !6, type: !14, variable: double* @g1)
|
!22 = !DIGlobalVariable(name: "g1", line: 5, isLocal: false, isDefinition: true, scope: null, file: !6, type: !14)
|
||||||
!23 = !DIGlobalVariable(name: "g2", line: 6, isLocal: false, isDefinition: true, scope: null, file: !6, type: !19, variable: i32* @g2)
|
!23 = !DIGlobalVariable(name: "g2", line: 6, isLocal: false, isDefinition: true, scope: null, file: !6, type: !19)
|
||||||
!24 = !{i32 2, !"Dwarf Version", i32 2}
|
!24 = !{i32 2, !"Dwarf Version", i32 2}
|
||||||
!25 = !{i32 2, !"Debug Info Version", i32 3}
|
!25 = !{i32 2, !"Debug Info Version", i32 3}
|
||||||
|
@ -22,7 +22,7 @@
|
|||||||
|
|
||||||
%class.C = type { i8 }
|
%class.C = type { i8 }
|
||||||
|
|
||||||
@argc = global i8 0, align 1
|
@argc = global i8 0, align 1, !dbg !21
|
||||||
|
|
||||||
declare i32 @test_function(%class.C*, i8 signext, i8 signext, i8 signext, ...)
|
declare i32 @test_function(%class.C*, i8 signext, i8 signext, i8 signext, ...)
|
||||||
|
|
||||||
@ -82,7 +82,7 @@ declare void @llvm.dbg.value(metadata, i64, metadata, metadata)
|
|||||||
!18 = !DILocalVariable(name: "c", line: 7, scope: !13, file: !14, type: !4)
|
!18 = !DILocalVariable(name: "c", line: 7, scope: !13, file: !14, type: !4)
|
||||||
!19 = !DILocalVariable(name: "lc", line: 8, scope: !13, file: !14, type: !11)
|
!19 = !DILocalVariable(name: "lc", line: 8, scope: !13, file: !14, type: !11)
|
||||||
!20 = !{!21}
|
!20 = !{!21}
|
||||||
!21 = !DIGlobalVariable(name: "argc", line: 1, isLocal: false, isDefinition: true, scope: null, file: !14, type: !11, variable: i8* @argc)
|
!21 = !DIGlobalVariable(name: "argc", line: 1, isLocal: false, isDefinition: true, scope: null, file: !14, type: !11)
|
||||||
!22 = !{i32 2, !"Dwarf Version", i32 4}
|
!22 = !{i32 2, !"Dwarf Version", i32 4}
|
||||||
!23 = !{i32 2, !"Debug Info Version", i32 3}
|
!23 = !{i32 2, !"Debug Info Version", i32 3}
|
||||||
!25 = !DILocation(line: 8, column: 3, scope: !13)
|
!25 = !DILocation(line: 8, column: 3, scope: !13)
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
target datalayout = "E-m:e-i64:64-i128:128-n32:64-S128"
|
target datalayout = "E-m:e-i64:64-i128:128-n32:64-S128"
|
||||||
target triple = "aarch64_be--none-eabi"
|
target triple = "aarch64_be--none-eabi"
|
||||||
|
|
||||||
@a = common global i32 0, align 4
|
@a = common global i32 0, align 4, !dbg !4
|
||||||
|
|
||||||
!llvm.dbg.cu = !{!0}
|
!llvm.dbg.cu = !{!0}
|
||||||
!llvm.module.flags = !{!8, !9}
|
!llvm.module.flags = !{!8, !9}
|
||||||
@ -13,7 +13,7 @@ target triple = "aarch64_be--none-eabi"
|
|||||||
!1 = !DIFile(filename: "-", directory: "/work/validation")
|
!1 = !DIFile(filename: "-", directory: "/work/validation")
|
||||||
!2 = !{}
|
!2 = !{}
|
||||||
!3 = !{!4}
|
!3 = !{!4}
|
||||||
!4 = !DIGlobalVariable(name: "a", line: 1, isLocal: false, isDefinition: true, scope: null, file: !5, type: !7, variable: i32* @a)
|
!4 = !DIGlobalVariable(name: "a", line: 1, isLocal: false, isDefinition: true, scope: null, file: !5, type: !7)
|
||||||
!5 = !DIFile(filename: "<stdin>", directory: "/work/validation")
|
!5 = !DIFile(filename: "<stdin>", directory: "/work/validation")
|
||||||
!6 = !{!"<stdin>", !"/work/validation"}
|
!6 = !{!"<stdin>", !"/work/validation"}
|
||||||
!7 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
|
!7 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
|
||||||
|
@ -48,7 +48,7 @@ target triple = "aarch64_be--linux-gnu"
|
|||||||
|
|
||||||
%struct.bitfield = type <{ i8, [3 x i8], i64 }>
|
%struct.bitfield = type <{ i8, [3 x i8], i64 }>
|
||||||
|
|
||||||
@b = common global %struct.bitfield zeroinitializer, align 4
|
@b = common global %struct.bitfield zeroinitializer, align 4, !dbg !4
|
||||||
|
|
||||||
!llvm.dbg.cu = !{!0}
|
!llvm.dbg.cu = !{!0}
|
||||||
!llvm.module.flags = !{!13, !14, !15}
|
!llvm.module.flags = !{!13, !14, !15}
|
||||||
@ -58,7 +58,7 @@ target triple = "aarch64_be--linux-gnu"
|
|||||||
!1 = !DIFile(filename: "bitfields.c", directory: "/")
|
!1 = !DIFile(filename: "bitfields.c", directory: "/")
|
||||||
!2 = !{}
|
!2 = !{}
|
||||||
!3 = !{!4}
|
!3 = !{!4}
|
||||||
!4 = !DIGlobalVariable(name: "b", scope: !0, file: !5, line: 8, type: !6, isLocal: false, isDefinition: true, variable: %struct.bitfield* @b)
|
!4 = !DIGlobalVariable(name: "b", scope: !0, file: !5, line: 8, type: !6, isLocal: false, isDefinition: true)
|
||||||
!5 = !DIFile(filename: "bitfields.c", directory: "/")
|
!5 = !DIFile(filename: "bitfields.c", directory: "/")
|
||||||
!6 = !DICompositeType(tag: DW_TAG_structure_type, name: "bitfield", file: !5, line: 1, size: 96, align: 32, elements: !7)
|
!6 = !DICompositeType(tag: DW_TAG_structure_type, name: "bitfield", file: !5, line: 1, size: 96, align: 32, elements: !7)
|
||||||
!7 = !{!8, !10, !11, !12}
|
!7 = !{!8, !10, !11, !12}
|
||||||
|
@ -39,8 +39,8 @@ target triple = "aarch64-apple-ios"
|
|||||||
%struct.A = type { i8, i8*, i8 }
|
%struct.A = type { i8, i8*, i8 }
|
||||||
%struct.B = type { i8 }
|
%struct.B = type { i8 }
|
||||||
|
|
||||||
@a = global i64 0, align 8
|
@a = global i64 0, align 8, !dbg !41
|
||||||
@b = global i32* null, align 8
|
@b = global i32* null, align 8, !dbg !42
|
||||||
|
|
||||||
define void @_Z3f131A(%struct.A* nocapture readonly %p1) #0 !dbg !25 {
|
define void @_Z3f131A(%struct.A* nocapture readonly %p1) #0 !dbg !25 {
|
||||||
entry:
|
entry:
|
||||||
@ -200,8 +200,8 @@ attributes #5 = { builtin }
|
|||||||
!38 = !DILocalVariable(name: "c", line: 19, scope: !34, file: !26, type: !4)
|
!38 = !DILocalVariable(name: "c", line: 19, scope: !34, file: !26, type: !4)
|
||||||
!39 = !DILocalVariable(name: "d", line: 20, scope: !34, file: !26, type: !14)
|
!39 = !DILocalVariable(name: "d", line: 20, scope: !34, file: !26, type: !14)
|
||||||
!40 = !{!41, !42}
|
!40 = !{!41, !42}
|
||||||
!41 = !DIGlobalVariable(name: "a", line: 1, isLocal: false, isDefinition: true, scope: null, file: !26, type: !20, variable: i64* @a)
|
!41 = !DIGlobalVariable(name: "a", line: 1, isLocal: false, isDefinition: true, scope: null, file: !26, type: !20)
|
||||||
!42 = !DIGlobalVariable(name: "b", line: 7, isLocal: false, isDefinition: true, scope: null, file: !26, type: !12, variable: i32** @b)
|
!42 = !DIGlobalVariable(name: "b", line: 7, isLocal: false, isDefinition: true, scope: null, file: !26, type: !12)
|
||||||
!43 = !{i32 2, !"Dwarf Version", i32 2}
|
!43 = !{i32 2, !"Dwarf Version", i32 2}
|
||||||
!44 = !{i32 2, !"Debug Info Version", i32 3}
|
!44 = !{i32 2, !"Debug Info Version", i32 3}
|
||||||
!45 = !{!"clang version 3.7.0 "}
|
!45 = !{!"clang version 3.7.0 "}
|
||||||
|
@ -12,7 +12,7 @@ target datalayout = "E-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
|
|||||||
|
|
||||||
%struct.S = type { i24 }
|
%struct.S = type { i24 }
|
||||||
|
|
||||||
@s = common global %struct.S zeroinitializer, align 4
|
@s = common global %struct.S zeroinitializer, align 4, !dbg !4
|
||||||
|
|
||||||
!llvm.dbg.cu = !{!0}
|
!llvm.dbg.cu = !{!0}
|
||||||
!llvm.module.flags = !{!12, !13, !14}
|
!llvm.module.flags = !{!12, !13, !14}
|
||||||
@ -22,7 +22,7 @@ target datalayout = "E-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
|
|||||||
!1 = !DIFile(filename: "bitfield.c", directory: "/Volumes/Data/llvm")
|
!1 = !DIFile(filename: "bitfield.c", directory: "/Volumes/Data/llvm")
|
||||||
!2 = !{}
|
!2 = !{}
|
||||||
!3 = !{!4}
|
!3 = !{!4}
|
||||||
!4 = distinct !DIGlobalVariable(name: "s", scope: !0, file: !1, line: 6, type: !5, isLocal: false, isDefinition: true, variable: %struct.S* @s)
|
!4 = distinct !DIGlobalVariable(name: "s", scope: !0, file: !1, line: 6, type: !5, isLocal: false, isDefinition: true)
|
||||||
!5 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "S", file: !1, line: 1, size: 32, align: 32, elements: !6)
|
!5 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "S", file: !1, line: 1, size: 32, align: 32, elements: !6)
|
||||||
!6 = !{!7, !9, !10, !11}
|
!6 = !{!7, !9, !10, !11}
|
||||||
; CHECK: DW_TAG_member
|
; CHECK: DW_TAG_member
|
||||||
|
@ -20,7 +20,7 @@ target triple = "thumbv7-apple-ios"
|
|||||||
|
|
||||||
%struct.anon = type { i8, [5 x i8] }
|
%struct.anon = type { i8, [5 x i8] }
|
||||||
|
|
||||||
@a = common global %struct.anon zeroinitializer, align 1
|
@a = common global %struct.anon zeroinitializer, align 1, !dbg !4
|
||||||
|
|
||||||
!llvm.dbg.cu = !{!0}
|
!llvm.dbg.cu = !{!0}
|
||||||
!llvm.module.flags = !{!11, !12, !13, !14, !15}
|
!llvm.module.flags = !{!11, !12, !13, !14, !15}
|
||||||
@ -30,7 +30,7 @@ target triple = "thumbv7-apple-ios"
|
|||||||
!1 = !DIFile(filename: "test.i", directory: "/")
|
!1 = !DIFile(filename: "test.i", directory: "/")
|
||||||
!2 = !{}
|
!2 = !{}
|
||||||
!3 = !{!4}
|
!3 = !{!4}
|
||||||
!4 = !DIGlobalVariable(name: "a", scope: !0, file: !1, line: 5, type: !5, isLocal: false, isDefinition: true, variable: %struct.anon* @a)
|
!4 = !DIGlobalVariable(name: "a", scope: !0, file: !1, line: 5, type: !5, isLocal: false, isDefinition: true)
|
||||||
!5 = !DICompositeType(tag: DW_TAG_structure_type, file: !1, line: 1, size: 48, align: 8, elements: !6)
|
!5 = !DICompositeType(tag: DW_TAG_structure_type, file: !1, line: 1, size: 48, align: 8, elements: !6)
|
||||||
!6 = !{!7, !9}
|
!6 = !{!7, !9}
|
||||||
!7 = !DIDerivedType(tag: DW_TAG_member, name: "c", scope: !5, file: !1, line: 2, baseType: !8, size: 8, align: 8)
|
!7 = !DIDerivedType(tag: DW_TAG_member, name: "c", scope: !5, file: !1, line: 2, baseType: !8, size: 8, align: 8)
|
||||||
|
@ -15,8 +15,8 @@
|
|||||||
target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
|
target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
|
||||||
target triple = "armv7--linux-gnueabihf"
|
target triple = "armv7--linux-gnueabihf"
|
||||||
|
|
||||||
@ch = common global i8 0, align 1
|
@ch = common global i8 0, align 1, !dbg !8
|
||||||
@b = common global i32 0, align 4
|
@b = common global i32 0, align 4, !dbg !10
|
||||||
|
|
||||||
; Function Attrs: nounwind
|
; Function Attrs: nounwind
|
||||||
define void @proc() #0 !dbg !4 {
|
define void @proc() #0 !dbg !4 {
|
||||||
@ -39,9 +39,9 @@ attributes #0 = { nounwind "less-precise-fpmad"="false" "no-frame-pointer-elim"=
|
|||||||
!5 = !DISubroutineType(types: !6)
|
!5 = !DISubroutineType(types: !6)
|
||||||
!6 = !{null}
|
!6 = !{null}
|
||||||
!7 = !{!8, !10}
|
!7 = !{!8, !10}
|
||||||
!8 = !DIGlobalVariable(name: "ch", scope: !0, file: !1, line: 1, type: !9, isLocal: false, isDefinition: true, variable: i8* @ch)
|
!8 = !DIGlobalVariable(name: "ch", scope: !0, file: !1, line: 1, type: !9, isLocal: false, isDefinition: true)
|
||||||
!9 = !DIBasicType(name: "char", size: 8, align: 8, encoding: DW_ATE_unsigned_char)
|
!9 = !DIBasicType(name: "char", size: 8, align: 8, encoding: DW_ATE_unsigned_char)
|
||||||
!10 = !DIGlobalVariable(name: "b", scope: !0, file: !1, line: 2, type: !11, isLocal: false, isDefinition: true, variable: i32* @b)
|
!10 = !DIGlobalVariable(name: "b", scope: !0, file: !1, line: 2, type: !11, isLocal: false, isDefinition: true)
|
||||||
!11 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
|
!11 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
|
||||||
!12 = !{i32 2, !"Dwarf Version", i32 4}
|
!12 = !{i32 2, !"Dwarf Version", i32 4}
|
||||||
!13 = !{i32 2, !"Debug Info Version", i32 3}
|
!13 = !{i32 2, !"Debug Info Version", i32 3}
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
; Generated with clang with source
|
; Generated with clang with source
|
||||||
; __thread int x;
|
; __thread int x;
|
||||||
|
|
||||||
@x = thread_local global i32 0, align 4
|
@x = thread_local global i32 0, align 4, !dbg !4
|
||||||
|
|
||||||
!llvm.dbg.cu = !{!0}
|
!llvm.dbg.cu = !{!0}
|
||||||
!llvm.module.flags = !{!7, !8}
|
!llvm.module.flags = !{!7, !8}
|
||||||
@ -26,7 +26,7 @@
|
|||||||
!1 = !DIFile(filename: "tls.c", directory: "/tmp")
|
!1 = !DIFile(filename: "tls.c", directory: "/tmp")
|
||||||
!2 = !{}
|
!2 = !{}
|
||||||
!3 = !{!4}
|
!3 = !{!4}
|
||||||
!4 = !DIGlobalVariable(name: "x", line: 1, isLocal: false, isDefinition: true, scope: null, file: !5, type: !6, variable: i32* @x)
|
!4 = !DIGlobalVariable(name: "x", line: 1, isLocal: false, isDefinition: true, scope: null, file: !5, type: !6)
|
||||||
!5 = !DIFile(filename: "tls.c", directory: "/tmp")
|
!5 = !DIFile(filename: "tls.c", directory: "/tmp")
|
||||||
!6 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
|
!6 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
|
||||||
!7 = !{i32 2, !"Dwarf Version", i32 4}
|
!7 = !{i32 2, !"Dwarf Version", i32 4}
|
||||||
|
@ -36,7 +36,7 @@ target triple = "i686-pc-windows-msvc18.0.0"
|
|||||||
%struct.S = type { i32, %struct.anon }
|
%struct.S = type { i32, %struct.anon }
|
||||||
%struct.anon = type { i32 }
|
%struct.anon = type { i32 }
|
||||||
|
|
||||||
@s = common global %struct.S zeroinitializer, align 4
|
@s = common global %struct.S zeroinitializer, align 4, !dbg !4
|
||||||
|
|
||||||
!llvm.dbg.cu = !{!0}
|
!llvm.dbg.cu = !{!0}
|
||||||
!llvm.module.flags = !{!14, !15}
|
!llvm.module.flags = !{!14, !15}
|
||||||
@ -46,7 +46,7 @@ target triple = "i686-pc-windows-msvc18.0.0"
|
|||||||
!1 = !DIFile(filename: "-", directory: "/usr/local/google/home/majnemer/llvm/src")
|
!1 = !DIFile(filename: "-", directory: "/usr/local/google/home/majnemer/llvm/src")
|
||||||
!2 = !{}
|
!2 = !{}
|
||||||
!3 = !{!4}
|
!3 = !{!4}
|
||||||
!4 = distinct !DIGlobalVariable(name: "s", scope: !0, file: !5, line: 5, type: !6, isLocal: false, isDefinition: true, variable: %struct.S* @s)
|
!4 = distinct !DIGlobalVariable(name: "s", scope: !0, file: !5, line: 5, type: !6, isLocal: false, isDefinition: true)
|
||||||
!5 = !DIFile(filename: "<stdin>", directory: "/usr/local/google/home/majnemer/llvm/src")
|
!5 = !DIFile(filename: "<stdin>", directory: "/usr/local/google/home/majnemer/llvm/src")
|
||||||
!6 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "S", file: !5, line: 2, size: 64, align: 32, elements: !7)
|
!6 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "S", file: !5, line: 2, size: 64, align: 32, elements: !7)
|
||||||
!7 = !{!8, !10}
|
!7 = !{!8, !10}
|
||||||
|
@ -57,7 +57,7 @@ source_filename = "t.cpp"
|
|||||||
target datalayout = "e-m:w-i64:64-f80:128-n8:16:32:64-S128"
|
target datalayout = "e-m:w-i64:64-f80:128-n8:16:32:64-S128"
|
||||||
target triple = "x86_64-pc-windows-msvc19.0.23918"
|
target triple = "x86_64-pc-windows-msvc19.0.23918"
|
||||||
|
|
||||||
@"\01?x@@3W4BigThing@@A" = global i32 0, align 4
|
@"\01?x@@3W4BigThing@@A" = global i32 0, align 4, !dbg !5703
|
||||||
|
|
||||||
!llvm.dbg.cu = !{!0}
|
!llvm.dbg.cu = !{!0}
|
||||||
!llvm.module.flags = !{!5704, !5705, !5706}
|
!llvm.module.flags = !{!5704, !5705, !5706}
|
||||||
@ -5766,7 +5766,7 @@ target triple = "x86_64-pc-windows-msvc19.0.23918"
|
|||||||
!5700 = !DIEnumerator(name: "EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE5695", value: 5694)
|
!5700 = !DIEnumerator(name: "EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE5695", value: 5694)
|
||||||
!5701 = !DIEnumerator(name: "EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE5696", value: 5695)
|
!5701 = !DIEnumerator(name: "EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE5696", value: 5695)
|
||||||
!5702 = !{!5703}
|
!5702 = !{!5703}
|
||||||
!5703 = distinct !DIGlobalVariable(name: "x", linkageName: "\01?x@@3W4BigThing@@A", scope: !0, file: !1, line: 5698, type: !3, isLocal: false, isDefinition: true, variable: i32* @"\01?x@@3W4BigThing@@A")
|
!5703 = distinct !DIGlobalVariable(name: "x", linkageName: "\01?x@@3W4BigThing@@A", scope: !0, file: !1, line: 5698, type: !3, isLocal: false, isDefinition: true)
|
||||||
!5704 = !{i32 2, !"CodeView", i32 1}
|
!5704 = !{i32 2, !"CodeView", i32 1}
|
||||||
!5705 = !{i32 2, !"Debug Info Version", i32 3}
|
!5705 = !{i32 2, !"Debug Info Version", i32 3}
|
||||||
!5706 = !{i32 1, !"PIC Level", i32 2}
|
!5706 = !{i32 1, !"PIC Level", i32 2}
|
||||||
|
@ -181,9 +181,9 @@ target triple = "x86_64-pc-windows-msvc18.0.0"
|
|||||||
%struct.anon = type <{ i8, i16 }>
|
%struct.anon = type <{ i8, i16 }>
|
||||||
%struct.S2 = type { i32 }
|
%struct.S2 = type { i32 }
|
||||||
|
|
||||||
@s0 = common global %struct.S0 zeroinitializer, align 1
|
@s0 = common global %struct.S0 zeroinitializer, align 1, !dbg !4
|
||||||
@s1 = common global %struct.S1 zeroinitializer, align 1
|
@s1 = common global %struct.S1 zeroinitializer, align 1, !dbg !10
|
||||||
@s2 = common global %struct.S2 zeroinitializer, align 1
|
@s2 = common global %struct.S2 zeroinitializer, align 1, !dbg !29
|
||||||
|
|
||||||
!llvm.dbg.cu = !{!0}
|
!llvm.dbg.cu = !{!0}
|
||||||
!llvm.module.flags = !{!33, !34, !35}
|
!llvm.module.flags = !{!33, !34, !35}
|
||||||
@ -193,13 +193,13 @@ target triple = "x86_64-pc-windows-msvc18.0.0"
|
|||||||
!1 = !DIFile(filename: "-", directory: "/usr/local/google/home/majnemer/llvm/src")
|
!1 = !DIFile(filename: "-", directory: "/usr/local/google/home/majnemer/llvm/src")
|
||||||
!2 = !{}
|
!2 = !{}
|
||||||
!3 = !{!4, !10, !29}
|
!3 = !{!4, !10, !29}
|
||||||
!4 = distinct !DIGlobalVariable(name: "s0", scope: !0, file: !5, line: 7, type: !6, isLocal: false, isDefinition: true, variable: %struct.S0* @s0)
|
!4 = distinct !DIGlobalVariable(name: "s0", scope: !0, file: !5, line: 7, type: !6, isLocal: false, isDefinition: true)
|
||||||
!5 = !DIFile(filename: "<stdin>", directory: "/usr/local/google/home/majnemer/llvm/src")
|
!5 = !DIFile(filename: "<stdin>", directory: "/usr/local/google/home/majnemer/llvm/src")
|
||||||
!6 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "S0", file: !5, line: 3, size: 24, align: 8, elements: !7)
|
!6 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "S0", file: !5, line: 3, size: 24, align: 8, elements: !7)
|
||||||
!7 = !{!8}
|
!7 = !{!8}
|
||||||
!8 = !DIDerivedType(tag: DW_TAG_member, name: "x", scope: !6, file: !5, line: 6, baseType: !9, size: 8, align: 16, offset: 16, flags: DIFlagBitField, extraData: i64 8)
|
!8 = !DIDerivedType(tag: DW_TAG_member, name: "x", scope: !6, file: !5, line: 6, baseType: !9, size: 8, align: 16, offset: 16, flags: DIFlagBitField, extraData: i64 8)
|
||||||
!9 = !DIBasicType(name: "short", size: 16, align: 16, encoding: DW_ATE_signed)
|
!9 = !DIBasicType(name: "short", size: 16, align: 16, encoding: DW_ATE_signed)
|
||||||
!10 = distinct !DIGlobalVariable(name: "s1", scope: !0, file: !5, line: 18, type: !11, isLocal: false, isDefinition: true, variable: %struct.S1* @s1)
|
!10 = distinct !DIGlobalVariable(name: "s1", scope: !0, file: !5, line: 18, type: !11, isLocal: false, isDefinition: true)
|
||||||
!11 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "S1", file: !5, line: 10, size: 128, align: 8, elements: !12)
|
!11 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "S1", file: !5, line: 10, size: 128, align: 8, elements: !12)
|
||||||
!12 = !{!13, !18, !19, !21, !22, !23, !28}
|
!12 = !{!13, !18, !19, !21, !22, !23, !28}
|
||||||
!13 = !DIDerivedType(tag: DW_TAG_member, name: "x1", scope: !11, file: !5, line: 11, baseType: !14, size: 16, align: 8)
|
!13 = !DIDerivedType(tag: DW_TAG_member, name: "x1", scope: !11, file: !5, line: 11, baseType: !14, size: 16, align: 8)
|
||||||
@ -218,7 +218,7 @@ target triple = "x86_64-pc-windows-msvc18.0.0"
|
|||||||
!26 = !DIDerivedType(tag: DW_TAG_member, name: "c", scope: !24, file: !5, line: 16, baseType: !15, size: 8, align: 8)
|
!26 = !DIDerivedType(tag: DW_TAG_member, name: "c", scope: !24, file: !5, line: 16, baseType: !15, size: 8, align: 8)
|
||||||
!27 = !DIDerivedType(tag: DW_TAG_member, name: "s", scope: !24, file: !5, line: 16, baseType: !9, size: 16, align: 16, offset: 8)
|
!27 = !DIDerivedType(tag: DW_TAG_member, name: "s", scope: !24, file: !5, line: 16, baseType: !9, size: 16, align: 16, offset: 8)
|
||||||
!28 = !DIDerivedType(tag: DW_TAG_member, name: "u", scope: !11, file: !5, line: 17, baseType: !9, size: 3, align: 16, offset: 112, flags: DIFlagBitField, extraData: i64 112)
|
!28 = !DIDerivedType(tag: DW_TAG_member, name: "u", scope: !11, file: !5, line: 17, baseType: !9, size: 3, align: 16, offset: 112, flags: DIFlagBitField, extraData: i64 112)
|
||||||
!29 = distinct !DIGlobalVariable(name: "s2", scope: !0, file: !5, line: 24, type: !30, isLocal: false, isDefinition: true, variable: %struct.S2* @s2)
|
!29 = distinct !DIGlobalVariable(name: "s2", scope: !0, file: !5, line: 24, type: !30, isLocal: false, isDefinition: true)
|
||||||
!30 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "S2", file: !5, line: 21, size: 32, align: 8, elements: !31)
|
!30 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "S2", file: !5, line: 21, size: 32, align: 8, elements: !31)
|
||||||
!31 = !{!32}
|
!31 = !{!32}
|
||||||
!32 = !DIDerivedType(tag: DW_TAG_member, name: "y", scope: !30, file: !5, line: 23, baseType: !20, size: 1, align: 32, flags: DIFlagBitField, extraData: i64 0)
|
!32 = !DIDerivedType(tag: DW_TAG_member, name: "y", scope: !30, file: !5, line: 23, baseType: !20, size: 1, align: 32, flags: DIFlagBitField, extraData: i64 0)
|
||||||
|
@ -27,7 +27,7 @@
|
|||||||
target datalayout = "e-m:x-p:32:32-i64:64-f80:32-n8:16:32-a:0:32-S32"
|
target datalayout = "e-m:x-p:32:32-i64:64-f80:32-n8:16:32-a:0:32-S32"
|
||||||
target triple = "i686-pc-windows-msvc18.0.0"
|
target triple = "i686-pc-windows-msvc18.0.0"
|
||||||
|
|
||||||
@"\01?e@@3W4E@@A" = global i32 0, align 4
|
@"\01?e@@3W4E@@A" = global i32 0, align 4, !dbg !9
|
||||||
|
|
||||||
!llvm.dbg.cu = !{!0}
|
!llvm.dbg.cu = !{!0}
|
||||||
!llvm.module.flags = !{!10, !11}
|
!llvm.module.flags = !{!10, !11}
|
||||||
@ -42,7 +42,7 @@ target triple = "i686-pc-windows-msvc18.0.0"
|
|||||||
!6 = !{!7}
|
!6 = !{!7}
|
||||||
!7 = !DIEnumerator(name: "BLAH", value: 0)
|
!7 = !DIEnumerator(name: "BLAH", value: 0)
|
||||||
!8 = !{!9}
|
!8 = !{!9}
|
||||||
!9 = distinct !DIGlobalVariable(name: "e", linkageName: "\01?e@@3W4E@@A", scope: !0, file: !4, line: 2, type: !3, isLocal: false, isDefinition: true, variable: i32* @"\01?e@@3W4E@@A")
|
!9 = distinct !DIGlobalVariable(name: "e", linkageName: "\01?e@@3W4E@@A", scope: !0, file: !4, line: 2, type: !3, isLocal: false, isDefinition: true)
|
||||||
!10 = !{i32 2, !"CodeView", i32 1}
|
!10 = !{i32 2, !"CodeView", i32 1}
|
||||||
!11 = !{i32 2, !"Debug Info Version", i32 3}
|
!11 = !{i32 2, !"Debug Info Version", i32 3}
|
||||||
!12 = !{!"clang version 3.9.0 (trunk 272790) (llvm/trunk 272813)"}
|
!12 = !{!"clang version 3.9.0 (trunk 272790) (llvm/trunk 272813)"}
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
target datalayout = "e-m:x-p:32:32-i64:64-f80:32-n8:16:32-a:0:32-S32"
|
target datalayout = "e-m:x-p:32:32-i64:64-f80:32-n8:16:32-a:0:32-S32"
|
||||||
target triple = "i686-pc-windows-msvc"
|
target triple = "i686-pc-windows-msvc"
|
||||||
|
|
||||||
@"\01?id@?$numpunct@D@@0HA" = available_externally dllimport global i32 0, align 4
|
@"\01?id@?$numpunct@D@@0HA" = available_externally dllimport global i32 0, align 4, !dbg !4
|
||||||
|
|
||||||
!llvm.dbg.cu = !{!0}
|
!llvm.dbg.cu = !{!0}
|
||||||
!llvm.module.flags = !{!13, !14}
|
!llvm.module.flags = !{!13, !14}
|
||||||
@ -15,7 +15,7 @@ target triple = "i686-pc-windows-msvc"
|
|||||||
!1 = !DIFile(filename: "/usr/local/google/home/majnemer/Downloads/<stdin>", directory: "/usr/local/google/home/majnemer/llvm/src")
|
!1 = !DIFile(filename: "/usr/local/google/home/majnemer/Downloads/<stdin>", directory: "/usr/local/google/home/majnemer/llvm/src")
|
||||||
!2 = !{}
|
!2 = !{}
|
||||||
!3 = !{!4}
|
!3 = !{!4}
|
||||||
!4 = distinct !DIGlobalVariable(name: "id", linkageName: "\01?id@?$numpunct@D@@0HA", scope: !0, file: !5, line: 4, type: !6, isLocal: false, isDefinition: true, variable: i32* @"\01?id@?$numpunct@D@@0HA", declaration: !7)
|
!4 = distinct !DIGlobalVariable(name: "id", linkageName: "\01?id@?$numpunct@D@@0HA", scope: !0, file: !5, line: 4, type: !6, isLocal: false, isDefinition: true, declaration: !7)
|
||||||
!5 = !DIFile(filename: "/usr/local/google/home/majnemer/Downloads/t.ii", directory: "/usr/local/google/home/majnemer/llvm/src")
|
!5 = !DIFile(filename: "/usr/local/google/home/majnemer/Downloads/t.ii", directory: "/usr/local/google/home/majnemer/llvm/src")
|
||||||
!6 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
|
!6 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
|
||||||
!7 = !DIDerivedType(tag: DW_TAG_member, name: "id", scope: !8, file: !5, line: 2, baseType: !6, flags: DIFlagStaticMember)
|
!7 = !DIDerivedType(tag: DW_TAG_member, name: "id", scope: !8, file: !5, line: 2, baseType: !6, flags: DIFlagStaticMember)
|
||||||
|
@ -15,7 +15,7 @@ source_filename = "t.ii"
|
|||||||
target datalayout = "e-m:w-i64:64-f80:128-n8:16:32:64-S128"
|
target datalayout = "e-m:w-i64:64-f80:128-n8:16:32:64-S128"
|
||||||
target triple = "x86_64-pc-windows-msvc19.0.0"
|
target triple = "x86_64-pc-windows-msvc19.0.0"
|
||||||
|
|
||||||
@x = global i32 42
|
@x = global i32 42, !dbg !6
|
||||||
|
|
||||||
!llvm.dbg.cu = !{!0}
|
!llvm.dbg.cu = !{!0}
|
||||||
!llvm.module.flags = !{!35, !36, !37}
|
!llvm.module.flags = !{!35, !36, !37}
|
||||||
@ -27,7 +27,7 @@ target triple = "x86_64-pc-windows-msvc19.0.0"
|
|||||||
!3 = !{!4, !6}
|
!3 = !{!4, !6}
|
||||||
!4 = distinct !DIGlobalVariable(name: "_OptionsStorage", scope: !0, file: !1, line: 3, type: !5, isLocal: true, isDefinition: true)
|
!4 = distinct !DIGlobalVariable(name: "_OptionsStorage", scope: !0, file: !1, line: 3, type: !5, isLocal: true, isDefinition: true)
|
||||||
!5 = !DIBasicType(name: "unsigned int", size: 32, align: 32, encoding: DW_ATE_unsigned)
|
!5 = !DIBasicType(name: "unsigned int", size: 32, align: 32, encoding: DW_ATE_unsigned)
|
||||||
!6 = distinct !DIGlobalVariable(name: "x", scope: !0, file: !1, line: 4, type: !5, isLocal: true, isDefinition: true, variable: i32* @x)
|
!6 = distinct !DIGlobalVariable(name: "x", scope: !0, file: !1, line: 4, type: !5, isLocal: true, isDefinition: true)
|
||||||
|
|
||||||
!35 = !{i32 2, !"CodeView", i32 1}
|
!35 = !{i32 2, !"CodeView", i32 1}
|
||||||
!36 = !{i32 2, !"Debug Info Version", i32 3}
|
!36 = !{i32 2, !"Debug Info Version", i32 3}
|
||||||
|
@ -117,10 +117,10 @@ target triple = "x86_64-pc-windows-msvc19.0.23918"
|
|||||||
|
|
||||||
$"\01?comdat@?$A@X@@2HB" = comdat any
|
$"\01?comdat@?$A@X@@2HB" = comdat any
|
||||||
|
|
||||||
@"\01?first@@3HA" = internal global i32 0, align 4
|
@"\01?first@@3HA" = internal global i32 0, align 4, !dbg !4
|
||||||
@"\01?comdat@?$A@X@@2HB" = linkonce_odr constant i32 3, comdat, align 4
|
@"\01?comdat@?$A@X@@2HB" = linkonce_odr constant i32 3, comdat, align 4, !dbg !6
|
||||||
@"\01?middle@@3PEBHEB" = thread_local global i32* @"\01?comdat@?$A@X@@2HB", align 8
|
@"\01?middle@@3PEBHEB" = thread_local global i32* @"\01?comdat@?$A@X@@2HB", align 8, !dbg !13
|
||||||
@"\01?last@@3HA" = global i32 0, align 4
|
@"\01?last@@3HA" = global i32 0, align 4, !dbg !15
|
||||||
|
|
||||||
!llvm.dbg.cu = !{!0}
|
!llvm.dbg.cu = !{!0}
|
||||||
!llvm.module.flags = !{!16, !17, !18}
|
!llvm.module.flags = !{!16, !17, !18}
|
||||||
@ -130,18 +130,18 @@ $"\01?comdat@?$A@X@@2HB" = comdat any
|
|||||||
!1 = !DIFile(filename: "t.cpp", directory: "D:\5Csrc\5Cllvm\5Cbuild")
|
!1 = !DIFile(filename: "t.cpp", directory: "D:\5Csrc\5Cllvm\5Cbuild")
|
||||||
!2 = !{}
|
!2 = !{}
|
||||||
!3 = !{!4, !6, !13, !15}
|
!3 = !{!4, !6, !13, !15}
|
||||||
!4 = distinct !DIGlobalVariable(name: "first", linkageName: "\01?first@@3HA", scope: !0, file: !1, line: 1, type: !5, isLocal: true, isDefinition: true, variable: i32* @"\01?first@@3HA")
|
!4 = distinct !DIGlobalVariable(name: "first", linkageName: "\01?first@@3HA", scope: !0, file: !1, line: 1, type: !5, isLocal: true, isDefinition: true)
|
||||||
!5 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
|
!5 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
|
||||||
!6 = distinct !DIGlobalVariable(name: "comdat", linkageName: "\01?comdat@?$A@X@@2HB", scope: !0, file: !1, line: 2, type: !7, isLocal: false, isDefinition: true, variable: i32* @"\01?comdat@?$A@X@@2HB", declaration: !8)
|
!6 = distinct !DIGlobalVariable(name: "comdat", linkageName: "\01?comdat@?$A@X@@2HB", scope: !0, file: !1, line: 2, type: !7, isLocal: false, isDefinition: true, declaration: !8)
|
||||||
!7 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !5)
|
!7 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !5)
|
||||||
!8 = !DIDerivedType(tag: DW_TAG_member, name: "comdat", scope: !9, file: !1, line: 2, baseType: !7, flags: DIFlagStaticMember, extraData: i32 3)
|
!8 = !DIDerivedType(tag: DW_TAG_member, name: "comdat", scope: !9, file: !1, line: 2, baseType: !7, flags: DIFlagStaticMember, extraData: i32 3)
|
||||||
!9 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "A<void>", file: !1, line: 2, size: 8, align: 8, elements: !10, templateParams: !11)
|
!9 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "A<void>", file: !1, line: 2, size: 8, align: 8, elements: !10, templateParams: !11)
|
||||||
!10 = !{!8}
|
!10 = !{!8}
|
||||||
!11 = !{!12}
|
!11 = !{!12}
|
||||||
!12 = !DITemplateTypeParameter(name: "T", type: null)
|
!12 = !DITemplateTypeParameter(name: "T", type: null)
|
||||||
!13 = distinct !DIGlobalVariable(name: "middle", linkageName: "\01?middle@@3PEBHEB", scope: !0, file: !1, line: 3, type: !14, isLocal: false, isDefinition: true, variable: i32** @"\01?middle@@3PEBHEB")
|
!13 = distinct !DIGlobalVariable(name: "middle", linkageName: "\01?middle@@3PEBHEB", scope: !0, file: !1, line: 3, type: !14, isLocal: false, isDefinition: true)
|
||||||
!14 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !7, size: 64, align: 64)
|
!14 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !7, size: 64, align: 64)
|
||||||
!15 = distinct !DIGlobalVariable(name: "last", linkageName: "\01?last@@3HA", scope: !0, file: !1, line: 4, type: !5, isLocal: false, isDefinition: true, variable: i32* @"\01?last@@3HA")
|
!15 = distinct !DIGlobalVariable(name: "last", linkageName: "\01?last@@3HA", scope: !0, file: !1, line: 4, type: !5, isLocal: false, isDefinition: true)
|
||||||
!16 = !{i32 2, !"CodeView", i32 1}
|
!16 = !{i32 2, !"CodeView", i32 1}
|
||||||
!17 = !{i32 2, !"Debug Info Version", i32 3}
|
!17 = !{i32 2, !"Debug Info Version", i32 3}
|
||||||
!18 = !{i32 1, !"PIC Level", i32 2}
|
!18 = !{i32 1, !"PIC Level", i32 2}
|
||||||
|
@ -83,7 +83,7 @@ $"\01??_8B@@7B@" = comdat any
|
|||||||
|
|
||||||
$"\01??_8C@@7B@" = comdat any
|
$"\01??_8C@@7B@" = comdat any
|
||||||
|
|
||||||
@"\01?d@@3UD@@A" = global %struct.D zeroinitializer, align 8
|
@"\01?d@@3UD@@A" = global %struct.D zeroinitializer, align 8, !dbg !4
|
||||||
@"\01??_8D@@7BB@@@" = linkonce_odr unnamed_addr constant [2 x i32] [i32 0, i32 40], comdat
|
@"\01??_8D@@7BB@@@" = linkonce_odr unnamed_addr constant [2 x i32] [i32 0, i32 40], comdat
|
||||||
@"\01??_8D@@7BC@@@" = linkonce_odr unnamed_addr constant [2 x i32] [i32 0, i32 24], comdat
|
@"\01??_8D@@7BC@@@" = linkonce_odr unnamed_addr constant [2 x i32] [i32 0, i32 24], comdat
|
||||||
@"\01??_7D@@6B@" = linkonce_odr unnamed_addr constant [1 x i8*] [i8* bitcast (void (%struct.D*)* @"\01?f@D@@UEAAXXZ" to i8*)], comdat
|
@"\01??_7D@@6B@" = linkonce_odr unnamed_addr constant [1 x i8*] [i8* bitcast (void (%struct.D*)* @"\01?f@D@@UEAAXXZ" to i8*)], comdat
|
||||||
@ -230,7 +230,7 @@ attributes #4 = { nounwind }
|
|||||||
!1 = !DIFile(filename: "t.cpp", directory: "D:\5Csrc\5Cllvm\5Cbuild")
|
!1 = !DIFile(filename: "t.cpp", directory: "D:\5Csrc\5Cllvm\5Cbuild")
|
||||||
!2 = !{}
|
!2 = !{}
|
||||||
!3 = !{!4}
|
!3 = !{!4}
|
||||||
!4 = distinct !DIGlobalVariable(name: "d", linkageName: "\01?d@@3UD@@A", scope: !0, file: !1, line: 9, type: !5, isLocal: false, isDefinition: true, variable: %struct.D* @"\01?d@@3UD@@A")
|
!4 = distinct !DIGlobalVariable(name: "d", linkageName: "\01?d@@3UD@@A", scope: !0, file: !1, line: 9, type: !5, isLocal: false, isDefinition: true)
|
||||||
!5 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "D", file: !1, line: 4, size: 448, align: 64, elements: !6, vtableHolder: !5, identifier: ".?AUD@@")
|
!5 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "D", file: !1, line: 4, size: 448, align: 64, elements: !6, vtableHolder: !5, identifier: ".?AUD@@")
|
||||||
!6 = !{!7, !21, !27, !28, !29}
|
!6 = !{!7, !21, !27, !28, !29}
|
||||||
!7 = !DIDerivedType(tag: DW_TAG_inheritance, scope: !5, baseType: !8, offset: 64)
|
!7 = !DIDerivedType(tag: DW_TAG_inheritance, scope: !5, baseType: !8, offset: 64)
|
||||||
|
@ -44,7 +44,7 @@
|
|||||||
target datalayout = "e-m:w-i64:64-f80:128-n8:16:32:64-S128"
|
target datalayout = "e-m:w-i64:64-f80:128-n8:16:32:64-S128"
|
||||||
target triple = "x86_64-pc-windows-msvc18.0.0"
|
target triple = "x86_64-pc-windows-msvc18.0.0"
|
||||||
|
|
||||||
@x = common global i32 0, align 4
|
@x = common global i32 0, align 4, !dbg !9
|
||||||
|
|
||||||
; Function Attrs: norecurse nounwind uwtable
|
; Function Attrs: norecurse nounwind uwtable
|
||||||
define void @f() #0 !dbg !4 {
|
define void @f() #0 !dbg !4 {
|
||||||
@ -84,7 +84,7 @@ attributes #0 = { norecurse nounwind uwtable "disable-tail-calls"="false" "less-
|
|||||||
!6 = !{null}
|
!6 = !{null}
|
||||||
!7 = distinct !DISubprogram(name: "file_change", scope: !1, file: !1, line: 2, type: !5, isLocal: true, isDefinition: true, scopeLine: 2, flags: DIFlagPrototyped, isOptimized: true, unit: !0, variables: !2)
|
!7 = distinct !DISubprogram(name: "file_change", scope: !1, file: !1, line: 2, type: !5, isLocal: true, isDefinition: true, scopeLine: 2, flags: DIFlagPrototyped, isOptimized: true, unit: !0, variables: !2)
|
||||||
!8 = !{!9}
|
!8 = !{!9}
|
||||||
!9 = !DIGlobalVariable(name: "x", scope: !0, file: !1, line: 1, type: !10, isLocal: false, isDefinition: true, variable: i32* @x)
|
!9 = !DIGlobalVariable(name: "x", scope: !0, file: !1, line: 1, type: !10, isLocal: false, isDefinition: true)
|
||||||
!10 = !DIDerivedType(tag: DW_TAG_volatile_type, baseType: !11)
|
!10 = !DIDerivedType(tag: DW_TAG_volatile_type, baseType: !11)
|
||||||
!11 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
|
!11 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
|
||||||
!12 = !{i32 2, !"CodeView", i32 1}
|
!12 = !{i32 2, !"CodeView", i32 1}
|
||||||
|
@ -106,7 +106,7 @@ source_filename = "t.cpp"
|
|||||||
target datalayout = "e-m:w-i64:64-f80:128-n8:16:32:64-S128"
|
target datalayout = "e-m:w-i64:64-f80:128-n8:16:32:64-S128"
|
||||||
target triple = "x86_64-pc-windows-msvc19.0.24210"
|
target triple = "x86_64-pc-windows-msvc19.0.24210"
|
||||||
|
|
||||||
@"\01?x@@3HC" = global i32 0, align 4
|
@"\01?x@@3HC" = global i32 0, align 4, !dbg !4
|
||||||
|
|
||||||
; Function Attrs: norecurse nounwind uwtable
|
; Function Attrs: norecurse nounwind uwtable
|
||||||
define i32 @main() local_unnamed_addr #0 !dbg !11 {
|
define i32 @main() local_unnamed_addr #0 !dbg !11 {
|
||||||
@ -140,7 +140,7 @@ attributes #0 = { norecurse nounwind uwtable "disable-tail-calls"="false" "less-
|
|||||||
!1 = !DIFile(filename: "t.cpp", directory: "D:\5Csrc\5Cllvm\5Cbuild")
|
!1 = !DIFile(filename: "t.cpp", directory: "D:\5Csrc\5Cllvm\5Cbuild")
|
||||||
!2 = !{}
|
!2 = !{}
|
||||||
!3 = !{!4}
|
!3 = !{!4}
|
||||||
!4 = distinct !DIGlobalVariable(name: "x", linkageName: "\01?x@@3HC", scope: !0, file: !1, line: 1, type: !5, isLocal: false, isDefinition: true, variable: i32* @"\01?x@@3HC")
|
!4 = distinct !DIGlobalVariable(name: "x", linkageName: "\01?x@@3HC", scope: !0, file: !1, line: 1, type: !5, isLocal: false, isDefinition: true)
|
||||||
!5 = !DIDerivedType(tag: DW_TAG_volatile_type, baseType: !6)
|
!5 = !DIDerivedType(tag: DW_TAG_volatile_type, baseType: !6)
|
||||||
!6 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
|
!6 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
|
||||||
!7 = !{i32 2, !"CodeView", i32 1}
|
!7 = !{i32 2, !"CodeView", i32 1}
|
||||||
|
@ -41,7 +41,7 @@
|
|||||||
target datalayout = "e-m:w-i64:64-f80:128-n8:16:32:64-S128"
|
target datalayout = "e-m:w-i64:64-f80:128-n8:16:32:64-S128"
|
||||||
target triple = "x86_64-pc-windows-msvc18.0.0"
|
target triple = "x86_64-pc-windows-msvc18.0.0"
|
||||||
|
|
||||||
@"\01?x@@3HC" = global i32 0, align 4
|
@"\01?x@@3HC" = global i32 0, align 4, !dbg !14
|
||||||
|
|
||||||
; Function Attrs: norecurse nounwind uwtable
|
; Function Attrs: norecurse nounwind uwtable
|
||||||
define i32 @main() #0 !dbg !4 {
|
define i32 @main() #0 !dbg !4 {
|
||||||
@ -71,7 +71,7 @@ attributes #0 = { norecurse nounwind uwtable "disable-tail-calls"="false" "less-
|
|||||||
!11 = distinct !DISubprogram(name: "g", linkageName: "\01?g@@YAXXZ", scope: !1, file: !1, line: 6, type: !9, isLocal: true, isDefinition: true, scopeLine: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !0, variables: !2)
|
!11 = distinct !DISubprogram(name: "g", linkageName: "\01?g@@YAXXZ", scope: !1, file: !1, line: 6, type: !9, isLocal: true, isDefinition: true, scopeLine: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !0, variables: !2)
|
||||||
!12 = distinct !DISubprogram(name: "f", linkageName: "\01?f@@YAXXZ", scope: !1, file: !1, line: 2, type: !9, isLocal: true, isDefinition: true, scopeLine: 2, flags: DIFlagPrototyped, isOptimized: true, unit: !0, variables: !2)
|
!12 = distinct !DISubprogram(name: "f", linkageName: "\01?f@@YAXXZ", scope: !1, file: !1, line: 2, type: !9, isLocal: true, isDefinition: true, scopeLine: 2, flags: DIFlagPrototyped, isOptimized: true, unit: !0, variables: !2)
|
||||||
!13 = !{!14}
|
!13 = !{!14}
|
||||||
!14 = !DIGlobalVariable(name: "x", linkageName: "\01?x@@3HC", scope: !0, file: !1, line: 1, type: !15, isLocal: false, isDefinition: true, variable: i32* @"\01?x@@3HC")
|
!14 = !DIGlobalVariable(name: "x", linkageName: "\01?x@@3HC", scope: !0, file: !1, line: 1, type: !15, isLocal: false, isDefinition: true)
|
||||||
!15 = !DIDerivedType(tag: DW_TAG_volatile_type, baseType: !7)
|
!15 = !DIDerivedType(tag: DW_TAG_volatile_type, baseType: !7)
|
||||||
!16 = !{i32 2, !"CodeView", i32 1}
|
!16 = !{i32 2, !"CodeView", i32 1}
|
||||||
!17 = !{i32 2, !"Debug Info Version", i32 3}
|
!17 = !{i32 2, !"Debug Info Version", i32 3}
|
||||||
|
@ -192,7 +192,7 @@
|
|||||||
target datalayout = "e-m:w-i64:64-f80:128-n8:16:32:64-S128"
|
target datalayout = "e-m:w-i64:64-f80:128-n8:16:32:64-S128"
|
||||||
target triple = "x86_64-pc-windows-msvc18.0.0"
|
target triple = "x86_64-pc-windows-msvc18.0.0"
|
||||||
|
|
||||||
@x = internal global i32 0, align 4
|
@x = internal global i32 0, align 4, !dbg !23
|
||||||
|
|
||||||
; Function Attrs: nounwind uwtable
|
; Function Attrs: nounwind uwtable
|
||||||
define void @f(i32 %p) #0 !dbg !4 {
|
define void @f(i32 %p) #0 !dbg !4 {
|
||||||
@ -261,7 +261,7 @@ attributes #3 = { nounwind }
|
|||||||
!20 = !DILocalVariable(name: "a", arg: 1, scope: !16, file: !1, line: 4, type: !7)
|
!20 = !DILocalVariable(name: "a", arg: 1, scope: !16, file: !1, line: 4, type: !7)
|
||||||
!21 = !DILocalVariable(name: "b", scope: !16, file: !1, line: 5, type: !7)
|
!21 = !DILocalVariable(name: "b", scope: !16, file: !1, line: 5, type: !7)
|
||||||
!22 = !{!23}
|
!22 = !{!23}
|
||||||
!23 = !DIGlobalVariable(name: "x", scope: !0, file: !1, line: 1, type: !24, isLocal: false, isDefinition: true, variable: i32* @x)
|
!23 = !DIGlobalVariable(name: "x", scope: !0, file: !1, line: 1, type: !24, isLocal: false, isDefinition: true)
|
||||||
!24 = !DIDerivedType(tag: DW_TAG_volatile_type, baseType: !7)
|
!24 = !DIDerivedType(tag: DW_TAG_volatile_type, baseType: !7)
|
||||||
!25 = !{i32 2, !"CodeView", i32 1}
|
!25 = !{i32 2, !"CodeView", i32 1}
|
||||||
!26 = !{i32 2, !"Debug Info Version", i32 3}
|
!26 = !{i32 2, !"Debug Info Version", i32 3}
|
||||||
|
@ -79,7 +79,7 @@ target triple = "x86_64-pc-windows-msvc19.0.23918"
|
|||||||
%"struct.foo::bar::GlobalRecord" = type { i32 }
|
%"struct.foo::bar::GlobalRecord" = type { i32 }
|
||||||
%struct.LocalRecord = type { i32 }
|
%struct.LocalRecord = type { i32 }
|
||||||
|
|
||||||
@"\01?g@bar@foo@@3UGlobalRecord@12@A" = global %"struct.foo::bar::GlobalRecord" zeroinitializer, align 4
|
@"\01?g@bar@foo@@3UGlobalRecord@12@A" = global %"struct.foo::bar::GlobalRecord" zeroinitializer, align 4, !dbg !4
|
||||||
|
|
||||||
; Function Attrs: nounwind uwtable
|
; Function Attrs: nounwind uwtable
|
||||||
define void @"\01?baz@bar@foo@@YAXXZ"() #0 !dbg !19 {
|
define void @"\01?baz@bar@foo@@YAXXZ"() #0 !dbg !19 {
|
||||||
@ -113,7 +113,7 @@ attributes #1 = { nounwind readnone }
|
|||||||
!1 = !DIFile(filename: "t.cpp", directory: "D:\5Csrc\5Cllvm\5Cbuild")
|
!1 = !DIFile(filename: "t.cpp", directory: "D:\5Csrc\5Cllvm\5Cbuild")
|
||||||
!2 = !{}
|
!2 = !{}
|
||||||
!3 = !{!4}
|
!3 = !{!4}
|
||||||
!4 = distinct !DIGlobalVariable(name: "g", linkageName: "\01?g@bar@foo@@3UGlobalRecord@12@A", scope: !5, file: !1, line: 12, type: !7, isLocal: false, isDefinition: true, variable: %"struct.foo::bar::GlobalRecord"* @"\01?g@bar@foo@@3UGlobalRecord@12@A")
|
!4 = distinct !DIGlobalVariable(name: "g", linkageName: "\01?g@bar@foo@@3UGlobalRecord@12@A", scope: !5, file: !1, line: 12, type: !7, isLocal: false, isDefinition: true)
|
||||||
!5 = !DINamespace(name: "bar", scope: !6, file: !1, line: 2)
|
!5 = !DINamespace(name: "bar", scope: !6, file: !1, line: 2)
|
||||||
!6 = !DINamespace(name: "foo", scope: null, file: !1, line: 1)
|
!6 = !DINamespace(name: "foo", scope: null, file: !1, line: 1)
|
||||||
!7 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "GlobalRecord", scope: !5, file: !1, line: 9, size: 32, align: 32, elements: !8, identifier: ".?AUGlobalRecord@bar@foo@@")
|
!7 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "GlobalRecord", scope: !5, file: !1, line: 9, size: 32, align: 32, elements: !8, identifier: ".?AUGlobalRecord@bar@foo@@")
|
||||||
|
@ -127,10 +127,10 @@ target triple = "i686-pc-windows-msvc18.0.31101"
|
|||||||
|
|
||||||
%struct.incomplete_struct = type { i32 }
|
%struct.incomplete_struct = type { i32 }
|
||||||
|
|
||||||
@"\01?multi_dim_arr@@3PAY146DA" = global [2 x [5 x [7 x i8]]] zeroinitializer, align 1
|
@"\01?multi_dim_arr@@3PAY146DA" = global [2 x [5 x [7 x i8]]] zeroinitializer, align 1, !dbg !4
|
||||||
@"\01?p_incomplete_struct_arr@@3PAY02Uincomplete_struct@@A" = global [3 x i8]* null, align 4
|
@"\01?p_incomplete_struct_arr@@3PAY02Uincomplete_struct@@A" = global [3 x i8]* null, align 4, !dbg !11
|
||||||
@"\01?incomplete_struct_arr@@3PAUincomplete_struct@@A" = global [3 x %struct.incomplete_struct] zeroinitializer, align 4
|
@"\01?incomplete_struct_arr@@3PAUincomplete_struct@@A" = global [3 x %struct.incomplete_struct] zeroinitializer, align 4, !dbg !20
|
||||||
@"\01?typedef_arr@@3SDHD" = constant [4 x i32] zeroinitializer, align 4
|
@"\01?typedef_arr@@3SDHD" = constant [4 x i32] zeroinitializer, align 4, !dbg !21
|
||||||
|
|
||||||
; Function Attrs: nounwind
|
; Function Attrs: nounwind
|
||||||
define void @"\01?foo@@YAXH@Z"(i32 %x) #0 !dbg !31 {
|
define void @"\01?foo@@YAXH@Z"(i32 %x) #0 !dbg !31 {
|
||||||
@ -172,14 +172,14 @@ attributes #2 = { nounwind }
|
|||||||
!1 = !DIFile(filename: "t.cpp", directory: "/")
|
!1 = !DIFile(filename: "t.cpp", directory: "/")
|
||||||
!2 = !{}
|
!2 = !{}
|
||||||
!3 = !{!4, !11, !20, !21}
|
!3 = !{!4, !11, !20, !21}
|
||||||
!4 = distinct !DIGlobalVariable(name: "multi_dim_arr", linkageName: "\01?multi_dim_arr@@3PAY146DA", scope: !0, file: !1, line: 1, type: !5, isLocal: false, isDefinition: true, variable: [2 x [5 x [7 x i8]]]* @"\01?multi_dim_arr@@3PAY146DA")
|
!4 = distinct !DIGlobalVariable(name: "multi_dim_arr", linkageName: "\01?multi_dim_arr@@3PAY146DA", scope: !0, file: !1, line: 1, type: !5, isLocal: false, isDefinition: true)
|
||||||
!5 = !DICompositeType(tag: DW_TAG_array_type, baseType: !6, size: 560, align: 8, elements: !7)
|
!5 = !DICompositeType(tag: DW_TAG_array_type, baseType: !6, size: 560, align: 8, elements: !7)
|
||||||
!6 = !DIBasicType(name: "char", size: 8, align: 8, encoding: DW_ATE_signed_char)
|
!6 = !DIBasicType(name: "char", size: 8, align: 8, encoding: DW_ATE_signed_char)
|
||||||
!7 = !{!8, !9, !10}
|
!7 = !{!8, !9, !10}
|
||||||
!8 = !DISubrange(count: 2)
|
!8 = !DISubrange(count: 2)
|
||||||
!9 = !DISubrange(count: 5)
|
!9 = !DISubrange(count: 5)
|
||||||
!10 = !DISubrange(count: 7)
|
!10 = !DISubrange(count: 7)
|
||||||
!11 = distinct !DIGlobalVariable(name: "p_incomplete_struct_arr", linkageName: "\01?p_incomplete_struct_arr@@3PAY02Uincomplete_struct@@A", scope: !0, file: !1, line: 3, type: !12, isLocal: false, isDefinition: true, variable: [3 x i8]** @"\01?p_incomplete_struct_arr@@3PAY02Uincomplete_struct@@A")
|
!11 = distinct !DIGlobalVariable(name: "p_incomplete_struct_arr", linkageName: "\01?p_incomplete_struct_arr@@3PAY02Uincomplete_struct@@A", scope: !0, file: !1, line: 3, type: !12, isLocal: false, isDefinition: true)
|
||||||
!12 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !13, size: 32, align: 32)
|
!12 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !13, size: 32, align: 32)
|
||||||
!13 = !DICompositeType(tag: DW_TAG_array_type, baseType: !14, elements: !18)
|
!13 = !DICompositeType(tag: DW_TAG_array_type, baseType: !14, elements: !18)
|
||||||
!14 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "incomplete_struct", file: !1, line: 4, size: 32, align: 32, elements: !15, identifier: ".?AUincomplete_struct@@")
|
!14 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "incomplete_struct", file: !1, line: 4, size: 32, align: 32, elements: !15, identifier: ".?AUincomplete_struct@@")
|
||||||
@ -188,8 +188,8 @@ attributes #2 = { nounwind }
|
|||||||
!17 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
|
!17 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
|
||||||
!18 = !{!19}
|
!18 = !{!19}
|
||||||
!19 = !DISubrange(count: 3)
|
!19 = !DISubrange(count: 3)
|
||||||
!20 = distinct !DIGlobalVariable(name: "incomplete_struct_arr", linkageName: "\01?incomplete_struct_arr@@3PAUincomplete_struct@@A", scope: !0, file: !1, line: 6, type: !13, isLocal: false, isDefinition: true, variable: [3 x %struct.incomplete_struct]* @"\01?incomplete_struct_arr@@3PAUincomplete_struct@@A")
|
!20 = distinct !DIGlobalVariable(name: "incomplete_struct_arr", linkageName: "\01?incomplete_struct_arr@@3PAUincomplete_struct@@A", scope: !0, file: !1, line: 6, type: !13, isLocal: false, isDefinition: true)
|
||||||
!21 = distinct !DIGlobalVariable(name: "typedef_arr", linkageName: "\01?typedef_arr@@3SDHD", scope: !0, file: !1, line: 14, type: !22, isLocal: false, isDefinition: true, variable: [4 x i32]* @"\01?typedef_arr@@3SDHD")
|
!21 = distinct !DIGlobalVariable(name: "typedef_arr", linkageName: "\01?typedef_arr@@3SDHD", scope: !0, file: !1, line: 14, type: !22, isLocal: false, isDefinition: true)
|
||||||
!22 = !DICompositeType(tag: DW_TAG_array_type, baseType: !23, size: 128, align: 32, elements: !26)
|
!22 = !DICompositeType(tag: DW_TAG_array_type, baseType: !23, size: 128, align: 32, elements: !26)
|
||||||
!23 = !DIDerivedType(tag: DW_TAG_typedef, name: "T_INT", file: !1, line: 13, baseType: !24)
|
!23 = !DIDerivedType(tag: DW_TAG_typedef, name: "T_INT", file: !1, line: 13, baseType: !24)
|
||||||
!24 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !25)
|
!24 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !25)
|
||||||
|
@ -79,7 +79,7 @@ target triple = "i686-pc-windows-msvc19.0.23918"
|
|||||||
|
|
||||||
%struct.A = type { i8 }
|
%struct.A = type { i8 }
|
||||||
|
|
||||||
@"\01?a@@3UA@@A" = global %struct.A zeroinitializer, align 1
|
@"\01?a@@3UA@@A" = global %struct.A zeroinitializer, align 1, !dbg !4
|
||||||
|
|
||||||
!llvm.dbg.cu = !{!0}
|
!llvm.dbg.cu = !{!0}
|
||||||
!llvm.module.flags = !{!8, !9}
|
!llvm.module.flags = !{!8, !9}
|
||||||
@ -89,7 +89,7 @@ target triple = "i686-pc-windows-msvc19.0.23918"
|
|||||||
!1 = !DIFile(filename: "hello.cpp", directory: "D:\5Csrc\5Chello")
|
!1 = !DIFile(filename: "hello.cpp", directory: "D:\5Csrc\5Chello")
|
||||||
!2 = !{}
|
!2 = !{}
|
||||||
!3 = !{!4}
|
!3 = !{!4}
|
||||||
!4 = distinct !DIGlobalVariable(name: "a", linkageName: "\01?a@@3UA@@A", scope: !0, file: !1, line: 3, type: !5, isLocal: false, isDefinition: true, variable: %struct.A* @"\01?a@@3UA@@A")
|
!4 = distinct !DIGlobalVariable(name: "a", linkageName: "\01?a@@3UA@@A", scope: !0, file: !1, line: 3, type: !5, isLocal: false, isDefinition: true)
|
||||||
!5 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "A", file: !1, line: 1, size: 8, align: 8, elements: !6, identifier: ".?AUA@@")
|
!5 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "A", file: !1, line: 1, size: 8, align: 8, elements: !6, identifier: ".?AUA@@")
|
||||||
!6 = !{!7}
|
!6 = !{!7}
|
||||||
!7 = !DICompositeType(tag: DW_TAG_structure_type, name: "Nested", scope: !5, file: !1, line: 2, size: 8, align: 8, flags: DIFlagFwdDecl, identifier: ".?AUNested@A@@")
|
!7 = !DICompositeType(tag: DW_TAG_structure_type, name: "Nested", scope: !5, file: !1, line: 2, size: 8, align: 8, flags: DIFlagFwdDecl, identifier: ".?AUNested@A@@")
|
||||||
|
@ -184,16 +184,16 @@ target triple = "x86_64-pc-windows-msvc19.0.23918"
|
|||||||
%0 = type opaque
|
%0 = type opaque
|
||||||
%1 = type opaque
|
%1 = type opaque
|
||||||
|
|
||||||
@"\01?pmd_a@@3PEQA@@HEQ1@" = global i32 -1, align 8
|
@"\01?pmd_a@@3PEQA@@HEQ1@" = global i32 -1, align 8, !dbg !4
|
||||||
@"\01?pmd_b@@3PEQC@@HEQ1@" = global i32 -1, align 8
|
@"\01?pmd_b@@3PEQC@@HEQ1@" = global i32 -1, align 8, !dbg !10
|
||||||
@"\01?pmd_c@@3PEQD@@HEQ1@" = global { i32, i32 } { i32 0, i32 -1 }, align 8
|
@"\01?pmd_c@@3PEQD@@HEQ1@" = global { i32, i32 } { i32 0, i32 -1 }, align 8, !dbg !20
|
||||||
@"\01?pmd_d@@3PEQE@@HEQ1@" = global { i32, i32, i32 } { i32 0, i32 0, i32 -1 }, align 8
|
@"\01?pmd_d@@3PEQE@@HEQ1@" = global { i32, i32, i32 } { i32 0, i32 0, i32 -1 }, align 8, !dbg !23
|
||||||
@"\01?pmf_a@@3P8A@@EAAXXZEQ1@" = global i8* null, align 8
|
@"\01?pmf_a@@3P8A@@EAAXXZEQ1@" = global i8* null, align 8, !dbg !26
|
||||||
@"\01?pmf_b@@3P8C@@EAAXXZEQ1@" = global { i8*, i32 } zeroinitializer, align 8
|
@"\01?pmf_b@@3P8C@@EAAXXZEQ1@" = global { i8*, i32 } zeroinitializer, align 8, !dbg !31
|
||||||
@"\01?pmf_c@@3P8D@@EAAXXZEQ1@" = global { i8*, i32, i32 } zeroinitializer, align 8
|
@"\01?pmf_c@@3P8D@@EAAXXZEQ1@" = global { i8*, i32, i32 } zeroinitializer, align 8, !dbg !36
|
||||||
@"\01?pmf_d@@3P8E@@EAAXXZEQ1@" = global { i8*, i32, i32, i32 } zeroinitializer, align 8
|
@"\01?pmf_d@@3P8E@@EAAXXZEQ1@" = global { i8*, i32, i32, i32 } zeroinitializer, align 8, !dbg !41
|
||||||
@"\01?ppmd@@3PEAPEQIncomplete@@HEA" = global %0* null, align 8
|
@"\01?ppmd@@3PEAPEQIncomplete@@HEA" = global %0* null, align 8, !dbg !46
|
||||||
@"\01?ppmf@@3PEAP8Incomplete@@EAAXXZEA" = global %1* null, align 8
|
@"\01?ppmf@@3PEAP8Incomplete@@EAAXXZEA" = global %1* null, align 8, !dbg !50
|
||||||
|
|
||||||
!llvm.dbg.cu = !{!0}
|
!llvm.dbg.cu = !{!0}
|
||||||
!llvm.module.flags = !{!56, !57, !58}
|
!llvm.module.flags = !{!56, !57, !58}
|
||||||
@ -203,13 +203,13 @@ target triple = "x86_64-pc-windows-msvc19.0.23918"
|
|||||||
!1 = !DIFile(filename: "t.cpp", directory: "D:\5Csrc\5Cllvm\5Cbuild")
|
!1 = !DIFile(filename: "t.cpp", directory: "D:\5Csrc\5Cllvm\5Cbuild")
|
||||||
!2 = !{}
|
!2 = !{}
|
||||||
!3 = !{!4, !10, !20, !23, !26, !31, !36, !41, !46, !50}
|
!3 = !{!4, !10, !20, !23, !26, !31, !36, !41, !46, !50}
|
||||||
!4 = distinct !DIGlobalVariable(name: "pmd_a", linkageName: "\01?pmd_a@@3PEQA@@HEQ1@", scope: !0, file: !1, line: 6, type: !5, isLocal: false, isDefinition: true, variable: i32* @"\01?pmd_a@@3PEQA@@HEQ1@")
|
!4 = distinct !DIGlobalVariable(name: "pmd_a", linkageName: "\01?pmd_a@@3PEQA@@HEQ1@", scope: !0, file: !1, line: 6, type: !5, isLocal: false, isDefinition: true)
|
||||||
!5 = !DIDerivedType(tag: DW_TAG_ptr_to_member_type, baseType: !6, size: 32, flags: DIFlagSingleInheritance, extraData: !7)
|
!5 = !DIDerivedType(tag: DW_TAG_ptr_to_member_type, baseType: !6, size: 32, flags: DIFlagSingleInheritance, extraData: !7)
|
||||||
!6 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
|
!6 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
|
||||||
!7 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "A", file: !1, line: 1, size: 32, align: 32, elements: !8, identifier: ".?AUA@@")
|
!7 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "A", file: !1, line: 1, size: 32, align: 32, elements: !8, identifier: ".?AUA@@")
|
||||||
!8 = !{!9}
|
!8 = !{!9}
|
||||||
!9 = !DIDerivedType(tag: DW_TAG_member, name: "a", scope: !7, file: !1, line: 1, baseType: !6, size: 32, align: 32)
|
!9 = !DIDerivedType(tag: DW_TAG_member, name: "a", scope: !7, file: !1, line: 1, baseType: !6, size: 32, align: 32)
|
||||||
!10 = distinct !DIGlobalVariable(name: "pmd_b", linkageName: "\01?pmd_b@@3PEQC@@HEQ1@", scope: !0, file: !1, line: 7, type: !11, isLocal: false, isDefinition: true, variable: i32* @"\01?pmd_b@@3PEQC@@HEQ1@")
|
!10 = distinct !DIGlobalVariable(name: "pmd_b", linkageName: "\01?pmd_b@@3PEQC@@HEQ1@", scope: !0, file: !1, line: 7, type: !11, isLocal: false, isDefinition: true)
|
||||||
!11 = !DIDerivedType(tag: DW_TAG_ptr_to_member_type, baseType: !6, size: 32, flags: DIFlagMultipleInheritance, extraData: !12)
|
!11 = !DIDerivedType(tag: DW_TAG_ptr_to_member_type, baseType: !6, size: 32, flags: DIFlagMultipleInheritance, extraData: !12)
|
||||||
!12 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "C", file: !1, line: 3, size: 96, align: 32, elements: !13, identifier: ".?AUC@@")
|
!12 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "C", file: !1, line: 3, size: 96, align: 32, elements: !13, identifier: ".?AUC@@")
|
||||||
!13 = !{!14, !15, !19}
|
!13 = !{!14, !15, !19}
|
||||||
@ -219,37 +219,37 @@ target triple = "x86_64-pc-windows-msvc19.0.23918"
|
|||||||
!17 = !{!18}
|
!17 = !{!18}
|
||||||
!18 = !DIDerivedType(tag: DW_TAG_member, name: "b", scope: !16, file: !1, line: 2, baseType: !6, size: 32, align: 32)
|
!18 = !DIDerivedType(tag: DW_TAG_member, name: "b", scope: !16, file: !1, line: 2, baseType: !6, size: 32, align: 32)
|
||||||
!19 = !DIDerivedType(tag: DW_TAG_member, name: "c", scope: !12, file: !1, line: 3, baseType: !6, size: 32, align: 32, offset: 64)
|
!19 = !DIDerivedType(tag: DW_TAG_member, name: "c", scope: !12, file: !1, line: 3, baseType: !6, size: 32, align: 32, offset: 64)
|
||||||
!20 = distinct !DIGlobalVariable(name: "pmd_c", linkageName: "\01?pmd_c@@3PEQD@@HEQ1@", scope: !0, file: !1, line: 8, type: !21, isLocal: false, isDefinition: true, variable: { i32, i32 }* @"\01?pmd_c@@3PEQD@@HEQ1@")
|
!20 = distinct !DIGlobalVariable(name: "pmd_c", linkageName: "\01?pmd_c@@3PEQD@@HEQ1@", scope: !0, file: !1, line: 8, type: !21, isLocal: false, isDefinition: true)
|
||||||
!21 = !DIDerivedType(tag: DW_TAG_ptr_to_member_type, baseType: !6, size: 64, flags: DIFlagVirtualInheritance, extraData: !22)
|
!21 = !DIDerivedType(tag: DW_TAG_ptr_to_member_type, baseType: !6, size: 64, flags: DIFlagVirtualInheritance, extraData: !22)
|
||||||
!22 = !DICompositeType(tag: DW_TAG_structure_type, name: "D", file: !1, line: 4, size: 256, align: 64, flags: DIFlagFwdDecl, identifier: ".?AUD@@")
|
!22 = !DICompositeType(tag: DW_TAG_structure_type, name: "D", file: !1, line: 4, size: 256, align: 64, flags: DIFlagFwdDecl, identifier: ".?AUD@@")
|
||||||
!23 = distinct !DIGlobalVariable(name: "pmd_d", linkageName: "\01?pmd_d@@3PEQE@@HEQ1@", scope: !0, file: !1, line: 9, type: !24, isLocal: false, isDefinition: true, variable: { i32, i32, i32 }* @"\01?pmd_d@@3PEQE@@HEQ1@")
|
!23 = distinct !DIGlobalVariable(name: "pmd_d", linkageName: "\01?pmd_d@@3PEQE@@HEQ1@", scope: !0, file: !1, line: 9, type: !24, isLocal: false, isDefinition: true)
|
||||||
!24 = !DIDerivedType(tag: DW_TAG_ptr_to_member_type, baseType: !6, size: 96, extraData: !25)
|
!24 = !DIDerivedType(tag: DW_TAG_ptr_to_member_type, baseType: !6, size: 96, extraData: !25)
|
||||||
!25 = !DICompositeType(tag: DW_TAG_structure_type, name: "E", file: !1, line: 5, flags: DIFlagFwdDecl, identifier: ".?AUE@@")
|
!25 = !DICompositeType(tag: DW_TAG_structure_type, name: "E", file: !1, line: 5, flags: DIFlagFwdDecl, identifier: ".?AUE@@")
|
||||||
!26 = distinct !DIGlobalVariable(name: "pmf_a", linkageName: "\01?pmf_a@@3P8A@@EAAXXZEQ1@", scope: !0, file: !1, line: 10, type: !27, isLocal: false, isDefinition: true, variable: i8** @"\01?pmf_a@@3P8A@@EAAXXZEQ1@")
|
!26 = distinct !DIGlobalVariable(name: "pmf_a", linkageName: "\01?pmf_a@@3P8A@@EAAXXZEQ1@", scope: !0, file: !1, line: 10, type: !27, isLocal: false, isDefinition: true)
|
||||||
!27 = !DIDerivedType(tag: DW_TAG_ptr_to_member_type, baseType: !28, size: 64, flags: DIFlagSingleInheritance, extraData: !7)
|
!27 = !DIDerivedType(tag: DW_TAG_ptr_to_member_type, baseType: !28, size: 64, flags: DIFlagSingleInheritance, extraData: !7)
|
||||||
!28 = !DISubroutineType(types: !29)
|
!28 = !DISubroutineType(types: !29)
|
||||||
!29 = !{null, !30}
|
!29 = !{null, !30}
|
||||||
!30 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !7, size: 64, align: 64, flags: DIFlagArtificial | DIFlagObjectPointer)
|
!30 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !7, size: 64, align: 64, flags: DIFlagArtificial | DIFlagObjectPointer)
|
||||||
!31 = distinct !DIGlobalVariable(name: "pmf_b", linkageName: "\01?pmf_b@@3P8C@@EAAXXZEQ1@", scope: !0, file: !1, line: 11, type: !32, isLocal: false, isDefinition: true, variable: { i8*, i32 }* @"\01?pmf_b@@3P8C@@EAAXXZEQ1@")
|
!31 = distinct !DIGlobalVariable(name: "pmf_b", linkageName: "\01?pmf_b@@3P8C@@EAAXXZEQ1@", scope: !0, file: !1, line: 11, type: !32, isLocal: false, isDefinition: true)
|
||||||
!32 = !DIDerivedType(tag: DW_TAG_ptr_to_member_type, baseType: !33, size: 128, flags: DIFlagMultipleInheritance, extraData: !12)
|
!32 = !DIDerivedType(tag: DW_TAG_ptr_to_member_type, baseType: !33, size: 128, flags: DIFlagMultipleInheritance, extraData: !12)
|
||||||
!33 = !DISubroutineType(types: !34)
|
!33 = !DISubroutineType(types: !34)
|
||||||
!34 = !{null, !35}
|
!34 = !{null, !35}
|
||||||
!35 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !12, size: 64, align: 64, flags: DIFlagArtificial | DIFlagObjectPointer)
|
!35 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !12, size: 64, align: 64, flags: DIFlagArtificial | DIFlagObjectPointer)
|
||||||
!36 = distinct !DIGlobalVariable(name: "pmf_c", linkageName: "\01?pmf_c@@3P8D@@EAAXXZEQ1@", scope: !0, file: !1, line: 12, type: !37, isLocal: false, isDefinition: true, variable: { i8*, i32, i32 }* @"\01?pmf_c@@3P8D@@EAAXXZEQ1@")
|
!36 = distinct !DIGlobalVariable(name: "pmf_c", linkageName: "\01?pmf_c@@3P8D@@EAAXXZEQ1@", scope: !0, file: !1, line: 12, type: !37, isLocal: false, isDefinition: true)
|
||||||
!37 = !DIDerivedType(tag: DW_TAG_ptr_to_member_type, baseType: !38, size: 128, flags: DIFlagVirtualInheritance, extraData: !22)
|
!37 = !DIDerivedType(tag: DW_TAG_ptr_to_member_type, baseType: !38, size: 128, flags: DIFlagVirtualInheritance, extraData: !22)
|
||||||
!38 = !DISubroutineType(types: !39)
|
!38 = !DISubroutineType(types: !39)
|
||||||
!39 = !{null, !40}
|
!39 = !{null, !40}
|
||||||
!40 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !22, size: 64, align: 64, flags: DIFlagArtificial | DIFlagObjectPointer)
|
!40 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !22, size: 64, align: 64, flags: DIFlagArtificial | DIFlagObjectPointer)
|
||||||
!41 = distinct !DIGlobalVariable(name: "pmf_d", linkageName: "\01?pmf_d@@3P8E@@EAAXXZEQ1@", scope: !0, file: !1, line: 13, type: !42, isLocal: false, isDefinition: true, variable: { i8*, i32, i32, i32 }* @"\01?pmf_d@@3P8E@@EAAXXZEQ1@")
|
!41 = distinct !DIGlobalVariable(name: "pmf_d", linkageName: "\01?pmf_d@@3P8E@@EAAXXZEQ1@", scope: !0, file: !1, line: 13, type: !42, isLocal: false, isDefinition: true)
|
||||||
!42 = !DIDerivedType(tag: DW_TAG_ptr_to_member_type, baseType: !43, size: 192, extraData: !25)
|
!42 = !DIDerivedType(tag: DW_TAG_ptr_to_member_type, baseType: !43, size: 192, extraData: !25)
|
||||||
!43 = !DISubroutineType(types: !44)
|
!43 = !DISubroutineType(types: !44)
|
||||||
!44 = !{null, !45}
|
!44 = !{null, !45}
|
||||||
!45 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !25, size: 64, align: 64, flags: DIFlagArtificial | DIFlagObjectPointer)
|
!45 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !25, size: 64, align: 64, flags: DIFlagArtificial | DIFlagObjectPointer)
|
||||||
!46 = distinct !DIGlobalVariable(name: "ppmd", linkageName: "\01?ppmd@@3PEAPEQIncomplete@@HEA", scope: !0, file: !1, line: 15, type: !47, isLocal: false, isDefinition: true, variable: %0** @"\01?ppmd@@3PEAPEQIncomplete@@HEA")
|
!46 = distinct !DIGlobalVariable(name: "ppmd", linkageName: "\01?ppmd@@3PEAPEQIncomplete@@HEA", scope: !0, file: !1, line: 15, type: !47, isLocal: false, isDefinition: true)
|
||||||
!47 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !48, size: 64, align: 64)
|
!47 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !48, size: 64, align: 64)
|
||||||
!48 = !DIDerivedType(tag: DW_TAG_ptr_to_member_type, baseType: !6, extraData: !49)
|
!48 = !DIDerivedType(tag: DW_TAG_ptr_to_member_type, baseType: !6, extraData: !49)
|
||||||
!49 = !DICompositeType(tag: DW_TAG_structure_type, name: "Incomplete", file: !1, line: 14, flags: DIFlagFwdDecl, identifier: ".?AUIncomplete@@")
|
!49 = !DICompositeType(tag: DW_TAG_structure_type, name: "Incomplete", file: !1, line: 14, flags: DIFlagFwdDecl, identifier: ".?AUIncomplete@@")
|
||||||
!50 = distinct !DIGlobalVariable(name: "ppmf", linkageName: "\01?ppmf@@3PEAP8Incomplete@@EAAXXZEA", scope: !0, file: !1, line: 16, type: !51, isLocal: false, isDefinition: true, variable: %1** @"\01?ppmf@@3PEAP8Incomplete@@EAAXXZEA")
|
!50 = distinct !DIGlobalVariable(name: "ppmf", linkageName: "\01?ppmf@@3PEAP8Incomplete@@EAAXXZEA", scope: !0, file: !1, line: 16, type: !51, isLocal: false, isDefinition: true)
|
||||||
!51 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !52, size: 64, align: 64)
|
!51 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !52, size: 64, align: 64)
|
||||||
!52 = !DIDerivedType(tag: DW_TAG_ptr_to_member_type, baseType: !53, extraData: !49)
|
!52 = !DIDerivedType(tag: DW_TAG_ptr_to_member_type, baseType: !53, extraData: !49)
|
||||||
!53 = !DISubroutineType(types: !54)
|
!53 = !DISubroutineType(types: !54)
|
||||||
|
@ -55,7 +55,7 @@ target triple = "i686-pc-windows-msvc18.0.0"
|
|||||||
%struct.S = type { i32 }
|
%struct.S = type { i32 }
|
||||||
%union.pun = type { i32 }
|
%union.pun = type { i32 }
|
||||||
|
|
||||||
@"\01?u@@3UU@@A" = global %struct.U zeroinitializer, align 4
|
@"\01?u@@3UU@@A" = global %struct.U zeroinitializer, align 4, !dbg !4
|
||||||
|
|
||||||
; Function Attrs: nounwind uwtable
|
; Function Attrs: nounwind uwtable
|
||||||
define void @"\01?f@@YAXXZ"() #0 !dbg !14 {
|
define void @"\01?f@@YAXXZ"() #0 !dbg !14 {
|
||||||
@ -97,7 +97,7 @@ attributes #1 = { nounwind readnone }
|
|||||||
!1 = !DIFile(filename: "t.cpp", directory: "D:\5Csrc\5Cllvm\5Cbuild")
|
!1 = !DIFile(filename: "t.cpp", directory: "D:\5Csrc\5Cllvm\5Cbuild")
|
||||||
!2 = !{}
|
!2 = !{}
|
||||||
!3 = !{!4}
|
!3 = !{!4}
|
||||||
!4 = distinct !DIGlobalVariable(name: "u", linkageName: "\01?u@@3UU@@A", scope: !0, file: !1, line: 13, type: !5, isLocal: false, isDefinition: true, variable: %struct.U* @"\01?u@@3UU@@A")
|
!4 = distinct !DIGlobalVariable(name: "u", linkageName: "\01?u@@3UU@@A", scope: !0, file: !1, line: 13, type: !5, isLocal: false, isDefinition: true)
|
||||||
!5 = !DIDerivedType(tag: DW_TAG_typedef, name: "U", file: !1, line: 12, baseType: !6)
|
!5 = !DIDerivedType(tag: DW_TAG_typedef, name: "U", file: !1, line: 12, baseType: !6)
|
||||||
!6 = distinct !DICompositeType(tag: DW_TAG_structure_type, file: !1, line: 12, size: 32, align: 32, elements: !7, identifier: ".?AUU@@")
|
!6 = distinct !DICompositeType(tag: DW_TAG_structure_type, file: !1, line: 12, size: 32, align: 32, elements: !7, identifier: ".?AUU@@")
|
||||||
!7 = !{!8}
|
!7 = !{!8}
|
||||||
|
@ -121,7 +121,7 @@ $"\01??_7A@@6B@" = comdat largest
|
|||||||
|
|
||||||
$"\01??_R4A@@6B@" = comdat any
|
$"\01??_R4A@@6B@" = comdat any
|
||||||
|
|
||||||
@"\01?p@@3PEAUC@@EA" = global %struct.C* null, align 8
|
@"\01?p@@3PEAUC@@EA" = global %struct.C* null, align 8, !dbg !4
|
||||||
@0 = private unnamed_addr constant [3 x i8*] [i8* bitcast (%rtti.CompleteObjectLocator* @"\01??_R4C@@6B@" to i8*), i8* bitcast (void (%struct.C*)* @"\01?f@C@@UEAAXXZ" to i8*), i8* bitcast (void (%struct.C*)* @"\01?g@C@@UEAAXXZ" to i8*)], comdat($"\01??_7C@@6B@")
|
@0 = private unnamed_addr constant [3 x i8*] [i8* bitcast (%rtti.CompleteObjectLocator* @"\01??_R4C@@6B@" to i8*), i8* bitcast (void (%struct.C*)* @"\01?f@C@@UEAAXXZ" to i8*), i8* bitcast (void (%struct.C*)* @"\01?g@C@@UEAAXXZ" to i8*)], comdat($"\01??_7C@@6B@")
|
||||||
@"\01??_R4C@@6B@" = linkonce_odr constant %rtti.CompleteObjectLocator { i32 1, i32 0, i32 0, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (%rtti.TypeDescriptor7* @"\01??_R0?AUC@@@8" to i64), i64 ptrtoint (i8* @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (%rtti.ClassHierarchyDescriptor* @"\01??_R3C@@8" to i64), i64 ptrtoint (i8* @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (%rtti.CompleteObjectLocator* @"\01??_R4C@@6B@" to i64), i64 ptrtoint (i8* @__ImageBase to i64)) to i32) }, comdat
|
@"\01??_R4C@@6B@" = linkonce_odr constant %rtti.CompleteObjectLocator { i32 1, i32 0, i32 0, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (%rtti.TypeDescriptor7* @"\01??_R0?AUC@@@8" to i64), i64 ptrtoint (i8* @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (%rtti.ClassHierarchyDescriptor* @"\01??_R3C@@8" to i64), i64 ptrtoint (i8* @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (%rtti.CompleteObjectLocator* @"\01??_R4C@@6B@" to i64), i64 ptrtoint (i8* @__ImageBase to i64)) to i32) }, comdat
|
||||||
@"\01??_7type_info@@6B@" = external constant i8*
|
@"\01??_7type_info@@6B@" = external constant i8*
|
||||||
@ -237,7 +237,7 @@ attributes #6 = { nounwind }
|
|||||||
!1 = !DIFile(filename: "t.cpp", directory: "D:\5Csrc\5Cllvm\5Cbuild")
|
!1 = !DIFile(filename: "t.cpp", directory: "D:\5Csrc\5Cllvm\5Cbuild")
|
||||||
!2 = !{}
|
!2 = !{}
|
||||||
!3 = !{!4}
|
!3 = !{!4}
|
||||||
!4 = distinct !DIGlobalVariable(name: "p", linkageName: "\01?p@@3PEAUC@@EA", scope: !0, file: !1, line: 13, type: !5, isLocal: false, isDefinition: true, variable: %struct.C** @"\01?p@@3PEAUC@@EA")
|
!4 = distinct !DIGlobalVariable(name: "p", linkageName: "\01?p@@3PEAUC@@EA", scope: !0, file: !1, line: 13, type: !5, isLocal: false, isDefinition: true)
|
||||||
!5 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !6, size: 64, align: 64)
|
!5 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !6, size: 64, align: 64)
|
||||||
!6 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "C", file: !1, line: 9, size: 64, align: 64, elements: !7, vtableHolder: !12, identifier: ".?AUC@@")
|
!6 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "C", file: !1, line: 9, size: 64, align: 64, elements: !7, vtableHolder: !12, identifier: ".?AUC@@")
|
||||||
!7 = !{!8, !30, !34}
|
!7 = !{!8, !30, !34}
|
||||||
|
@ -40,8 +40,8 @@ target triple = "x86_64-pc-windows-msvc"
|
|||||||
|
|
||||||
$"\01??_DUseCompleteType@@QEAA@XZ" = comdat any
|
$"\01??_DUseCompleteType@@QEAA@XZ" = comdat any
|
||||||
|
|
||||||
@"\01?force_fwd_decl@@3UGetFwdDecl@@A" = global %struct.GetFwdDecl zeroinitializer, align 1
|
@"\01?force_fwd_decl@@3UGetFwdDecl@@A" = global %struct.GetFwdDecl zeroinitializer, align 1, !dbg !4
|
||||||
@"\01?require_complete@@3UUseCompleteType@@A" = global %struct.UseCompleteType zeroinitializer, align 8
|
@"\01?require_complete@@3UUseCompleteType@@A" = global %struct.UseCompleteType zeroinitializer, align 8, !dbg !10
|
||||||
@llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @_GLOBAL__sub_I_t.cpp, i8* null }]
|
@llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @_GLOBAL__sub_I_t.cpp, i8* null }]
|
||||||
|
|
||||||
; Function Attrs: nounwind
|
; Function Attrs: nounwind
|
||||||
@ -100,13 +100,13 @@ attributes #3 = { nounwind readnone }
|
|||||||
!1 = !DIFile(filename: "<stdin>", directory: "C:\5Csrc\5Cllvm\5Cbuild")
|
!1 = !DIFile(filename: "<stdin>", directory: "C:\5Csrc\5Cllvm\5Cbuild")
|
||||||
!2 = !{}
|
!2 = !{}
|
||||||
!3 = !{!4, !10}
|
!3 = !{!4, !10}
|
||||||
!4 = distinct !DIGlobalVariable(name: "force_fwd_decl", linkageName: "\01?force_fwd_decl@@3UGetFwdDecl@@A", scope: !0, file: !5, line: 5, type: !6, isLocal: false, isDefinition: true, variable: %struct.GetFwdDecl* @"\01?force_fwd_decl@@3UGetFwdDecl@@A")
|
!4 = distinct !DIGlobalVariable(name: "force_fwd_decl", linkageName: "\01?force_fwd_decl@@3UGetFwdDecl@@A", scope: !0, file: !5, line: 5, type: !6, isLocal: false, isDefinition: true)
|
||||||
!5 = !DIFile(filename: "t.cpp", directory: "C:\5Csrc\5Cllvm\5Cbuild")
|
!5 = !DIFile(filename: "t.cpp", directory: "C:\5Csrc\5Cllvm\5Cbuild")
|
||||||
!6 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "GetFwdDecl", file: !5, line: 2, size: 8, align: 8, elements: !7, identifier: ".?AUGetFwdDecl@@")
|
!6 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "GetFwdDecl", file: !5, line: 2, size: 8, align: 8, elements: !7, identifier: ".?AUGetFwdDecl@@")
|
||||||
!7 = !{!8}
|
!7 = !{!8}
|
||||||
!8 = !DIDerivedType(tag: DW_TAG_member, name: "format", scope: !6, file: !5, line: 3, baseType: !9, flags: DIFlagStaticMember)
|
!8 = !DIDerivedType(tag: DW_TAG_member, name: "format", scope: !6, file: !5, line: 3, baseType: !9, flags: DIFlagStaticMember)
|
||||||
!9 = !DICompositeType(tag: DW_TAG_structure_type, name: "UnicodeString", file: !5, line: 1, flags: DIFlagFwdDecl, identifier: ".?AUUnicodeString@@")
|
!9 = !DICompositeType(tag: DW_TAG_structure_type, name: "UnicodeString", file: !5, line: 1, flags: DIFlagFwdDecl, identifier: ".?AUUnicodeString@@")
|
||||||
!10 = distinct !DIGlobalVariable(name: "require_complete", linkageName: "\01?require_complete@@3UUseCompleteType@@A", scope: !0, file: !5, line: 15, type: !11, isLocal: false, isDefinition: true, variable: %struct.UseCompleteType* @"\01?require_complete@@3UUseCompleteType@@A")
|
!10 = distinct !DIGlobalVariable(name: "require_complete", linkageName: "\01?require_complete@@3UUseCompleteType@@A", scope: !0, file: !5, line: 15, type: !11, isLocal: false, isDefinition: true)
|
||||||
!11 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "UseCompleteType", file: !5, line: 10, size: 64, align: 64, elements: !12, identifier: ".?AUUseCompleteType@@")
|
!11 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "UseCompleteType", file: !5, line: 10, size: 64, align: 64, elements: !12, identifier: ".?AUUseCompleteType@@")
|
||||||
!12 = !{!13, !17, !21}
|
!12 = !{!13, !17, !21}
|
||||||
!13 = !DIDerivedType(tag: DW_TAG_member, name: "currencySpcAfterSym", scope: !11, file: !5, line: 13, baseType: !14, size: 64, align: 64)
|
!13 = !DIDerivedType(tag: DW_TAG_member, name: "currencySpcAfterSym", scope: !11, file: !5, line: 13, baseType: !14, size: 64, align: 64)
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
; RUN: llc %s -o /dev/null
|
; RUN: llc %s -o /dev/null
|
||||||
@0 = internal constant i32 1
|
@0 = internal constant i32 1, !dbg !5
|
||||||
|
|
||||||
!llvm.dbg.cu = !{!0}
|
!llvm.dbg.cu = !{!0}
|
||||||
!llvm.module.flags = !{!9}
|
!llvm.module.flags = !{!9}
|
||||||
@ -7,7 +7,7 @@
|
|||||||
!0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.0 (trunk 139632)", isOptimized: true, emissionKind: FullDebug, file: !8, enums: !2, retainedTypes: !2, globals: !3)
|
!0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.0 (trunk 139632)", isOptimized: true, emissionKind: FullDebug, file: !8, enums: !2, retainedTypes: !2, globals: !3)
|
||||||
!2 = !{}
|
!2 = !{}
|
||||||
!3 = !{!5}
|
!3 = !{!5}
|
||||||
!5 = !DIGlobalVariable(name: "a", line: 2, isLocal: false, isDefinition: true, scope: null, file: !6, type: !7, variable: i32* @0)
|
!5 = !DIGlobalVariable(name: "a", line: 2, isLocal: false, isDefinition: true, scope: null, file: !6, type: !7)
|
||||||
!6 = !DIFile(filename: "g.c", directory: "/private/tmp")
|
!6 = !DIFile(filename: "g.c", directory: "/private/tmp")
|
||||||
!7 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
|
!7 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
|
||||||
!8 = !DIFile(filename: "g.c", directory: "/private/tmp")
|
!8 = !DIFile(filename: "g.c", directory: "/private/tmp")
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
; CHECK-NEXT: DW_AT_name
|
; CHECK-NEXT: DW_AT_name
|
||||||
|
|
||||||
|
|
||||||
@i = common global i32 0 ; <i32*> [#uses=2]
|
@i = common global i32 0, !dbg !16 ; <i32*> [#uses=2]
|
||||||
|
|
||||||
declare void @llvm.dbg.declare(metadata, metadata, metadata) nounwind readnone
|
declare void @llvm.dbg.declare(metadata, metadata, metadata) nounwind readnone
|
||||||
|
|
||||||
@ -45,7 +45,7 @@ entry:
|
|||||||
!13 = !{!14, !15}
|
!13 = !{!14, !15}
|
||||||
!14 = !DIDerivedType(tag: DW_TAG_member, name: "a", line: 10, size: 32, align: 32, file: !27, scope: !12, baseType: !5)
|
!14 = !DIDerivedType(tag: DW_TAG_member, name: "a", line: 10, size: 32, align: 32, file: !27, scope: !12, baseType: !5)
|
||||||
!15 = !DIDerivedType(tag: DW_TAG_member, name: "b", line: 10, size: 32, align: 32, offset: 32, file: !27, scope: !12, baseType: !5)
|
!15 = !DIDerivedType(tag: DW_TAG_member, name: "b", line: 10, size: 32, align: 32, offset: 32, file: !27, scope: !12, baseType: !5)
|
||||||
!16 = !DIGlobalVariable(name: "i", line: 5, isLocal: false, isDefinition: true, scope: !1, file: !1, type: !5, variable: i32* @i)
|
!16 = !DIGlobalVariable(name: "i", line: 5, isLocal: false, isDefinition: true, scope: !1, file: !1, type: !5)
|
||||||
!17 = !DILocation(line: 15, scope: !18)
|
!17 = !DILocation(line: 15, scope: !18)
|
||||||
!18 = distinct !DILexicalBlock(line: 14, column: 0, file: !1, scope: !6)
|
!18 = distinct !DILexicalBlock(line: 14, column: 0, file: !1, scope: !6)
|
||||||
!19 = !DILocation(line: 9, scope: !0, inlinedAt: !17)
|
!19 = !DILocation(line: 9, scope: !0, inlinedAt: !17)
|
||||||
|
@ -52,18 +52,18 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ForceTopDown = common global i32 0, align 4
|
@ForceTopDown = common global i32 0, align 4, !dbg !4
|
||||||
@_ZNSt3__116allocator_traitsINS_9allocatorINS_11__tree_nodeINS_12__value_typeIPN4llvm10BasicBlockEPNS4_10RegionNodeEEEPvEEEEE11__constructIS9_JNS_4pairIS6_S8_EEEEEvNS_17integral_constantIbLb1EEERSC_PT_DpOT0_ = common global i32 0, align 4
|
@_ZNSt3__116allocator_traitsINS_9allocatorINS_11__tree_nodeINS_12__value_typeIPN4llvm10BasicBlockEPNS4_10RegionNodeEEEPvEEEEE11__constructIS9_JNS_4pairIS6_S8_EEEEEvNS_17integral_constantIbLb1EEERSC_PT_DpOT0_ = common global i32 0, align 4, !dbg !6
|
||||||
@_ZN5clang23DataRecursiveASTVisitorIN12_GLOBAL__N_124UnusedBackingIvarCheckerEE26TraverseCUDAKernelCallExprEPNS_18CUDAKernelCallExprE = common global i32 0, align 4
|
@_ZN5clang23DataRecursiveASTVisitorIN12_GLOBAL__N_124UnusedBackingIvarCheckerEE26TraverseCUDAKernelCallExprEPNS_18CUDAKernelCallExprE = common global i32 0, align 4, !dbg !7
|
||||||
@_ZN4llvm16DenseMapIteratorIPNS_10MDLocationENS_6detail13DenseSetEmptyENS_10MDNodeInfoIS1_EENS3_12DenseSetPairIS2_EELb0EE23AdvancePastEmptyBucketsEv = common global i32 0, align 4
|
@_ZN4llvm16DenseMapIteratorIPNS_10MDLocationENS_6detail13DenseSetEmptyENS_10MDNodeInfoIS1_EENS3_12DenseSetPairIS2_EELb0EE23AdvancePastEmptyBucketsEv = common global i32 0, align 4, !dbg !8
|
||||||
@_ZNK4llvm12LivePhysRegs5printERNS_11raw_ostreamE = common global i32 0, align 4
|
@_ZNK4llvm12LivePhysRegs5printERNS_11raw_ostreamE = common global i32 0, align 4, !dbg !9
|
||||||
@_ZN4llvm15ScalarEvolution14getSignedRangeEPKNS_4SCEVE = common global i32 0, align 4
|
@_ZN4llvm15ScalarEvolution14getSignedRangeEPKNS_4SCEVE = common global i32 0, align 4, !dbg !10
|
||||||
@k1 = common global i32 0, align 4
|
@k1 = common global i32 0, align 4, !dbg !11
|
||||||
@is = common global i32 0, align 4
|
@is = common global i32 0, align 4, !dbg !12
|
||||||
@setStmt = common global i32 0, align 4
|
@setStmt = common global i32 0, align 4, !dbg !13
|
||||||
@_ZN4llvm5TwineC1Ei = common global i32 0, align 4
|
@_ZN4llvm5TwineC1Ei = common global i32 0, align 4, !dbg !14
|
||||||
@_ZNK5clang12OverrideAttr5cloneERNS_10ASTContextE = common global i32 0, align 4
|
@_ZNK5clang12OverrideAttr5cloneERNS_10ASTContextE = common global i32 0, align 4, !dbg !15
|
||||||
@_ZN4llvm22MachineModuleInfoMachOD2Ev = common global i32 0, align 4
|
@_ZN4llvm22MachineModuleInfoMachOD2Ev = common global i32 0, align 4, !dbg !16
|
||||||
|
|
||||||
!llvm.dbg.cu = !{!0}
|
!llvm.dbg.cu = !{!0}
|
||||||
!llvm.module.flags = !{!17, !18, !19}
|
!llvm.module.flags = !{!17, !18, !19}
|
||||||
@ -73,19 +73,19 @@
|
|||||||
!1 = !DIFile(filename: "hash-collisions.c", directory: "/tmp")
|
!1 = !DIFile(filename: "hash-collisions.c", directory: "/tmp")
|
||||||
!2 = !{}
|
!2 = !{}
|
||||||
!3 = !{!4, !6, !7, !8, !9, !10, !11, !12, !13, !14, !15, !16}
|
!3 = !{!4, !6, !7, !8, !9, !10, !11, !12, !13, !14, !15, !16}
|
||||||
!4 = !DIGlobalVariable(name: "ForceTopDown", scope: !0, file: !1, line: 1, type: !5, isLocal: false, isDefinition: true, variable: i32* @ForceTopDown)
|
!4 = !DIGlobalVariable(name: "ForceTopDown", scope: !0, file: !1, line: 1, type: !5, isLocal: false, isDefinition: true)
|
||||||
!5 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
|
!5 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
|
||||||
!6 = !DIGlobalVariable(name: "_ZNSt3__116allocator_traitsINS_9allocatorINS_11__tree_nodeINS_12__value_typeIPN4llvm10BasicBlockEPNS4_10RegionNodeEEEPvEEEEE11__constructIS9_JNS_4pairIS6_S8_EEEEEvNS_17integral_constantIbLb1EEERSC_PT_DpOT0_", scope: !0, file: !1, line: 2, type: !5, isLocal: false, isDefinition: true, variable: i32* @_ZNSt3__116allocator_traitsINS_9allocatorINS_11__tree_nodeINS_12__value_typeIPN4llvm10BasicBlockEPNS4_10RegionNodeEEEPvEEEEE11__constructIS9_JNS_4pairIS6_S8_EEEEEvNS_17integral_constantIbLb1EEERSC_PT_DpOT0_)
|
!6 = !DIGlobalVariable(name: "_ZNSt3__116allocator_traitsINS_9allocatorINS_11__tree_nodeINS_12__value_typeIPN4llvm10BasicBlockEPNS4_10RegionNodeEEEPvEEEEE11__constructIS9_JNS_4pairIS6_S8_EEEEEvNS_17integral_constantIbLb1EEERSC_PT_DpOT0_", scope: !0, file: !1, line: 2, type: !5, isLocal: false, isDefinition: true)
|
||||||
!7 = !DIGlobalVariable(name: "_ZN5clang23DataRecursiveASTVisitorIN12_GLOBAL__N_124UnusedBackingIvarCheckerEE26TraverseCUDAKernelCallExprEPNS_18CUDAKernelCallExprE", scope: !0, file: !1, line: 3, type: !5, isLocal: false, isDefinition: true, variable: i32* @_ZN5clang23DataRecursiveASTVisitorIN12_GLOBAL__N_124UnusedBackingIvarCheckerEE26TraverseCUDAKernelCallExprEPNS_18CUDAKernelCallExprE)
|
!7 = !DIGlobalVariable(name: "_ZN5clang23DataRecursiveASTVisitorIN12_GLOBAL__N_124UnusedBackingIvarCheckerEE26TraverseCUDAKernelCallExprEPNS_18CUDAKernelCallExprE", scope: !0, file: !1, line: 3, type: !5, isLocal: false, isDefinition: true)
|
||||||
!8 = !DIGlobalVariable(name: "_ZN4llvm16DenseMapIteratorIPNS_10MDLocationENS_6detail13DenseSetEmptyENS_10MDNodeInfoIS1_EENS3_12DenseSetPairIS2_EELb0EE23AdvancePastEmptyBucketsEv", scope: !0, file: !1, line: 4, type: !5, isLocal: false, isDefinition: true, variable: i32* @_ZN4llvm16DenseMapIteratorIPNS_10MDLocationENS_6detail13DenseSetEmptyENS_10MDNodeInfoIS1_EENS3_12DenseSetPairIS2_EELb0EE23AdvancePastEmptyBucketsEv)
|
!8 = !DIGlobalVariable(name: "_ZN4llvm16DenseMapIteratorIPNS_10MDLocationENS_6detail13DenseSetEmptyENS_10MDNodeInfoIS1_EENS3_12DenseSetPairIS2_EELb0EE23AdvancePastEmptyBucketsEv", scope: !0, file: !1, line: 4, type: !5, isLocal: false, isDefinition: true)
|
||||||
!9 = !DIGlobalVariable(name: "_ZNK4llvm12LivePhysRegs5printERNS_11raw_ostreamE", scope: !0, file: !1, line: 5, type: !5, isLocal: false, isDefinition: true, variable: i32* @_ZNK4llvm12LivePhysRegs5printERNS_11raw_ostreamE)
|
!9 = !DIGlobalVariable(name: "_ZNK4llvm12LivePhysRegs5printERNS_11raw_ostreamE", scope: !0, file: !1, line: 5, type: !5, isLocal: false, isDefinition: true)
|
||||||
!10 = !DIGlobalVariable(name: "_ZN4llvm15ScalarEvolution14getSignedRangeEPKNS_4SCEVE", scope: !0, file: !1, line: 6, type: !5, isLocal: false, isDefinition: true, variable: i32* @_ZN4llvm15ScalarEvolution14getSignedRangeEPKNS_4SCEVE)
|
!10 = !DIGlobalVariable(name: "_ZN4llvm15ScalarEvolution14getSignedRangeEPKNS_4SCEVE", scope: !0, file: !1, line: 6, type: !5, isLocal: false, isDefinition: true)
|
||||||
!11 = !DIGlobalVariable(name: "k1", scope: !0, file: !1, line: 7, type: !5, isLocal: false, isDefinition: true, variable: i32* @k1)
|
!11 = !DIGlobalVariable(name: "k1", scope: !0, file: !1, line: 7, type: !5, isLocal: false, isDefinition: true)
|
||||||
!12 = !DIGlobalVariable(name: "is", scope: !0, file: !1, line: 8, type: !5, isLocal: false, isDefinition: true, variable: i32* @is)
|
!12 = !DIGlobalVariable(name: "is", scope: !0, file: !1, line: 8, type: !5, isLocal: false, isDefinition: true)
|
||||||
!13 = !DIGlobalVariable(name: "setStmt", scope: !0, file: !1, line: 9, type: !5, isLocal: false, isDefinition: true, variable: i32* @setStmt)
|
!13 = !DIGlobalVariable(name: "setStmt", scope: !0, file: !1, line: 9, type: !5, isLocal: false, isDefinition: true)
|
||||||
!14 = !DIGlobalVariable(name: "_ZN4llvm5TwineC1Ei", scope: !0, file: !1, line: 10, type: !5, isLocal: false, isDefinition: true, variable: i32* @_ZN4llvm5TwineC1Ei)
|
!14 = !DIGlobalVariable(name: "_ZN4llvm5TwineC1Ei", scope: !0, file: !1, line: 10, type: !5, isLocal: false, isDefinition: true)
|
||||||
!15 = !DIGlobalVariable(name: "_ZNK5clang12OverrideAttr5cloneERNS_10ASTContextE", scope: !0, file: !1, line: 11, type: !5, isLocal: false, isDefinition: true, variable: i32* @_ZNK5clang12OverrideAttr5cloneERNS_10ASTContextE)
|
!15 = !DIGlobalVariable(name: "_ZNK5clang12OverrideAttr5cloneERNS_10ASTContextE", scope: !0, file: !1, line: 11, type: !5, isLocal: false, isDefinition: true)
|
||||||
!16 = !DIGlobalVariable(name: "_ZN4llvm22MachineModuleInfoMachOD2Ev", scope: !0, file: !1, line: 12, type: !5, isLocal: false, isDefinition: true, variable: i32* @_ZN4llvm22MachineModuleInfoMachOD2Ev)
|
!16 = !DIGlobalVariable(name: "_ZN4llvm22MachineModuleInfoMachOD2Ev", scope: !0, file: !1, line: 12, type: !5, isLocal: false, isDefinition: true)
|
||||||
!17 = !{i32 2, !"Dwarf Version", i32 2}
|
!17 = !{i32 2, !"Dwarf Version", i32 2}
|
||||||
!18 = !{i32 2, !"Debug Info Version", i32 3}
|
!18 = !{i32 2, !"Debug Info Version", i32 3}
|
||||||
!19 = !{i32 1, !"PIC Level", i32 2}
|
!19 = !{i32 1, !"PIC Level", i32 2}
|
||||||
|
@ -37,8 +37,8 @@
|
|||||||
; CHECK: DW_AT_name {{.*}}"a.cpp"
|
; CHECK: DW_AT_name {{.*}}"a.cpp"
|
||||||
; CHECK: DW_AT_name {{.*}} "func"
|
; CHECK: DW_AT_name {{.*}} "func"
|
||||||
|
|
||||||
@x = global i32 (i32)* @_Z4funci, align 8
|
@x = global i32 (i32)* @_Z4funci, align 8, !dbg !10
|
||||||
@y = global i32 (i32)* @_Z4funci, align 8
|
@y = global i32 (i32)* @_Z4funci, align 8, !dbg !18
|
||||||
|
|
||||||
; Function Attrs: inlinehint nounwind uwtable
|
; Function Attrs: inlinehint nounwind uwtable
|
||||||
define linkonce_odr i32 @_Z4funci(i32 %i) #0 !dbg !4 {
|
define linkonce_odr i32 @_Z4funci(i32 %i) #0 !dbg !4 {
|
||||||
@ -69,14 +69,14 @@ attributes #1 = { nounwind readnone }
|
|||||||
!7 = !{!8, !8}
|
!7 = !{!8, !8}
|
||||||
!8 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
|
!8 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
|
||||||
!9 = !{!10}
|
!9 = !{!10}
|
||||||
!10 = !DIGlobalVariable(name: "x", line: 4, isLocal: false, isDefinition: true, scope: null, file: !5, type: !11, variable: i32 (i32)** @x)
|
!10 = !DIGlobalVariable(name: "x", line: 4, isLocal: false, isDefinition: true, scope: null, file: !5, type: !11)
|
||||||
!11 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, baseType: !6)
|
!11 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, baseType: !6)
|
||||||
!12 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang version 3.5.0 ", isOptimized: false, emissionKind: FullDebug, file: !13, enums: !2, retainedTypes: !2, globals: !17, imports: !2)
|
!12 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang version 3.5.0 ", isOptimized: false, emissionKind: FullDebug, file: !13, enums: !2, retainedTypes: !2, globals: !17, imports: !2)
|
||||||
!13 = !DIFile(filename: "b.cpp", directory: "/tmp/dbginfo")
|
!13 = !DIFile(filename: "b.cpp", directory: "/tmp/dbginfo")
|
||||||
!15 = distinct !DISubprogram(name: "func", linkageName: "_Z4funci", line: 1, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, unit: !12, scopeLine: 1, file: !13, scope: !16, type: !6, variables: !2)
|
!15 = distinct !DISubprogram(name: "func", linkageName: "_Z4funci", line: 1, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, unit: !12, scopeLine: 1, file: !13, scope: !16, type: !6, variables: !2)
|
||||||
!16 = !DIFile(filename: "b.cpp", directory: "/tmp/dbginfo")
|
!16 = !DIFile(filename: "b.cpp", directory: "/tmp/dbginfo")
|
||||||
!17 = !{!18}
|
!17 = !{!18}
|
||||||
!18 = !DIGlobalVariable(name: "y", line: 4, isLocal: false, isDefinition: true, scope: null, file: !16, type: !11, variable: i32 (i32)** @y)
|
!18 = !DIGlobalVariable(name: "y", line: 4, isLocal: false, isDefinition: true, scope: null, file: !16, type: !11)
|
||||||
!19 = !{i32 2, !"Dwarf Version", i32 4}
|
!19 = !{i32 2, !"Dwarf Version", i32 4}
|
||||||
!20 = !{i32 1, !"Debug Info Version", i32 3}
|
!20 = !{i32 1, !"Debug Info Version", i32 3}
|
||||||
!21 = !{!"clang version 3.5.0 "}
|
!21 = !{!"clang version 3.5.0 "}
|
||||||
|
@ -25,8 +25,8 @@
|
|||||||
; CHECK: DW_TAG_compile_unit
|
; CHECK: DW_TAG_compile_unit
|
||||||
; CHECK-NOT: DW_TAG_subprogram
|
; CHECK-NOT: DW_TAG_subprogram
|
||||||
|
|
||||||
@x = global i32 (i32)* @_Z4funci, align 8
|
@x = global i32 (i32)* @_Z4funci, align 8, !dbg !11
|
||||||
@y = global i32 (i32)* @_Z4funci, align 8
|
@y = global i32 (i32)* @_Z4funci, align 8, !dbg !16
|
||||||
|
|
||||||
; Function Attrs: inlinehint nounwind uwtable
|
; Function Attrs: inlinehint nounwind uwtable
|
||||||
define linkonce_odr i32 @_Z4funci(i32 %i) #0 !dbg !4 {
|
define linkonce_odr i32 @_Z4funci(i32 %i) #0 !dbg !4 {
|
||||||
@ -58,12 +58,12 @@ attributes #1 = { nounwind readnone }
|
|||||||
!8 = !{!9, !9}
|
!8 = !{!9, !9}
|
||||||
!9 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
|
!9 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
|
||||||
!10 = !{!11}
|
!10 = !{!11}
|
||||||
!11 = !DIGlobalVariable(name: "x", line: 4, isLocal: false, isDefinition: true, scope: null, file: !6, type: !12, variable: i32 (i32)** @x)
|
!11 = !DIGlobalVariable(name: "x", line: 4, isLocal: false, isDefinition: true, scope: null, file: !6, type: !12)
|
||||||
!12 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, baseType: !7)
|
!12 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, baseType: !7)
|
||||||
!13 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang version 3.5.0 ", isOptimized: false, emissionKind: FullDebug, file: !14, enums: !2, retainedTypes: !2, globals: !15, imports: !2)
|
!13 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang version 3.5.0 ", isOptimized: false, emissionKind: FullDebug, file: !14, enums: !2, retainedTypes: !2, globals: !15, imports: !2)
|
||||||
!14 = !DIFile(filename: "b.cpp", directory: "/tmp/dbginfo")
|
!14 = !DIFile(filename: "b.cpp", directory: "/tmp/dbginfo")
|
||||||
!15 = !{!16}
|
!15 = !{!16}
|
||||||
!16 = !DIGlobalVariable(name: "y", line: 4, isLocal: false, isDefinition: true, scope: null, file: !6, type: !12, variable: i32 (i32)** @y)
|
!16 = !DIGlobalVariable(name: "y", line: 4, isLocal: false, isDefinition: true, scope: null, file: !6, type: !12)
|
||||||
!17 = !{i32 2, !"Dwarf Version", i32 4}
|
!17 = !{i32 2, !"Dwarf Version", i32 4}
|
||||||
!18 = !{i32 1, !"Debug Info Version", i32 3}
|
!18 = !{i32 1, !"Debug Info Version", i32 3}
|
||||||
!19 = !{!"clang version 3.5.0 "}
|
!19 = !{!"clang version 3.5.0 "}
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
; Do not unnecessarily use AT_specification DIE.
|
; Do not unnecessarily use AT_specification DIE.
|
||||||
; CHECK-NOT: AT_specification
|
; CHECK-NOT: AT_specification
|
||||||
|
|
||||||
@a = common global [10 x i32] zeroinitializer, align 16
|
@a = common global [10 x i32] zeroinitializer, align 16, !dbg !5
|
||||||
|
|
||||||
!llvm.dbg.cu = !{!0}
|
!llvm.dbg.cu = !{!0}
|
||||||
!llvm.module.flags = !{!12}
|
!llvm.module.flags = !{!12}
|
||||||
@ -11,7 +11,7 @@
|
|||||||
!0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.0 (trunk 140253)", isOptimized: true, emissionKind: FullDebug, file: !11, enums: !2, retainedTypes: !2, globals: !3)
|
!0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.0 (trunk 140253)", isOptimized: true, emissionKind: FullDebug, file: !11, enums: !2, retainedTypes: !2, globals: !3)
|
||||||
!2 = !{}
|
!2 = !{}
|
||||||
!3 = !{!5}
|
!3 = !{!5}
|
||||||
!5 = !DIGlobalVariable(name: "a", line: 1, isLocal: false, isDefinition: true, scope: null, file: !6, type: !7, variable: [10 x i32]* @a)
|
!5 = !DIGlobalVariable(name: "a", line: 1, isLocal: false, isDefinition: true, scope: null, file: !6, type: !7)
|
||||||
!6 = !DIFile(filename: "x.c", directory: "/private/tmp")
|
!6 = !DIFile(filename: "x.c", directory: "/private/tmp")
|
||||||
!7 = !DICompositeType(tag: DW_TAG_array_type, size: 320, align: 32, baseType: !8, elements: !9)
|
!7 = !DICompositeType(tag: DW_TAG_array_type, size: 320, align: 32, baseType: !8, elements: !9)
|
||||||
!8 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
|
!8 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
|
||||||
|
@ -21,7 +21,7 @@
|
|||||||
%struct.Y = type { %struct.X* }
|
%struct.Y = type { %struct.X* }
|
||||||
%struct.X = type opaque
|
%struct.X = type opaque
|
||||||
|
|
||||||
@y = common global %struct.Y zeroinitializer, align 8
|
@y = common global %struct.Y zeroinitializer, align 8, !dbg !4
|
||||||
|
|
||||||
!llvm.dbg.cu = !{!0}
|
!llvm.dbg.cu = !{!0}
|
||||||
!llvm.module.flags = !{!10, !11}
|
!llvm.module.flags = !{!10, !11}
|
||||||
@ -31,7 +31,7 @@
|
|||||||
!1 = !DIFile(filename: "minimal.c", directory: "/tmp")
|
!1 = !DIFile(filename: "minimal.c", directory: "/tmp")
|
||||||
!2 = !{}
|
!2 = !{}
|
||||||
!3 = !{!4}
|
!3 = !{!4}
|
||||||
!4 = !DIGlobalVariable(name: "y", scope: !0, file: !1, line: 7, type: !5, isLocal: false, isDefinition: true, variable: %struct.Y* @y)
|
!4 = !DIGlobalVariable(name: "y", scope: !0, file: !1, line: 7, type: !5, isLocal: false, isDefinition: true)
|
||||||
!5 = !DICompositeType(tag: DW_TAG_structure_type, name: "Y", file: !1, line: 3, size: 64, align: 64, elements: !6)
|
!5 = !DICompositeType(tag: DW_TAG_structure_type, name: "Y", file: !1, line: 3, size: 64, align: 64, elements: !6)
|
||||||
!6 = !{!7}
|
!6 = !{!7}
|
||||||
!7 = !DIDerivedType(tag: DW_TAG_member, name: "x", scope: !5, file: !1, line: 4, baseType: !8, size: 64, align: 64)
|
!7 = !DIDerivedType(tag: DW_TAG_member, name: "x", scope: !5, file: !1, line: 4, baseType: !8, size: 64, align: 64)
|
||||||
|
@ -51,9 +51,9 @@
|
|||||||
|
|
||||||
%struct.C = type { i8 }
|
%struct.C = type { i8 }
|
||||||
|
|
||||||
@_ZN1C22static_member_variableE = global i32 0, align 4
|
@_ZN1C22static_member_variableE = global i32 0, align 4, !dbg !25
|
||||||
@global_variable = global %struct.C zeroinitializer, align 1
|
@global_variable = global %struct.C zeroinitializer, align 1, !dbg !26
|
||||||
@_ZN2ns25global_namespace_variableE = global i32 1, align 4
|
@_ZN2ns25global_namespace_variableE = global i32 1, align 4, !dbg !27
|
||||||
|
|
||||||
define void @_ZN1C15member_functionEv(%struct.C* %this) nounwind uwtable align 2 !dbg !3 {
|
define void @_ZN1C15member_functionEv(%struct.C* %this) nounwind uwtable align 2 !dbg !3 {
|
||||||
entry:
|
entry:
|
||||||
@ -114,9 +114,9 @@ attributes #1 = { nounwind readnone }
|
|||||||
!22 = !DISubroutineType(types: !23)
|
!22 = !DISubroutineType(types: !23)
|
||||||
!23 = !{null}
|
!23 = !{null}
|
||||||
!24 = !{!25, !26, !27}
|
!24 = !{!25, !26, !27}
|
||||||
!25 = !DIGlobalVariable(name: "static_member_variable", linkageName: "_ZN1C22static_member_variableE", line: 7, isLocal: false, isDefinition: true, scope: !8, file: !4, type: !11, variable: i32* @_ZN1C22static_member_variableE, declaration: !10)
|
!25 = !DIGlobalVariable(name: "static_member_variable", linkageName: "_ZN1C22static_member_variableE", line: 7, isLocal: false, isDefinition: true, scope: !8, file: !4, type: !11, declaration: !10)
|
||||||
!26 = !DIGlobalVariable(name: "global_variable", line: 17, isLocal: false, isDefinition: true, scope: null, file: !4, type: !8, variable: %struct.C* @global_variable)
|
!26 = !DIGlobalVariable(name: "global_variable", line: 17, isLocal: false, isDefinition: true, scope: null, file: !4, type: !8)
|
||||||
!27 = !DIGlobalVariable(name: "global_namespace_variable", linkageName: "_ZN2ns25global_namespace_variableE", line: 27, isLocal: false, isDefinition: true, scope: !21, file: !4, type: !11, variable: i32* @_ZN2ns25global_namespace_variableE)
|
!27 = !DIGlobalVariable(name: "global_namespace_variable", linkageName: "_ZN2ns25global_namespace_variableE", line: 27, isLocal: false, isDefinition: true, scope: !21, file: !4, type: !11)
|
||||||
!28 = !DILocalVariable(name: "this", line: 9, arg: 1, flags: DIFlagArtificial | DIFlagObjectPointer, scope: !3, file: !4, type: !29)
|
!28 = !DILocalVariable(name: "this", line: 9, arg: 1, flags: DIFlagArtificial | DIFlagObjectPointer, scope: !3, file: !4, type: !29)
|
||||||
!29 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, baseType: !8)
|
!29 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, baseType: !8)
|
||||||
!30 = !DILocation(line: 9, scope: !3)
|
!30 = !DILocation(line: 9, scope: !3)
|
||||||
|
@ -33,7 +33,7 @@
|
|||||||
; CHECK: DW_TAG_enumerator
|
; CHECK: DW_TAG_enumerator
|
||||||
; CHECK-NEXT: DW_AT_name{{.*}} = "X"
|
; CHECK-NEXT: DW_AT_name{{.*}} = "X"
|
||||||
|
|
||||||
@a = global i64 0, align 8
|
@a = global i64 0, align 8, !dbg !18
|
||||||
|
|
||||||
; Function Attrs: nounwind uwtable
|
; Function Attrs: nounwind uwtable
|
||||||
define void @_Z4funcv() #0 !dbg !13 {
|
define void @_Z4funcv() #0 !dbg !13 {
|
||||||
@ -70,7 +70,7 @@ attributes #1 = { nounwind readnone }
|
|||||||
!15 = !DISubroutineType(types: !16)
|
!15 = !DISubroutineType(types: !16)
|
||||||
!16 = !{null}
|
!16 = !{null}
|
||||||
!17 = !{!18}
|
!17 = !{!18}
|
||||||
!18 = !DIGlobalVariable(name: "a", line: 1, isLocal: false, isDefinition: true, scope: null, file: !14, type: !3, variable: i64* @a)
|
!18 = !DIGlobalVariable(name: "a", line: 1, isLocal: false, isDefinition: true, scope: null, file: !14, type: !3)
|
||||||
!19 = !{i32 2, !"Dwarf Version", i32 3}
|
!19 = !{i32 2, !"Dwarf Version", i32 3}
|
||||||
!20 = !DILocalVariable(name: "b", line: 4, scope: !13, file: !14, type: !21)
|
!20 = !DILocalVariable(name: "b", line: 4, scope: !13, file: !14, type: !21)
|
||||||
!21 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
|
!21 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
|
||||||
|
@ -16,8 +16,8 @@
|
|||||||
target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128"
|
target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128"
|
||||||
target triple = "arm64-apple-ios"
|
target triple = "arm64-apple-ios"
|
||||||
|
|
||||||
@a = common global i32 0, align 4
|
@a = common global i32 0, align 4, !dbg !16
|
||||||
@b = common global i32 0, align 4
|
@b = common global i32 0, align 4, !dbg !17
|
||||||
|
|
||||||
; Function Attrs: nounwind
|
; Function Attrs: nounwind
|
||||||
define void @f3() #0 !dbg !12 {
|
define void @f3() #0 !dbg !12 {
|
||||||
@ -81,8 +81,8 @@ attributes #3 = { nounwind }
|
|||||||
!13 = !DISubroutineType(types: !14)
|
!13 = !DISubroutineType(types: !14)
|
||||||
!14 = !{null}
|
!14 = !{null}
|
||||||
!15 = !{!16, !17}
|
!15 = !{!16, !17}
|
||||||
!16 = !DIGlobalVariable(name: "a", scope: !0, file: !1, line: 1, type: !9, isLocal: false, isDefinition: true, variable: i32* @a)
|
!16 = !DIGlobalVariable(name: "a", scope: !0, file: !1, line: 1, type: !9, isLocal: false, isDefinition: true)
|
||||||
!17 = !DIGlobalVariable(name: "b", scope: !0, file: !1, line: 1, type: !9, isLocal: false, isDefinition: true, variable: i32* @b)
|
!17 = !DIGlobalVariable(name: "b", scope: !0, file: !1, line: 1, type: !9, isLocal: false, isDefinition: true)
|
||||||
!18 = !{i32 2, !"Dwarf Version", i32 2}
|
!18 = !{i32 2, !"Dwarf Version", i32 2}
|
||||||
!19 = !{i32 2, !"Debug Info Version", i32 3}
|
!19 = !{i32 2, !"Debug Info Version", i32 3}
|
||||||
!20 = !{!"clang version 3.8.0 (trunk 245562) (llvm/trunk 245569)"}
|
!20 = !{!"clang version 3.8.0 (trunk 245562) (llvm/trunk 245569)"}
|
||||||
|
@ -17,8 +17,8 @@
|
|||||||
; int S::*x = 0;
|
; int S::*x = 0;
|
||||||
; void (S::*y)(int) = 0;
|
; void (S::*y)(int) = 0;
|
||||||
|
|
||||||
@x = global i64 -1, align 8
|
@x = global i64 -1, align 8, !dbg !5
|
||||||
@y = global { i64, i64 } zeroinitializer, align 8
|
@y = global { i64, i64 } zeroinitializer, align 8, !dbg !10
|
||||||
|
|
||||||
!llvm.dbg.cu = !{!0}
|
!llvm.dbg.cu = !{!0}
|
||||||
!llvm.module.flags = !{!16}
|
!llvm.module.flags = !{!16}
|
||||||
@ -26,12 +26,12 @@
|
|||||||
!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang version 3.3 ", isOptimized: false, emissionKind: FullDebug, file: !15, enums: !1, retainedTypes: !1, globals: !3, imports: !1)
|
!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang version 3.3 ", isOptimized: false, emissionKind: FullDebug, file: !15, enums: !1, retainedTypes: !1, globals: !3, imports: !1)
|
||||||
!1 = !{}
|
!1 = !{}
|
||||||
!3 = !{!5, !10}
|
!3 = !{!5, !10}
|
||||||
!5 = !DIGlobalVariable(name: "x", line: 4, isLocal: false, isDefinition: true, scope: null, file: !6, type: !7, variable: i64* @x)
|
!5 = !DIGlobalVariable(name: "x", line: 4, isLocal: false, isDefinition: true, scope: null, file: !6, type: !7)
|
||||||
!6 = !DIFile(filename: "simple.cpp", directory: "/home/blaikie/Development/scratch")
|
!6 = !DIFile(filename: "simple.cpp", directory: "/home/blaikie/Development/scratch")
|
||||||
!7 = !DIDerivedType(tag: DW_TAG_ptr_to_member_type, baseType: !8, extraData: !9)
|
!7 = !DIDerivedType(tag: DW_TAG_ptr_to_member_type, baseType: !8, extraData: !9)
|
||||||
!8 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
|
!8 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
|
||||||
!9 = !DICompositeType(tag: DW_TAG_structure_type, name: "S", line: 1, size: 8, align: 8, file: !15, elements: !1)
|
!9 = !DICompositeType(tag: DW_TAG_structure_type, name: "S", line: 1, size: 8, align: 8, file: !15, elements: !1)
|
||||||
!10 = !DIGlobalVariable(name: "y", line: 5, isLocal: false, isDefinition: true, scope: null, file: !6, type: !11, variable: { i64, i64 }* @y)
|
!10 = !DIGlobalVariable(name: "y", line: 5, isLocal: false, isDefinition: true, scope: null, file: !6, type: !11)
|
||||||
!11 = !DIDerivedType(tag: DW_TAG_ptr_to_member_type, baseType: !12, extraData: !9)
|
!11 = !DIDerivedType(tag: DW_TAG_ptr_to_member_type, baseType: !12, extraData: !9)
|
||||||
!12 = !DISubroutineType(types: !13)
|
!12 = !DISubroutineType(types: !13)
|
||||||
!13 = !{null, !14, !8}
|
!13 = !{null, !14, !8}
|
||||||
|
@ -200,8 +200,8 @@
|
|||||||
; }
|
; }
|
||||||
; void B::func_fwd() {}
|
; void B::func_fwd() {}
|
||||||
|
|
||||||
@_ZN1A1B1iE = global i32 0, align 4
|
@_ZN1A1B1iE = global i32 0, align 4, !dbg !31
|
||||||
@_ZN1A1B7var_fwdE = global i32 0, align 4
|
@_ZN1A1B7var_fwdE = global i32 0, align 4, !dbg !32
|
||||||
@llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @_GLOBAL__sub_I_debug_info_namespace.cpp, i8* null }]
|
@llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @_GLOBAL__sub_I_debug_info_namespace.cpp, i8* null }]
|
||||||
|
|
||||||
; Function Attrs: nounwind ssp uwtable
|
; Function Attrs: nounwind ssp uwtable
|
||||||
@ -317,8 +317,8 @@ attributes #1 = { nounwind readnone }
|
|||||||
!28 = !DIFile(filename: "debug-info-namespace.cpp", directory: "/tmp")
|
!28 = !DIFile(filename: "debug-info-namespace.cpp", directory: "/tmp")
|
||||||
!29 = !DISubroutineType(types: !2)
|
!29 = !DISubroutineType(types: !2)
|
||||||
!30 = !{!31, !32}
|
!30 = !{!31, !32}
|
||||||
!31 = !DIGlobalVariable(name: "i", linkageName: "_ZN1A1B1iE", line: 20, isLocal: false, isDefinition: true, scope: !6, file: !18, type: !13, variable: i32* @_ZN1A1B1iE)
|
!31 = !DIGlobalVariable(name: "i", linkageName: "_ZN1A1B1iE", line: 20, isLocal: false, isDefinition: true, scope: !6, file: !18, type: !13)
|
||||||
!32 = !DIGlobalVariable(name: "var_fwd", linkageName: "_ZN1A1B7var_fwdE", line: 44, isLocal: false, isDefinition: true, scope: !6, file: !18, type: !13, variable: i32* @_ZN1A1B7var_fwdE)
|
!32 = !DIGlobalVariable(name: "var_fwd", linkageName: "_ZN1A1B7var_fwdE", line: 44, isLocal: false, isDefinition: true, scope: !6, file: !18, type: !13)
|
||||||
!33 = !{!34, !35, !36, !37, !40, !41, !42, !43, !44, !45, !47, !48, !49, !51, !54, !55, !56}
|
!33 = !{!34, !35, !36, !37, !40, !41, !42, !43, !44, !45, !47, !48, !49, !51, !54, !55, !56}
|
||||||
!34 = !DIImportedEntity(tag: DW_TAG_imported_module, line: 15, scope: !7, entity: !6)
|
!34 = !DIImportedEntity(tag: DW_TAG_imported_module, line: 15, scope: !7, entity: !6)
|
||||||
!35 = !DIImportedEntity(tag: DW_TAG_imported_module, line: 18, scope: !0, entity: !7)
|
!35 = !DIImportedEntity(tag: DW_TAG_imported_module, line: 18, scope: !0, entity: !7)
|
||||||
|
@ -88,7 +88,7 @@
|
|||||||
|
|
||||||
%struct.C = type { i32 }
|
%struct.C = type { i32 }
|
||||||
|
|
||||||
@x = global %struct.C* null, align 8
|
@x = global %struct.C* null, align 8, !dbg !27
|
||||||
|
|
||||||
; Function Attrs: nounwind
|
; Function Attrs: nounwind
|
||||||
define void @_Z3fn6v() #0 !dbg !14 {
|
define void @_Z3fn6v() #0 !dbg !14 {
|
||||||
@ -225,7 +225,7 @@ attributes #3 = { nounwind }
|
|||||||
!24 = !DILocalVariable(name: "this", arg: 1, flags: DIFlagArtificial | DIFlagObjectPointer, scope: !22, type: !25)
|
!24 = !DILocalVariable(name: "this", arg: 1, flags: DIFlagArtificial | DIFlagObjectPointer, scope: !22, type: !25)
|
||||||
!25 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, baseType: !4)
|
!25 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, baseType: !4)
|
||||||
!26 = !{!27}
|
!26 = !{!27}
|
||||||
!27 = !DIGlobalVariable(name: "x", line: 13, isLocal: false, isDefinition: true, scope: null, file: !15, type: !25, variable: %struct.C** @x)
|
!27 = !DIGlobalVariable(name: "x", line: 13, isLocal: false, isDefinition: true, scope: null, file: !15, type: !25)
|
||||||
!28 = !{i32 2, !"Dwarf Version", i32 4}
|
!28 = !{i32 2, !"Dwarf Version", i32 4}
|
||||||
!29 = !{i32 2, !"Debug Info Version", i32 3}
|
!29 = !{i32 2, !"Debug Info Version", i32 3}
|
||||||
!30 = !{!"clang version 3.6.0 "}
|
!30 = !{!"clang version 3.6.0 "}
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
|
|
||||||
%class.bar = type { i8 }
|
%class.bar = type { i8 }
|
||||||
|
|
||||||
@filters = global %class.bar zeroinitializer, align 1
|
@filters = global %class.bar zeroinitializer, align 1, !dbg !4
|
||||||
|
|
||||||
!llvm.dbg.cu = !{!0}
|
!llvm.dbg.cu = !{!0}
|
||||||
!llvm.module.flags = !{!36, !37}
|
!llvm.module.flags = !{!36, !37}
|
||||||
@ -29,7 +29,7 @@
|
|||||||
!1 = !DIFile(filename: "debug-info-template-recursive.cpp", directory: "/usr/local/google/home/echristo/tmp")
|
!1 = !DIFile(filename: "debug-info-template-recursive.cpp", directory: "/usr/local/google/home/echristo/tmp")
|
||||||
!2 = !{}
|
!2 = !{}
|
||||||
!3 = !{!4}
|
!3 = !{!4}
|
||||||
!4 = !DIGlobalVariable(name: "filters", line: 10, isLocal: false, isDefinition: true, scope: null, file: !5, type: !6, variable: %class.bar* @filters)
|
!4 = !DIGlobalVariable(name: "filters", line: 10, isLocal: false, isDefinition: true, scope: null, file: !5, type: !6)
|
||||||
!5 = !DIFile(filename: "debug-info-template-recursive.cpp", directory: "/usr/local/google/home/echristo/tmp")
|
!5 = !DIFile(filename: "debug-info-template-recursive.cpp", directory: "/usr/local/google/home/echristo/tmp")
|
||||||
!6 = !DICompositeType(tag: DW_TAG_class_type, name: "bar", line: 9, size: 8, align: 8, file: !1, elements: !7)
|
!6 = !DICompositeType(tag: DW_TAG_class_type, name: "bar", line: 9, size: 8, align: 8, file: !1, elements: !7)
|
||||||
!7 = !{!8, !31}
|
!7 = !{!8, !31}
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
; };
|
; };
|
||||||
; int Foo:*x = 0;
|
; int Foo:*x = 0;
|
||||||
|
|
||||||
@x = global i64 -1, align 8
|
@x = global i64 -1, align 8, !dbg !6
|
||||||
|
|
||||||
!llvm.dbg.cu = !{!0}
|
!llvm.dbg.cu = !{!0}
|
||||||
!llvm.module.flags = !{!10, !11}
|
!llvm.module.flags = !{!10, !11}
|
||||||
@ -22,7 +22,7 @@
|
|||||||
!3 = !{!4}
|
!3 = !{!4}
|
||||||
!4 = !DICompositeType(tag: DW_TAG_structure_type, name: "Foo", line: 1, flags: DIFlagFwdDecl, file: !1, identifier: "_ZTS3Foo")
|
!4 = !DICompositeType(tag: DW_TAG_structure_type, name: "Foo", line: 1, flags: DIFlagFwdDecl, file: !1, identifier: "_ZTS3Foo")
|
||||||
!5 = !{!6}
|
!5 = !{!6}
|
||||||
!6 = !DIGlobalVariable(name: "x", line: 4, isLocal: false, isDefinition: true, scope: null, file: !7, type: !8, variable: i64* @x)
|
!6 = !DIGlobalVariable(name: "x", line: 4, isLocal: false, isDefinition: true, scope: null, file: !7, type: !8)
|
||||||
!7 = !DIFile(filename: "foo.cpp", directory: ".")
|
!7 = !DIFile(filename: "foo.cpp", directory: ".")
|
||||||
!8 = !DIDerivedType(tag: DW_TAG_ptr_to_member_type, baseType: !9, extraData: !4)
|
!8 = !DIDerivedType(tag: DW_TAG_ptr_to_member_type, baseType: !9, extraData: !4)
|
||||||
!9 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
|
!9 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
; CHECK-NOT: DW_AT_type
|
; CHECK-NOT: DW_AT_type
|
||||||
; CHECK: {{DW_TAG|NULL}}
|
; CHECK: {{DW_TAG|NULL}}
|
||||||
|
|
||||||
@y = global i8* null, align 8
|
@y = global i8* null, align 8, !dbg !4
|
||||||
|
|
||||||
!llvm.dbg.cu = !{!0}
|
!llvm.dbg.cu = !{!0}
|
||||||
!llvm.module.flags = !{!8, !9}
|
!llvm.module.flags = !{!8, !9}
|
||||||
@ -22,7 +22,7 @@
|
|||||||
!1 = !DIFile(filename: "typedef.cpp", directory: "/tmp/dbginfo")
|
!1 = !DIFile(filename: "typedef.cpp", directory: "/tmp/dbginfo")
|
||||||
!2 = !{}
|
!2 = !{}
|
||||||
!3 = !{!4}
|
!3 = !{!4}
|
||||||
!4 = !DIGlobalVariable(name: "y", line: 2, isLocal: false, isDefinition: true, scope: null, file: !5, type: !6, variable: i8** @y)
|
!4 = !DIGlobalVariable(name: "y", line: 2, isLocal: false, isDefinition: true, scope: null, file: !5, type: !6)
|
||||||
!5 = !DIFile(filename: "typedef.cpp", directory: "/tmp/dbginfo")
|
!5 = !DIFile(filename: "typedef.cpp", directory: "/tmp/dbginfo")
|
||||||
!6 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, baseType: !7)
|
!6 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, baseType: !7)
|
||||||
!7 = !DIDerivedType(tag: DW_TAG_typedef, name: "x", line: 1, file: !1, baseType: null)
|
!7 = !DIDerivedType(tag: DW_TAG_typedef, name: "x", line: 1, file: !1, baseType: null)
|
||||||
|
@ -41,7 +41,7 @@
|
|||||||
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
|
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
|
||||||
target triple = "x86_64-unknown-linux-gnu"
|
target triple = "x86_64-unknown-linux-gnu"
|
||||||
|
|
||||||
@m = common global i32 0, align 4
|
@m = common global i32 0, align 4, !dbg !16
|
||||||
@.str = private unnamed_addr constant [13 x i8] c"m(main): %d\0A\00", align 1
|
@.str = private unnamed_addr constant [13 x i8] c"m(main): %d\0A\00", align 1
|
||||||
|
|
||||||
; Function Attrs: nounwind uwtable
|
; Function Attrs: nounwind uwtable
|
||||||
@ -121,7 +121,7 @@
|
|||||||
!13 = !DILocalVariable(name: "argv", arg: 2, scope: !4, file: !1, line: 6, type: !8)
|
!13 = !DILocalVariable(name: "argv", arg: 2, scope: !4, file: !1, line: 6, type: !8)
|
||||||
!14 = !DILocalVariable(name: "n", scope: !4, file: !1, line: 7, type: !7)
|
!14 = !DILocalVariable(name: "n", scope: !4, file: !1, line: 7, type: !7)
|
||||||
!15 = !{!16}
|
!15 = !{!16}
|
||||||
!16 = !DIGlobalVariable(name: "m", scope: !0, file: !1, line: 2, type: !7, isLocal: false, isDefinition: true, variable: i32* @m)
|
!16 = !DIGlobalVariable(name: "m", scope: !0, file: !1, line: 2, type: !7, isLocal: false, isDefinition: true)
|
||||||
!17 = !{i32 2, !"Dwarf Version", i32 4}
|
!17 = !{i32 2, !"Dwarf Version", i32 4}
|
||||||
!18 = !{i32 2, !"Debug Info Version", i32 3}
|
!18 = !{i32 2, !"Debug Info Version", i32 3}
|
||||||
!19 = !{!"clang version 3.8.0 (trunk 253049)"}
|
!19 = !{!"clang version 3.8.0 (trunk 253049)"}
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
; CHECK-NEXT: info_string
|
; CHECK-NEXT: info_string
|
||||||
|
|
||||||
|
|
||||||
@i = common global i32 0 ; <i32*> [#uses=2]
|
@i = common global i32 0, !dbg !16 ; <i32*> [#uses=2]
|
||||||
|
|
||||||
declare void @llvm.dbg.declare(metadata, metadata, metadata) nounwind readnone
|
declare void @llvm.dbg.declare(metadata, metadata, metadata) nounwind readnone
|
||||||
|
|
||||||
@ -45,7 +45,7 @@ entry:
|
|||||||
!13 = !{!14, !15}
|
!13 = !{!14, !15}
|
||||||
!14 = !DIDerivedType(tag: DW_TAG_member, name: "a", line: 10, size: 32, align: 32, file: !27, scope: !12, baseType: !5)
|
!14 = !DIDerivedType(tag: DW_TAG_member, name: "a", line: 10, size: 32, align: 32, file: !27, scope: !12, baseType: !5)
|
||||||
!15 = !DIDerivedType(tag: DW_TAG_member, name: "b", line: 10, size: 32, align: 32, offset: 32, file: !27, scope: !12, baseType: !5)
|
!15 = !DIDerivedType(tag: DW_TAG_member, name: "b", line: 10, size: 32, align: 32, offset: 32, file: !27, scope: !12, baseType: !5)
|
||||||
!16 = !DIGlobalVariable(name: "i", line: 5, isLocal: false, isDefinition: true, scope: !1, file: !1, type: !5, variable: i32* @i)
|
!16 = !DIGlobalVariable(name: "i", line: 5, isLocal: false, isDefinition: true, scope: !1, file: !1, type: !5)
|
||||||
!17 = !DILocation(line: 15, scope: !18)
|
!17 = !DILocation(line: 15, scope: !18)
|
||||||
!18 = distinct !DILexicalBlock(line: 14, column: 0, file: !1, scope: !6)
|
!18 = distinct !DILexicalBlock(line: 14, column: 0, file: !1, scope: !6)
|
||||||
!19 = !DILocation(line: 9, scope: !0, inlinedAt: !17)
|
!19 = !DILocation(line: 9, scope: !0, inlinedAt: !17)
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
; CHECK-NEXT: .Laddr_sec:
|
; CHECK-NEXT: .Laddr_sec:
|
||||||
; CHECK-NEXT: .quad tls@DTPREL+32768
|
; CHECK-NEXT: .quad tls@DTPREL+32768
|
||||||
|
|
||||||
@tls = thread_local global i32 0, align 4
|
@tls = thread_local global i32 0, align 4, !dbg !4
|
||||||
|
|
||||||
!llvm.dbg.cu = !{!0}
|
!llvm.dbg.cu = !{!0}
|
||||||
!llvm.module.flags = !{!7, !8}
|
!llvm.module.flags = !{!7, !8}
|
||||||
@ -26,7 +26,7 @@
|
|||||||
!1 = !DIFile(filename: "tls.cpp", directory: "/tmp")
|
!1 = !DIFile(filename: "tls.cpp", directory: "/tmp")
|
||||||
!2 = !{}
|
!2 = !{}
|
||||||
!3 = !{!4}
|
!3 = !{!4}
|
||||||
!4 = !DIGlobalVariable(name: "tls", line: 1, isLocal: false, isDefinition: true, scope: null, file: !5, type: !6, variable: i32* @tls)
|
!4 = !DIGlobalVariable(name: "tls", line: 1, isLocal: false, isDefinition: true, scope: null, file: !5, type: !6)
|
||||||
!5 = !DIFile(filename: "tls.cpp", directory: "/tmp")
|
!5 = !DIFile(filename: "tls.cpp", directory: "/tmp")
|
||||||
!6 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
|
!6 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
|
||||||
!7 = !{i32 2, !"Dwarf Version", i32 3}
|
!7 = !{i32 2, !"Dwarf Version", i32 3}
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
; DW_OP_GNU_push_tls_address
|
; DW_OP_GNU_push_tls_address
|
||||||
; CHECK: .byte 224
|
; CHECK: .byte 224
|
||||||
|
|
||||||
@tls = thread_local global i32 7, align 4
|
@tls = thread_local global i32 7, align 4, !dbg !4
|
||||||
|
|
||||||
!llvm.dbg.cu = !{!0}
|
!llvm.dbg.cu = !{!0}
|
||||||
!llvm.module.flags = !{!7, !8}
|
!llvm.module.flags = !{!7, !8}
|
||||||
@ -21,7 +21,7 @@
|
|||||||
!1 = !DIFile(filename: "tls.cpp", directory: "/tmp")
|
!1 = !DIFile(filename: "tls.cpp", directory: "/tmp")
|
||||||
!2 = !{}
|
!2 = !{}
|
||||||
!3 = !{!4}
|
!3 = !{!4}
|
||||||
!4 = !DIGlobalVariable(name: "tls", line: 1, isLocal: false, isDefinition: true, scope: null, file: !5, type: !6, variable: i32* @tls)
|
!4 = !DIGlobalVariable(name: "tls", line: 1, isLocal: false, isDefinition: true, scope: null, file: !5, type: !6)
|
||||||
!5 = !DIFile(filename: "tls.cpp", directory: "/tmp")
|
!5 = !DIFile(filename: "tls.cpp", directory: "/tmp")
|
||||||
!6 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
|
!6 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
|
||||||
!7 = !{i32 2, !"Dwarf Version", i32 3}
|
!7 = !{i32 2, !"Dwarf Version", i32 3}
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
; ModuleID = 'test.c'
|
; ModuleID = 'test.c'
|
||||||
|
|
||||||
@GLB = common global i32 0, align 4
|
@GLB = common global i32 0, align 4, !dbg !14
|
||||||
|
|
||||||
define i32 @f() nounwind !dbg !5 {
|
define i32 @f() nounwind !dbg !5 {
|
||||||
%LOC = alloca i32, align 4
|
%LOC = alloca i32, align 4
|
||||||
@ -27,7 +27,7 @@ declare void @llvm.dbg.declare(metadata, metadata, metadata) nounwind readnone
|
|||||||
!8 = !{!9}
|
!8 = !{!9}
|
||||||
!9 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
|
!9 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
|
||||||
!12 = !{!14}
|
!12 = !{!14}
|
||||||
!14 = !DIGlobalVariable(name: "GLB", line: 1, isLocal: false, isDefinition: true, scope: null, file: !6, type: !9, variable: i32* @GLB)
|
!14 = !DIGlobalVariable(name: "GLB", line: 1, isLocal: false, isDefinition: true, scope: null, file: !6, type: !9)
|
||||||
!15 = !DILocalVariable(name: "LOC", line: 4, scope: !16, file: !6, type: !9)
|
!15 = !DILocalVariable(name: "LOC", line: 4, scope: !16, file: !6, type: !9)
|
||||||
!16 = distinct !DILexicalBlock(line: 3, column: 9, file: !20, scope: !5)
|
!16 = distinct !DILexicalBlock(line: 3, column: 9, file: !20, scope: !5)
|
||||||
!17 = !DILocation(line: 4, column: 9, scope: !16)
|
!17 = !DILocation(line: 4, column: 9, scope: !16)
|
||||||
|
@ -11,7 +11,7 @@ target triple = "x86_64-apple-macosx"
|
|||||||
|
|
||||||
%struct.s = type opaque
|
%struct.s = type opaque
|
||||||
|
|
||||||
@i = common global %struct.s* null, align 8
|
@i = common global %struct.s* null, align 8, !dbg !4
|
||||||
|
|
||||||
!llvm.dbg.cu = !{!0}
|
!llvm.dbg.cu = !{!0}
|
||||||
!llvm.module.flags = !{!7, !8}
|
!llvm.module.flags = !{!7, !8}
|
||||||
@ -20,7 +20,7 @@ target triple = "x86_64-apple-macosx"
|
|||||||
!1 = !DIFile(filename: "test.c", directory: "/")
|
!1 = !DIFile(filename: "test.c", directory: "/")
|
||||||
!2 = !{}
|
!2 = !{}
|
||||||
!3 = !{!4}
|
!3 = !{!4}
|
||||||
!4 = !DIGlobalVariable(name: "s", scope: !0, file: !1, line: 2, type: !5, isLocal: false, isDefinition: true, variable: %struct.s** @i)
|
!4 = !DIGlobalVariable(name: "s", scope: !0, file: !1, line: 2, type: !5, isLocal: false, isDefinition: true)
|
||||||
!5 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !6, size: 64, align: 64)
|
!5 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !6, size: 64, align: 64)
|
||||||
!6 = !DICompositeType(tag: DW_TAG_structure_type, name: "s", scope: !9, file: !1, line: 1, flags: DIFlagFwdDecl)
|
!6 = !DICompositeType(tag: DW_TAG_structure_type, name: "s", scope: !9, file: !1, line: 1, flags: DIFlagFwdDecl)
|
||||||
!7 = !{i32 2, !"Dwarf Version", i32 2}
|
!7 = !{i32 2, !"Dwarf Version", i32 2}
|
||||||
|
@ -42,7 +42,7 @@ source_filename = "t.cpp"
|
|||||||
target datalayout = "e-m:x-p:32:32-i64:64-f80:32-n8:16:32-a:0:32-S32"
|
target datalayout = "e-m:x-p:32:32-i64:64-f80:32-n8:16:32-a:0:32-S32"
|
||||||
target triple = "i386-pc-windows-msvc19.0.23918"
|
target triple = "i386-pc-windows-msvc19.0.23918"
|
||||||
|
|
||||||
@"\01?fptr@@3P6IHHH@ZA" = global i32 (i32, i32)* @"\01?f@@YIHHH@Z", align 4
|
@"\01?fptr@@3P6IHHH@ZA" = global i32 (i32, i32)* @"\01?f@@YIHHH@Z", align 4, !dbg !4
|
||||||
|
|
||||||
; Function Attrs: nounwind readnone
|
; Function Attrs: nounwind readnone
|
||||||
define x86_fastcallcc i32 @"\01?f@@YIHHH@Z"(i32 inreg %a, i32 inreg %b) #0 !dbg !12 {
|
define x86_fastcallcc i32 @"\01?f@@YIHHH@Z"(i32 inreg %a, i32 inreg %b) #0 !dbg !12 {
|
||||||
@ -67,7 +67,7 @@ attributes #1 = { nounwind readnone }
|
|||||||
!1 = !DIFile(filename: "t.cpp", directory: "D:\5Csrc\5Cllvm\5Cbuild")
|
!1 = !DIFile(filename: "t.cpp", directory: "D:\5Csrc\5Cllvm\5Cbuild")
|
||||||
!2 = !{}
|
!2 = !{}
|
||||||
!3 = !{!4}
|
!3 = !{!4}
|
||||||
!4 = distinct !DIGlobalVariable(name: "fptr", linkageName: "\01?fptr@@3P6IHHH@ZA", scope: !0, file: !1, line: 2, type: !5, isLocal: false, isDefinition: true, variable: i32 (i32, i32)** @"\01?fptr@@3P6IHHH@ZA")
|
!4 = distinct !DIGlobalVariable(name: "fptr", linkageName: "\01?fptr@@3P6IHHH@ZA", scope: !0, file: !1, line: 2, type: !5, isLocal: false, isDefinition: true)
|
||||||
!5 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !6, size: 32, align: 32)
|
!5 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !6, size: 32, align: 32)
|
||||||
!6 = !DISubroutineType(cc: DW_CC_BORLAND_msfastcall, types: !7)
|
!6 = !DISubroutineType(cc: DW_CC_BORLAND_msfastcall, types: !7)
|
||||||
!7 = !{!8, !8, !8}
|
!7 = !{!8, !8, !8}
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
; CHECK: DW_AT_specification {{.*}} "_ZN3foo3barEv"
|
; CHECK: DW_AT_specification {{.*}} "_ZN3foo3barEv"
|
||||||
|
|
||||||
|
|
||||||
@_ZZN3foo3barEvE1x = constant i32 0, align 4
|
@_ZZN3foo3barEvE1x = constant i32 0, align 4, !dbg !20
|
||||||
|
|
||||||
define void @_ZN3foo3barEv() !dbg !5 {
|
define void @_ZN3foo3barEv() !dbg !5 {
|
||||||
entry:
|
entry:
|
||||||
@ -32,7 +32,7 @@ entry:
|
|||||||
!12 = !DICompositeType(tag: DW_TAG_class_type, name: "foo", line: 1, size: 8, align: 8, file: !27, elements: !13)
|
!12 = !DICompositeType(tag: DW_TAG_class_type, name: "foo", line: 1, size: 8, align: 8, file: !27, elements: !13)
|
||||||
!13 = !{!11}
|
!13 = !{!11}
|
||||||
!18 = !{!20}
|
!18 = !{!20}
|
||||||
!20 = !DIGlobalVariable(name: "x", line: 5, isLocal: true, isDefinition: true, scope: !5, file: !6, type: !21, variable: i32* @_ZZN3foo3barEvE1x)
|
!20 = !DIGlobalVariable(name: "x", line: 5, isLocal: true, isDefinition: true, scope: !5, file: !6, type: !21)
|
||||||
!21 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !22)
|
!21 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !22)
|
||||||
!22 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
|
!22 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
|
||||||
!25 = !DILocation(line: 6, column: 1, scope: !26)
|
!25 = !DILocation(line: 6, column: 1, scope: !26)
|
||||||
|
@ -12,8 +12,8 @@
|
|||||||
%class.A = type { i32 }
|
%class.A = type { i32 }
|
||||||
%class.B = type { i32 }
|
%class.B = type { i32 }
|
||||||
|
|
||||||
@a = global %class.A zeroinitializer, align 4
|
@a = global %class.A zeroinitializer, align 4, !dbg !5
|
||||||
@b = global %class.B zeroinitializer, align 4
|
@b = global %class.B zeroinitializer, align 4, !dbg !17
|
||||||
|
|
||||||
!llvm.dbg.cu = !{!0}
|
!llvm.dbg.cu = !{!0}
|
||||||
!llvm.module.flags = !{!29}
|
!llvm.module.flags = !{!29}
|
||||||
@ -21,7 +21,7 @@
|
|||||||
!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang version 3.1 (trunk 153413) (llvm/trunk 153428)", isOptimized: false, emissionKind: FullDebug, file: !28, enums: !1, retainedTypes: !1, globals: !3, imports: !1)
|
!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang version 3.1 (trunk 153413) (llvm/trunk 153428)", isOptimized: false, emissionKind: FullDebug, file: !28, enums: !1, retainedTypes: !1, globals: !3, imports: !1)
|
||||||
!1 = !{}
|
!1 = !{}
|
||||||
!3 = !{!5, !17}
|
!3 = !{!5, !17}
|
||||||
!5 = !DIGlobalVariable(name: "a", line: 10, isLocal: false, isDefinition: true, scope: null, file: !6, type: !7, variable: %class.A* @a)
|
!5 = !DIGlobalVariable(name: "a", line: 10, isLocal: false, isDefinition: true, scope: null, file: !6, type: !7)
|
||||||
!6 = !DIFile(filename: "foo.cpp", directory: "/Users/echristo/tmp")
|
!6 = !DIFile(filename: "foo.cpp", directory: "/Users/echristo/tmp")
|
||||||
!7 = !DICompositeType(tag: DW_TAG_class_type, name: "A", line: 1, size: 32, align: 32, file: !28, elements: !8)
|
!7 = !DICompositeType(tag: DW_TAG_class_type, name: "A", line: 1, size: 32, align: 32, file: !28, elements: !8)
|
||||||
!8 = !{!9, !11}
|
!8 = !{!9, !11}
|
||||||
@ -31,7 +31,7 @@
|
|||||||
!12 = !DISubroutineType(types: !13)
|
!12 = !DISubroutineType(types: !13)
|
||||||
!13 = !{null, !14}
|
!13 = !{null, !14}
|
||||||
!14 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, flags: DIFlagArtificial, baseType: !7)
|
!14 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, flags: DIFlagArtificial, baseType: !7)
|
||||||
!17 = !DIGlobalVariable(name: "b", line: 11, isLocal: false, isDefinition: true, scope: null, file: !6, type: !18, variable: %class.B* @b)
|
!17 = !DIGlobalVariable(name: "b", line: 11, isLocal: false, isDefinition: true, scope: null, file: !6, type: !18)
|
||||||
!18 = !DICompositeType(tag: DW_TAG_class_type, name: "B", line: 5, size: 32, align: 32, file: !28, elements: !19)
|
!18 = !DICompositeType(tag: DW_TAG_class_type, name: "B", line: 5, size: 32, align: 32, file: !28, elements: !19)
|
||||||
!19 = !{!20, !21, !27}
|
!19 = !{!20, !21, !27}
|
||||||
!20 = !DIDerivedType(tag: DW_TAG_member, name: "b", line: 7, size: 32, align: 32, flags: DIFlagPrivate, file: !28, scope: !18, baseType: !10)
|
!20 = !DIDerivedType(tag: DW_TAG_member, name: "b", line: 7, size: 32, align: 32, flags: DIFlagPrivate, file: !28, scope: !18, baseType: !10)
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
; CHECK-NEXT: info_string
|
; CHECK-NEXT: info_string
|
||||||
|
|
||||||
|
|
||||||
@i = common global i32 0 ; <i32*> [#uses=2]
|
@i = common global i32 0, !dbg !16 ; <i32*> [#uses=2]
|
||||||
|
|
||||||
declare void @llvm.dbg.declare(metadata, metadata, metadata) nounwind readnone
|
declare void @llvm.dbg.declare(metadata, metadata, metadata) nounwind readnone
|
||||||
|
|
||||||
@ -45,7 +45,7 @@ entry:
|
|||||||
!13 = !{!14, !15}
|
!13 = !{!14, !15}
|
||||||
!14 = !DIDerivedType(tag: DW_TAG_member, name: "a", line: 10, size: 32, align: 32, file: !27, scope: !12, baseType: !5)
|
!14 = !DIDerivedType(tag: DW_TAG_member, name: "a", line: 10, size: 32, align: 32, file: !27, scope: !12, baseType: !5)
|
||||||
!15 = !DIDerivedType(tag: DW_TAG_member, name: "b", line: 10, size: 32, align: 32, offset: 32, file: !27, scope: !12, baseType: !5)
|
!15 = !DIDerivedType(tag: DW_TAG_member, name: "b", line: 10, size: 32, align: 32, offset: 32, file: !27, scope: !12, baseType: !5)
|
||||||
!16 = !DIGlobalVariable(name: "i", line: 5, isLocal: false, isDefinition: true, scope: !1, file: !1, type: !5, variable: i32* @i)
|
!16 = !DIGlobalVariable(name: "i", line: 5, isLocal: false, isDefinition: true, scope: !1, file: !1, type: !5)
|
||||||
!17 = !DILocation(line: 15, scope: !18)
|
!17 = !DILocation(line: 15, scope: !18)
|
||||||
!18 = distinct !DILexicalBlock(line: 14, column: 0, file: !1, scope: !6)
|
!18 = distinct !DILexicalBlock(line: 14, column: 0, file: !1, scope: !6)
|
||||||
!19 = !DILocation(line: 9, scope: !0, inlinedAt: !17)
|
!19 = !DILocation(line: 9, scope: !0, inlinedAt: !17)
|
||||||
|
@ -31,7 +31,7 @@ target triple = "x86_64-apple-macosx10.11.0"
|
|||||||
|
|
||||||
%struct.S0 = type { i16, i32 }
|
%struct.S0 = type { i16, i32 }
|
||||||
|
|
||||||
@a = common global %struct.S0 zeroinitializer, align 4
|
@a = common global %struct.S0 zeroinitializer, align 4, !dbg !21
|
||||||
|
|
||||||
declare void @llvm.dbg.declare(metadata, metadata, metadata)
|
declare void @llvm.dbg.declare(metadata, metadata, metadata)
|
||||||
declare void @llvm.dbg.value(metadata, i64, metadata, metadata)
|
declare void @llvm.dbg.value(metadata, i64, metadata, metadata)
|
||||||
@ -84,7 +84,7 @@ entry:
|
|||||||
!18 = !DISubroutineType(types: !19)
|
!18 = !DISubroutineType(types: !19)
|
||||||
!19 = !{!15}
|
!19 = !{!15}
|
||||||
!20 = !{!21}
|
!20 = !{!21}
|
||||||
!21 = !DIGlobalVariable(name: "a", scope: !0, file: !1, line: 4, type: !11, isLocal: false, isDefinition: true, variable: %struct.S0* @a)
|
!21 = !DIGlobalVariable(name: "a", scope: !0, file: !1, line: 4, type: !11, isLocal: false, isDefinition: true)
|
||||||
!22 = !{i32 2, !"Dwarf Version", i32 2}
|
!22 = !{i32 2, !"Dwarf Version", i32 2}
|
||||||
!23 = !{i32 2, !"Debug Info Version", i32 3}
|
!23 = !{i32 2, !"Debug Info Version", i32 3}
|
||||||
!24 = !{i32 1, !"PIC Level", i32 2}
|
!24 = !{i32 1, !"PIC Level", i32 2}
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
target triple = "x86_64-linux-gnu"
|
target triple = "x86_64-linux-gnu"
|
||||||
|
|
||||||
@_ZTId = external constant i8*
|
@_ZTId = external constant i8*
|
||||||
@zed = global [1 x void ()*] [void ()* @bar]
|
@zed = global [1 x void ()*] [void ()* @bar], !dbg !11
|
||||||
|
|
||||||
define void @foo() !dbg !4 {
|
define void @foo() !dbg !4 {
|
||||||
ret void
|
ret void
|
||||||
@ -42,7 +42,7 @@ lpad: ; preds = %0
|
|||||||
!8 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
|
!8 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
|
||||||
!9 = distinct !DISubprogram(name: "bar_d", linkageName: "bar", scope: !5, file: !5, line: 3, type: !6, isLocal: false, isDefinition: true, scopeLine: 3, flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2)
|
!9 = distinct !DISubprogram(name: "bar_d", linkageName: "bar", scope: !5, file: !5, line: 3, type: !6, isLocal: false, isDefinition: true, scopeLine: 3, flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2)
|
||||||
!10 = !{!11}
|
!10 = !{!11}
|
||||||
!11 = !DIGlobalVariable(name: "zed", scope: !0, file: !5, line: 6, type: !12, isLocal: false, isDefinition: true, variable: [1 x void ()*]* @zed)
|
!11 = !DIGlobalVariable(name: "zed", scope: !0, file: !5, line: 6, type: !12, isLocal: false, isDefinition: true)
|
||||||
!12 = !DICompositeType(tag: DW_TAG_array_type, baseType: !13, size: 64, align: 64, elements: !15)
|
!12 = !DICompositeType(tag: DW_TAG_array_type, baseType: !13, size: 64, align: 64, elements: !15)
|
||||||
!13 = !DIDerivedType(tag: DW_TAG_typedef, name: "vifunc", file: !5, line: 5, baseType: !14)
|
!13 = !DIDerivedType(tag: DW_TAG_typedef, name: "vifunc", file: !5, line: 5, baseType: !14)
|
||||||
!14 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !6, size: 64, align: 64)
|
!14 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !6, size: 64, align: 64)
|
||||||
|
@ -22,7 +22,7 @@
|
|||||||
|
|
||||||
%struct.foo = type { i8 }
|
%struct.foo = type { i8 }
|
||||||
|
|
||||||
@f = global %struct.foo zeroinitializer, align 1
|
@f = global %struct.foo zeroinitializer, align 1, !dbg !10
|
||||||
@i = external global i32
|
@i = external global i32
|
||||||
|
|
||||||
!llvm.dbg.cu = !{!0}
|
!llvm.dbg.cu = !{!0}
|
||||||
@ -39,7 +39,7 @@
|
|||||||
!7 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, baseType: !8)
|
!7 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, baseType: !8)
|
||||||
!8 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
|
!8 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
|
||||||
!9 = !{!10}
|
!9 = !{!10}
|
||||||
!10 = !DIGlobalVariable(name: "f", line: 6, isLocal: false, isDefinition: true, scope: null, file: !11, type: !4, variable: %struct.foo* @f)
|
!10 = !DIGlobalVariable(name: "f", line: 6, isLocal: false, isDefinition: true, scope: null, file: !11, type: !4)
|
||||||
!11 = !DIFile(filename: "simple.cpp", directory: "/tmp/dbginfo")
|
!11 = !DIFile(filename: "simple.cpp", directory: "/tmp/dbginfo")
|
||||||
!12 = !{i32 2, !"Dwarf Version", i32 4}
|
!12 = !{i32 2, !"Dwarf Version", i32 4}
|
||||||
!13 = !{i32 1, !"Debug Info Version", i32 3}
|
!13 = !{i32 1, !"Debug Info Version", i32 3}
|
||||||
|
@ -21,7 +21,7 @@ target triple = "x86_64-apple-macosx"
|
|||||||
|
|
||||||
%struct.PackedBits = type <{ i8, i32 }>
|
%struct.PackedBits = type <{ i8, i32 }>
|
||||||
|
|
||||||
@s = common global %struct.PackedBits zeroinitializer, align 1
|
@s = common global %struct.PackedBits zeroinitializer, align 1, !dbg !4
|
||||||
|
|
||||||
!llvm.dbg.cu = !{!0}
|
!llvm.dbg.cu = !{!0}
|
||||||
!llvm.module.flags = !{!14, !15, !16}
|
!llvm.module.flags = !{!14, !15, !16}
|
||||||
@ -31,7 +31,7 @@ target triple = "x86_64-apple-macosx"
|
|||||||
!1 = !DIFile(filename: "bitfield.c", directory: "/Volumes/Data/llvm")
|
!1 = !DIFile(filename: "bitfield.c", directory: "/Volumes/Data/llvm")
|
||||||
!2 = !{}
|
!2 = !{}
|
||||||
!3 = !{!4}
|
!3 = !{!4}
|
||||||
!4 = distinct !DIGlobalVariable(name: "s", scope: !0, file: !1, line: 8, type: !5, isLocal: false, isDefinition: true, variable: %struct.PackedBits* @s)
|
!4 = distinct !DIGlobalVariable(name: "s", scope: !0, file: !1, line: 8, type: !5, isLocal: false, isDefinition: true)
|
||||||
!5 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "PackedBits", file: !1, line: 3, size: 40, align: 8, elements: !6)
|
!5 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "PackedBits", file: !1, line: 3, size: 40, align: 8, elements: !6)
|
||||||
!6 = !{!7, !9, !13}
|
!6 = !{!7, !9, !13}
|
||||||
|
|
||||||
|
@ -48,7 +48,7 @@ target triple = "x86_64-apple-macosx"
|
|||||||
|
|
||||||
%struct.bitfield = type <{ i8, [3 x i8], i64 }>
|
%struct.bitfield = type <{ i8, [3 x i8], i64 }>
|
||||||
|
|
||||||
@b = common global %struct.bitfield zeroinitializer, align 4
|
@b = common global %struct.bitfield zeroinitializer, align 4, !dbg !4
|
||||||
|
|
||||||
!llvm.dbg.cu = !{!0}
|
!llvm.dbg.cu = !{!0}
|
||||||
!llvm.module.flags = !{!13, !14, !15}
|
!llvm.module.flags = !{!13, !14, !15}
|
||||||
@ -58,7 +58,7 @@ target triple = "x86_64-apple-macosx"
|
|||||||
!1 = !DIFile(filename: "bitfields.c", directory: "/")
|
!1 = !DIFile(filename: "bitfields.c", directory: "/")
|
||||||
!2 = !{}
|
!2 = !{}
|
||||||
!3 = !{!4}
|
!3 = !{!4}
|
||||||
!4 = !DIGlobalVariable(name: "b", scope: !0, file: !5, line: 8, type: !6, isLocal: false, isDefinition: true, variable: %struct.bitfield* @b)
|
!4 = !DIGlobalVariable(name: "b", scope: !0, file: !5, line: 8, type: !6, isLocal: false, isDefinition: true)
|
||||||
!5 = !DIFile(filename: "bitfields.c", directory: "/")
|
!5 = !DIFile(filename: "bitfields.c", directory: "/")
|
||||||
!6 = !DICompositeType(tag: DW_TAG_structure_type, name: "bitfield", file: !5, line: 1, size: 96, align: 32, elements: !7)
|
!6 = !DICompositeType(tag: DW_TAG_structure_type, name: "bitfield", file: !5, line: 1, size: 96, align: 32, elements: !7)
|
||||||
!7 = !{!8, !10, !11, !12}
|
!7 = !{!8, !10, !11, !12}
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
|
|
||||||
%struct.foo = type {}
|
%struct.foo = type {}
|
||||||
|
|
||||||
@f = common global %struct.foo zeroinitializer, align 1
|
@f = common global %struct.foo zeroinitializer, align 1, !dbg !4
|
||||||
|
|
||||||
!llvm.dbg.cu = !{!0}
|
!llvm.dbg.cu = !{!0}
|
||||||
!llvm.module.flags = !{!7, !8}
|
!llvm.module.flags = !{!7, !8}
|
||||||
@ -21,7 +21,7 @@
|
|||||||
!1 = !DIFile(filename: "simple.c", directory: "/tmp/dbginfo")
|
!1 = !DIFile(filename: "simple.c", directory: "/tmp/dbginfo")
|
||||||
!2 = !{}
|
!2 = !{}
|
||||||
!3 = !{!4}
|
!3 = !{!4}
|
||||||
!4 = !DIGlobalVariable(name: "f", line: 2, isLocal: false, isDefinition: true, scope: null, file: !5, type: !6, variable: %struct.foo* @f)
|
!4 = !DIGlobalVariable(name: "f", line: 2, isLocal: false, isDefinition: true, scope: null, file: !5, type: !6)
|
||||||
!5 = !DIFile(filename: "simple.c", directory: "/tmp/dbginfo")
|
!5 = !DIFile(filename: "simple.c", directory: "/tmp/dbginfo")
|
||||||
!6 = !DICompositeType(tag: DW_TAG_structure_type, name: "foo", line: 1, align: 8, file: !1, elements: !2)
|
!6 = !DICompositeType(tag: DW_TAG_structure_type, name: "foo", line: 1, align: 8, file: !1, elements: !2)
|
||||||
!7 = !{i32 2, !"Dwarf Version", i32 4}
|
!7 = !{i32 2, !"Dwarf Version", i32 4}
|
||||||
|
@ -118,7 +118,7 @@ declare void @_Z8moz_freePv(i8*)
|
|||||||
!45 = !DILocalVariable(name: "this", line: 4, arg: 1, flags: DIFlagArtificial, scope: !31, file: !6, type: !34)
|
!45 = !DILocalVariable(name: "this", line: 4, arg: 1, flags: DIFlagArtificial, scope: !31, file: !6, type: !34)
|
||||||
!46 = !DILocalVariable(name: "aValue", line: 4, arg: 2, scope: !31, file: !6, type: !9)
|
!46 = !DILocalVariable(name: "aValue", line: 4, arg: 2, scope: !31, file: !6, type: !9)
|
||||||
!47 = !{!49}
|
!47 = !{!49}
|
||||||
!49 = !DIGlobalVariable(name: "mRefCnt", line: 9, isLocal: false, isDefinition: true, scope: null, file: !6, type: !37, variable: i32* null)
|
!49 = !DIGlobalVariable(name: "mRefCnt", line: 9, isLocal: false, isDefinition: true, scope: null, file: !6, type: !37)
|
||||||
!50 = !DILocation(line: 5, column: 5, scope: !51, inlinedAt: !52)
|
!50 = !DILocation(line: 5, column: 5, scope: !51, inlinedAt: !52)
|
||||||
!51 = distinct !DILexicalBlock(line: 4, column: 29, file: !6, scope: !31)
|
!51 = distinct !DILexicalBlock(line: 4, column: 29, file: !6, scope: !31)
|
||||||
!52 = !DILocation(line: 15, scope: !53)
|
!52 = !DILocation(line: 15, scope: !53)
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
|
|
||||||
%class.A = type { i32 }
|
%class.A = type { i32 }
|
||||||
|
|
||||||
@a = global %class.A zeroinitializer, align 4
|
@a = global %class.A zeroinitializer, align 4, !dbg !22
|
||||||
@llvm.global_ctors = appending global [1 x { i32, void ()* }] [{ i32, void ()* } { i32 65535, void ()* @_GLOBAL__I_a }]
|
@llvm.global_ctors = appending global [1 x { i32, void ()* }] [{ i32, void ()* } { i32 65535, void ()* @_GLOBAL__I_a }]
|
||||||
|
|
||||||
define internal void @__cxx_global_var_init() section ".text.startup" !dbg !14 {
|
define internal void @__cxx_global_var_init() section ".text.startup" !dbg !14 {
|
||||||
@ -81,7 +81,7 @@ attributes #1 = { nounwind readnone }
|
|||||||
!19 = distinct !DISubprogram(name: "", linkageName: "_GLOBAL__I_a", line: 3, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagArtificial, isOptimized: false, unit: !0, scopeLine: 3, file: !1, scope: !15, type: !20, variables: !2)
|
!19 = distinct !DISubprogram(name: "", linkageName: "_GLOBAL__I_a", line: 3, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagArtificial, isOptimized: false, unit: !0, scopeLine: 3, file: !1, scope: !15, type: !20, variables: !2)
|
||||||
!20 = !DISubroutineType(types: !2)
|
!20 = !DISubroutineType(types: !2)
|
||||||
!21 = !{!22}
|
!21 = !{!22}
|
||||||
!22 = !DIGlobalVariable(name: "a", line: 8, isLocal: false, isDefinition: true, scope: null, file: !15, type: !4, variable: %class.A* @a)
|
!22 = !DIGlobalVariable(name: "a", line: 8, isLocal: false, isDefinition: true, scope: null, file: !15, type: !4)
|
||||||
!23 = !{i32 2, !"Dwarf Version", i32 4}
|
!23 = !{i32 2, !"Dwarf Version", i32 4}
|
||||||
!24 = !{i32 1, !"Debug Info Version", i32 3}
|
!24 = !{i32 1, !"Debug Info Version", i32 3}
|
||||||
!25 = !{!"clang version 3.5 (trunk 199923) (llvm/trunk 199940)"}
|
!25 = !{!"clang version 3.5 (trunk 199923) (llvm/trunk 199940)"}
|
||||||
|
@ -28,7 +28,7 @@
|
|||||||
|
|
||||||
%struct.foo = type { i8, i32 }
|
%struct.foo = type { i8, i32 }
|
||||||
|
|
||||||
@f = global %struct.foo zeroinitializer, align 4
|
@f = global %struct.foo zeroinitializer, align 4, !dbg !11
|
||||||
|
|
||||||
!llvm.dbg.cu = !{!0}
|
!llvm.dbg.cu = !{!0}
|
||||||
!llvm.module.flags = !{!13, !15}
|
!llvm.module.flags = !{!13, !15}
|
||||||
@ -45,7 +45,7 @@
|
|||||||
!8 = !DIDerivedType(tag: DW_TAG_member, name: "i", line: 3, size: 32, align: 32, offset: 32, file: !1, scope: !4, baseType: !9)
|
!8 = !DIDerivedType(tag: DW_TAG_member, name: "i", line: 3, size: 32, align: 32, offset: 32, file: !1, scope: !4, baseType: !9)
|
||||||
!9 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
|
!9 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
|
||||||
!10 = !{!11}
|
!10 = !{!11}
|
||||||
!11 = !DIGlobalVariable(name: "f", line: 6, isLocal: false, isDefinition: true, scope: null, file: !12, type: !4, variable: %struct.foo* @f)
|
!11 = !DIGlobalVariable(name: "f", line: 6, isLocal: false, isDefinition: true, scope: null, file: !12, type: !4)
|
||||||
!12 = !DIFile(filename: "data_member_location.cpp", directory: "/tmp/dbginfo")
|
!12 = !DIFile(filename: "data_member_location.cpp", directory: "/tmp/dbginfo")
|
||||||
!13 = !{i32 2, !"Dwarf Version", i32 4}
|
!13 = !{i32 2, !"Dwarf Version", i32 4}
|
||||||
!14 = !{!"clang version 3.4 "}
|
!14 = !{!"clang version 3.4 "}
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
|
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
|
||||||
target triple = "x86_64-apple-macosx10.7.2"
|
target triple = "x86_64-apple-macosx10.7.2"
|
||||||
|
|
||||||
@s = common global [4294967296 x i8] zeroinitializer, align 16
|
@s = common global [4294967296 x i8] zeroinitializer, align 16, !dbg !13
|
||||||
; CHECK: .quad 4294967296 ## DW_AT_count
|
; CHECK: .quad 4294967296 ## DW_AT_count
|
||||||
|
|
||||||
define void @bar() nounwind uwtable ssp !dbg !5 {
|
define void @bar() nounwind uwtable ssp !dbg !5 {
|
||||||
@ -22,7 +22,7 @@ entry:
|
|||||||
!7 = !DISubroutineType(types: !8)
|
!7 = !DISubroutineType(types: !8)
|
||||||
!8 = !{null}
|
!8 = !{null}
|
||||||
!11 = !{!13}
|
!11 = !{!13}
|
||||||
!13 = !DIGlobalVariable(name: "s", line: 2, isLocal: false, isDefinition: true, scope: null, file: !6, type: !14, variable: [4294967296 x i8]* @s)
|
!13 = !DIGlobalVariable(name: "s", line: 2, isLocal: false, isDefinition: true, scope: null, file: !6, type: !14)
|
||||||
!14 = !DICompositeType(tag: DW_TAG_array_type, size: 34359738368, align: 8, baseType: !15, elements: !16)
|
!14 = !DICompositeType(tag: DW_TAG_array_type, size: 34359738368, align: 8, baseType: !15, elements: !16)
|
||||||
!15 = !DIBasicType(tag: DW_TAG_base_type, name: "char", size: 8, align: 8, encoding: DW_ATE_signed_char)
|
!15 = !DIBasicType(tag: DW_TAG_base_type, name: "char", size: 8, align: 8, encoding: DW_ATE_signed_char)
|
||||||
!16 = !{!17}
|
!16 = !{!17}
|
||||||
|
@ -41,7 +41,7 @@
|
|||||||
|
|
||||||
%struct.S1 = type { float*, i32 }
|
%struct.S1 = type { float*, i32 }
|
||||||
|
|
||||||
@p = common global %struct.S1 zeroinitializer, align 8
|
@p = common global %struct.S1 zeroinitializer, align 8, !dbg !19
|
||||||
|
|
||||||
define i32 @foo(%struct.S1* nocapture %sp, i32 %nums) nounwind optsize ssp !dbg !0 {
|
define i32 @foo(%struct.S1* nocapture %sp, i32 %nums) nounwind optsize ssp !dbg !0 {
|
||||||
entry:
|
entry:
|
||||||
@ -93,7 +93,7 @@ declare void @llvm.dbg.value(metadata, i64, metadata, metadata) nounwind readnon
|
|||||||
!16 = !DIBasicType(tag: DW_TAG_base_type, name: "float", size: 32, align: 32, encoding: DW_ATE_float)
|
!16 = !DIBasicType(tag: DW_TAG_base_type, name: "float", size: 32, align: 32, encoding: DW_ATE_float)
|
||||||
!17 = !DIDerivedType(tag: DW_TAG_member, name: "nums", line: 3, size: 32, align: 32, offset: 64, file: !42, scope: !1, baseType: !5)
|
!17 = !DIDerivedType(tag: DW_TAG_member, name: "nums", line: 3, size: 32, align: 32, offset: 64, file: !42, scope: !1, baseType: !5)
|
||||||
!18 = !DILocalVariable(name: "nums", line: 7, arg: 2, scope: !0, file: !1, type: !5)
|
!18 = !DILocalVariable(name: "nums", line: 7, arg: 2, scope: !0, file: !1, type: !5)
|
||||||
!19 = !DIGlobalVariable(name: "p", line: 14, isLocal: false, isDefinition: true, scope: !2, file: !1, type: !11, variable: %struct.S1* @p)
|
!19 = !DIGlobalVariable(name: "p", line: 14, isLocal: false, isDefinition: true, scope: !2, file: !1, type: !11)
|
||||||
!20 = !DILocation(line: 7, column: 13, scope: !0)
|
!20 = !DILocation(line: 7, column: 13, scope: !0)
|
||||||
!21 = !DILocation(line: 7, column: 21, scope: !0)
|
!21 = !DILocation(line: 7, column: 21, scope: !0)
|
||||||
!22 = !DILocation(line: 9, column: 3, scope: !23)
|
!22 = !DILocation(line: 9, column: 3, scope: !23)
|
||||||
|
@ -36,7 +36,7 @@
|
|||||||
target datalayout = "e-m:w-i64:64-f80:128-n8:16:32:64-S128"
|
target datalayout = "e-m:w-i64:64-f80:128-n8:16:32:64-S128"
|
||||||
target triple = "x86_64-pc-windows-msvc18.0.0"
|
target triple = "x86_64-pc-windows-msvc18.0.0"
|
||||||
|
|
||||||
@x = common global i32 0, align 4
|
@x = common global i32 0, align 4, !dbg !15
|
||||||
|
|
||||||
; Function Attrs: nounwind uwtable
|
; Function Attrs: nounwind uwtable
|
||||||
define i32 @main(i32 %argc, i8** nocapture readnone %argv) #0 !dbg !4 {
|
define i32 @main(i32 %argc, i8** nocapture readnone %argv) #0 !dbg !4 {
|
||||||
@ -89,7 +89,7 @@ attributes #3 = { nounwind }
|
|||||||
!12 = !DILocalVariable(name: "argv", arg: 2, scope: !4, file: !1, line: 4, type: !8)
|
!12 = !DILocalVariable(name: "argv", arg: 2, scope: !4, file: !1, line: 4, type: !8)
|
||||||
!13 = !DILocalVariable(name: "argc", arg: 1, scope: !4, file: !1, line: 4, type: !7)
|
!13 = !DILocalVariable(name: "argc", arg: 1, scope: !4, file: !1, line: 4, type: !7)
|
||||||
!14 = !{!15}
|
!14 = !{!15}
|
||||||
!15 = !DIGlobalVariable(name: "x", scope: !0, file: !1, line: 1, type: !16, isLocal: false, isDefinition: true, variable: i32* @x)
|
!15 = !DIGlobalVariable(name: "x", scope: !0, file: !1, line: 1, type: !16, isLocal: false, isDefinition: true)
|
||||||
!16 = !DIDerivedType(tag: DW_TAG_volatile_type, baseType: !7)
|
!16 = !DIDerivedType(tag: DW_TAG_volatile_type, baseType: !7)
|
||||||
!17 = !{i32 2, !"Dwarf Version", i32 4}
|
!17 = !{i32 2, !"Dwarf Version", i32 4}
|
||||||
!18 = !{i32 2, !"Debug Info Version", i32 3}
|
!18 = !{i32 2, !"Debug Info Version", i32 3}
|
||||||
|
@ -91,9 +91,9 @@ target triple = "x86_64-apple-macosx10.10.0"
|
|||||||
%class.B = type { i8 }
|
%class.B = type { i8 }
|
||||||
%union.U = type { i32 }
|
%union.U = type { i32 }
|
||||||
|
|
||||||
@a = global %struct.A zeroinitializer, align 1
|
@a = global %struct.A zeroinitializer, align 1, !dbg !35
|
||||||
@b = global %class.B zeroinitializer, align 1
|
@b = global %class.B zeroinitializer, align 1, !dbg !36
|
||||||
@u = global %union.U zeroinitializer, align 4
|
@u = global %union.U zeroinitializer, align 4, !dbg !37
|
||||||
|
|
||||||
; Function Attrs: nounwind ssp uwtable
|
; Function Attrs: nounwind ssp uwtable
|
||||||
define void @_Z4freev() #0 !dbg !30 {
|
define void @_Z4freev() #0 !dbg !30 {
|
||||||
@ -140,9 +140,9 @@ attributes #0 = { nounwind ssp uwtable }
|
|||||||
!32 = !DISubroutineType(types: !33)
|
!32 = !DISubroutineType(types: !33)
|
||||||
!33 = !{null}
|
!33 = !{null}
|
||||||
!34 = !{!35, !36, !37}
|
!34 = !{!35, !36, !37}
|
||||||
!35 = !DIGlobalVariable(name: "a", line: 37, isLocal: false, isDefinition: true, scope: null, file: !31, type: !4, variable: %struct.A* @a)
|
!35 = !DIGlobalVariable(name: "a", line: 37, isLocal: false, isDefinition: true, scope: null, file: !31, type: !4)
|
||||||
!36 = !DIGlobalVariable(name: "b", line: 38, isLocal: false, isDefinition: true, scope: null, file: !31, type: !12, variable: %class.B* @b)
|
!36 = !DIGlobalVariable(name: "b", line: 38, isLocal: false, isDefinition: true, scope: null, file: !31, type: !12)
|
||||||
!37 = !DIGlobalVariable(name: "u", line: 39, isLocal: false, isDefinition: true, scope: null, file: !31, type: !22, variable: %union.U* @u)
|
!37 = !DIGlobalVariable(name: "u", line: 39, isLocal: false, isDefinition: true, scope: null, file: !31, type: !22)
|
||||||
!38 = !{i32 2, !"Dwarf Version", i32 2}
|
!38 = !{i32 2, !"Dwarf Version", i32 2}
|
||||||
!39 = !{i32 2, !"Debug Info Version", i32 3}
|
!39 = !{i32 2, !"Debug Info Version", i32 3}
|
||||||
!40 = !{!"clang version 3.6.0 "}
|
!40 = !{!"clang version 3.6.0 "}
|
||||||
|
@ -139,10 +139,10 @@ target triple = "x86_64-apple-darwin"
|
|||||||
; CHECK: DW_AT_bit_offset {{.*}} (0x1f)
|
; CHECK: DW_AT_bit_offset {{.*}} (0x1f)
|
||||||
; CHECK: DW_AT_data_member_location {{.*}}0c
|
; CHECK: DW_AT_data_member_location {{.*}}0c
|
||||||
|
|
||||||
@l0 = common global %struct.layout0 zeroinitializer, align 8
|
@l0 = common global %struct.layout0 zeroinitializer, align 8, !dbg !4
|
||||||
@l1 = common global %struct.layout1 zeroinitializer, align 4
|
@l1 = common global %struct.layout1 zeroinitializer, align 4, !dbg !18
|
||||||
@l2 = common global %struct.layout2 zeroinitializer, align 1
|
@l2 = common global %struct.layout2 zeroinitializer, align 1, !dbg !25
|
||||||
@l3 = common global %struct.layout3 zeroinitializer, align 4
|
@l3 = common global %struct.layout3 zeroinitializer, align 4, !dbg !35
|
||||||
|
|
||||||
!llvm.dbg.cu = !{!0}
|
!llvm.dbg.cu = !{!0}
|
||||||
!llvm.module.flags = !{!45, !46}
|
!llvm.module.flags = !{!45, !46}
|
||||||
@ -152,7 +152,7 @@ target triple = "x86_64-apple-darwin"
|
|||||||
!1 = !DIFile(filename: "/llvm/tools/clang/test/CodeGen/<stdin>", directory: "/llvm/_build.ninja.release")
|
!1 = !DIFile(filename: "/llvm/tools/clang/test/CodeGen/<stdin>", directory: "/llvm/_build.ninja.release")
|
||||||
!2 = !{}
|
!2 = !{}
|
||||||
!3 = !{!4, !18, !25, !35}
|
!3 = !{!4, !18, !25, !35}
|
||||||
!4 = !DIGlobalVariable(name: "l0", scope: !0, file: !5, line: 88, type: !6, isLocal: false, isDefinition: true, variable: %struct.layout0* @l0)
|
!4 = !DIGlobalVariable(name: "l0", scope: !0, file: !5, line: 88, type: !6, isLocal: false, isDefinition: true)
|
||||||
!5 = !DIFile(filename: "/llvm/tools/clang/test/CodeGen/debug-info-packed-struct.c", directory: "/llvm/_build.ninja.release")
|
!5 = !DIFile(filename: "/llvm/tools/clang/test/CodeGen/debug-info-packed-struct.c", directory: "/llvm/_build.ninja.release")
|
||||||
!6 = !DICompositeType(tag: DW_TAG_structure_type, name: "layout0", file: !5, line: 15, size: 192, align: 64, elements: !7)
|
!6 = !DICompositeType(tag: DW_TAG_structure_type, name: "layout0", file: !5, line: 15, size: 192, align: 64, elements: !7)
|
||||||
!7 = !{!8, !10, !17}
|
!7 = !{!8, !10, !17}
|
||||||
@ -166,14 +166,14 @@ target triple = "x86_64-apple-darwin"
|
|||||||
!15 = !DIDerivedType(tag: DW_TAG_member, name: "l", scope: !11, file: !5, line: 13, baseType: !16, size: 60, offset: 4)
|
!15 = !DIDerivedType(tag: DW_TAG_member, name: "l", scope: !11, file: !5, line: 13, baseType: !16, size: 60, offset: 4)
|
||||||
!16 = !DIBasicType(name: "long long int", size: 64, align: 64, encoding: DW_ATE_signed)
|
!16 = !DIBasicType(name: "long long int", size: 64, align: 64, encoding: DW_ATE_signed)
|
||||||
!17 = !DIDerivedType(tag: DW_TAG_member, name: "l0_ofs16", scope: !6, file: !5, line: 18, baseType: !14, size: 1, align: 32, offset: 128)
|
!17 = !DIDerivedType(tag: DW_TAG_member, name: "l0_ofs16", scope: !6, file: !5, line: 18, baseType: !14, size: 1, align: 32, offset: 128)
|
||||||
!18 = !DIGlobalVariable(name: "l1", scope: !0, file: !5, line: 89, type: !19, isLocal: false, isDefinition: true, variable: %struct.layout1* @l1)
|
!18 = !DIGlobalVariable(name: "l1", scope: !0, file: !5, line: 89, type: !19, isLocal: false, isDefinition: true)
|
||||||
!19 = !DICompositeType(tag: DW_TAG_structure_type, name: "layout1", file: !5, line: 34, size: 96, align: 32, elements: !20)
|
!19 = !DICompositeType(tag: DW_TAG_structure_type, name: "layout1", file: !5, line: 34, size: 96, align: 32, elements: !20)
|
||||||
!20 = !{!21, !22, !24}
|
!20 = !{!21, !22, !24}
|
||||||
!21 = !DIDerivedType(tag: DW_TAG_member, name: "l1_ofs0", scope: !19, file: !5, line: 35, baseType: !9, size: 8, align: 8)
|
!21 = !DIDerivedType(tag: DW_TAG_member, name: "l1_ofs0", scope: !19, file: !5, line: 35, baseType: !9, size: 8, align: 8)
|
||||||
!22 = !DIDerivedType(tag: DW_TAG_member, name: "l1_ofs1", scope: !19, file: !5, line: 36, baseType: !23, size: 64, align: 8, offset: 8)
|
!22 = !DIDerivedType(tag: DW_TAG_member, name: "l1_ofs1", scope: !19, file: !5, line: 36, baseType: !23, size: 64, align: 8, offset: 8)
|
||||||
!23 = !DICompositeType(tag: DW_TAG_structure_type, name: "size8_anon", file: !5, line: 30, size: 64, align: 8, elements: !2)
|
!23 = !DICompositeType(tag: DW_TAG_structure_type, name: "size8_anon", file: !5, line: 30, size: 64, align: 8, elements: !2)
|
||||||
!24 = !DIDerivedType(tag: DW_TAG_member, name: "l1_ofs9", scope: !19, file: !5, line: 37, baseType: !14, size: 1, align: 32, offset: 72)
|
!24 = !DIDerivedType(tag: DW_TAG_member, name: "l1_ofs9", scope: !19, file: !5, line: 37, baseType: !14, size: 1, align: 32, offset: 72)
|
||||||
!25 = !DIGlobalVariable(name: "l2", scope: !0, file: !5, line: 90, type: !26, isLocal: false, isDefinition: true, variable: %struct.layout2* @l2)
|
!25 = !DIGlobalVariable(name: "l2", scope: !0, file: !5, line: 90, type: !26, isLocal: false, isDefinition: true)
|
||||||
!26 = !DICompositeType(tag: DW_TAG_structure_type, name: "layout2", file: !5, line: 54, size: 80, align: 8, elements: !27)
|
!26 = !DICompositeType(tag: DW_TAG_structure_type, name: "layout2", file: !5, line: 54, size: 80, align: 8, elements: !27)
|
||||||
!27 = !{!28, !29, !34}
|
!27 = !{!28, !29, !34}
|
||||||
!28 = !DIDerivedType(tag: DW_TAG_member, name: "l2_ofs0", scope: !26, file: !5, line: 55, baseType: !9, size: 8, align: 8)
|
!28 = !DIDerivedType(tag: DW_TAG_member, name: "l2_ofs0", scope: !26, file: !5, line: 55, baseType: !9, size: 8, align: 8)
|
||||||
@ -183,7 +183,7 @@ target triple = "x86_64-apple-darwin"
|
|||||||
!32 = !DIDerivedType(tag: DW_TAG_member, name: "i", scope: !30, file: !5, line: 51, baseType: !14, size: 4, align: 32)
|
!32 = !DIDerivedType(tag: DW_TAG_member, name: "i", scope: !30, file: !5, line: 51, baseType: !14, size: 4, align: 32)
|
||||||
!33 = !DIDerivedType(tag: DW_TAG_member, name: "l", scope: !30, file: !5, line: 52, baseType: !16, size: 60, offset: 4)
|
!33 = !DIDerivedType(tag: DW_TAG_member, name: "l", scope: !30, file: !5, line: 52, baseType: !16, size: 60, offset: 4)
|
||||||
!34 = !DIDerivedType(tag: DW_TAG_member, name: "l2_ofs9", scope: !26, file: !5, line: 57, baseType: !14, size: 1, align: 32, offset: 72)
|
!34 = !DIDerivedType(tag: DW_TAG_member, name: "l2_ofs9", scope: !26, file: !5, line: 57, baseType: !14, size: 1, align: 32, offset: 72)
|
||||||
!35 = !DIGlobalVariable(name: "l3", scope: !0, file: !5, line: 91, type: !36, isLocal: false, isDefinition: true, variable: %struct.layout3* @l3)
|
!35 = !DIGlobalVariable(name: "l3", scope: !0, file: !5, line: 91, type: !36, isLocal: false, isDefinition: true)
|
||||||
!36 = !DICompositeType(tag: DW_TAG_structure_type, name: "layout3", file: !5, line: 76, size: 128, align: 32, elements: !37)
|
!36 = !DICompositeType(tag: DW_TAG_structure_type, name: "layout3", file: !5, line: 76, size: 128, align: 32, elements: !37)
|
||||||
!37 = !{!38, !39, !44}
|
!37 = !{!38, !39, !44}
|
||||||
!38 = !DIDerivedType(tag: DW_TAG_member, name: "l3_ofs0", scope: !36, file: !5, line: 77, baseType: !9, size: 8, align: 8)
|
!38 = !DIDerivedType(tag: DW_TAG_member, name: "l3_ofs0", scope: !36, file: !5, line: 77, baseType: !9, size: 8, align: 8)
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user