From 5420de3f15e01ad9dfb05b08e2600ccff10c5817 Mon Sep 17 00:00:00 2001 From: Peter Collingbourne Date: Tue, 13 Sep 2016 01:12:59 +0000 Subject: [PATCH] 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 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@281284 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/IR/DIBuilder.h | 14 +- include/llvm/IR/DebugInfoMetadata.h | 333 +++++++++--------- include/llvm/IR/GlobalVariable.h | 6 +- lib/AsmParser/LLParser.cpp | 4 +- lib/Bitcode/Reader/BitcodeReader.cpp | 37 +- lib/Bitcode/Writer/BitcodeWriter.cpp | 2 +- lib/CodeGen/AsmPrinter/CodeViewDebug.cpp | 19 +- lib/CodeGen/AsmPrinter/CodeViewDebug.h | 3 +- lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp | 79 ++--- lib/CodeGen/AsmPrinter/DwarfCompileUnit.h | 3 +- lib/CodeGen/AsmPrinter/DwarfDebug.cpp | 10 +- lib/CodeGen/AsmPrinter/DwarfExpression.cpp | 7 + lib/CodeGen/GlobalMerge.cpp | 6 + lib/IR/AsmWriter.cpp | 2 +- lib/IR/DIBuilder.cpp | 8 +- lib/IR/DebugInfoMetadata.cpp | 6 +- lib/IR/LLVMContextImpl.h | 12 +- lib/IR/Metadata.cpp | 27 ++ lib/IR/Verifier.cpp | 8 +- lib/Linker/IRMover.cpp | 8 +- lib/Transforms/IPO/StripSymbols.cpp | 17 +- test/Assembler/diglobalvariable.ll | 13 +- test/Bitcode/diglobalvariable-3.8.ll | 8 + test/Bitcode/diglobalvariable-3.8.ll.bc | Bin 0 -> 712 bytes test/Bitcode/dityperefs-3.8.ll | 26 +- .../ARM/2010-06-25-Thumb2ITInvalidIterator.ll | 4 +- .../CodeGen/ARM/2011-01-19-MergedGlobalDbg.ll | 24 +- .../CodeGen/ARM/2011-08-02-MergedGlobalDbg.ll | 12 +- test/CodeGen/ARM/coalesce-dbgvalue.ll | 16 +- test/CodeGen/NVPTX/generic-to-nvvm-ir.ll | 5 +- test/CodeGen/PowerPC/pr17168.ll | 4 +- test/CodeGen/PowerPC/pr24546.ll | 4 +- test/CodeGen/X86/fpstack-debuginstr-kill.ll | 8 +- .../X86/misched-code-difference-with-debug.ll | 4 +- test/DebugInfo/AArch64/big-endian.ll | 4 +- test/DebugInfo/AArch64/bitfields.ll | 4 +- test/DebugInfo/AArch64/frameindices.ll | 8 +- test/DebugInfo/ARM/big-endian-bitfield.ll | 4 +- test/DebugInfo/ARM/bitfield.ll | 4 +- .../multiple-constant-uses-drops-dbgloc.ll | 8 +- test/DebugInfo/ARM/tls.ll | 4 +- test/DebugInfo/COFF/anonymous-struct.ll | 4 +- test/DebugInfo/COFF/big-type.ll | 4 +- test/DebugInfo/COFF/bitfields.ll | 12 +- test/DebugInfo/COFF/enum.ll | 4 +- test/DebugInfo/COFF/global-dllimport.ll | 4 +- test/DebugInfo/COFF/globals-discarded.ll | 4 +- test/DebugInfo/COFF/globals.ll | 16 +- test/DebugInfo/COFF/inheritance.ll | 4 +- test/DebugInfo/COFF/inlining-files.ll | 4 +- test/DebugInfo/COFF/inlining-header.ll | 4 +- test/DebugInfo/COFF/inlining-levels.ll | 4 +- test/DebugInfo/COFF/register-variables.ll | 4 +- test/DebugInfo/COFF/scopes.ll | 4 +- test/DebugInfo/COFF/types-array-advanced.ll | 16 +- test/DebugInfo/COFF/types-nested-class.ll | 4 +- test/DebugInfo/COFF/types-ptr-to-member.ll | 40 +-- test/DebugInfo/COFF/udts.ll | 4 +- test/DebugInfo/COFF/virtual-method-kinds.ll | 4 +- test/DebugInfo/COFF/vtable-optzn-array.ll | 8 +- .../2009-11-06-NamelessGlobalVariable.ll | 4 +- .../Generic/2010-06-29-InlinedFnLocalVar.ll | 4 +- .../Generic/accel-table-hash-collisions.ll | 48 +-- .../Generic/cross-cu-linkonce-distinct.ll | 8 +- test/DebugInfo/Generic/cross-cu-linkonce.ll | 8 +- .../DebugInfo/Generic/dbg-at-specficiation.ll | 4 +- .../debuginfofinder-forward-declaration.ll | 4 +- test/DebugInfo/Generic/dwarf-public-names.ll | 12 +- test/DebugInfo/Generic/enum.ll | 4 +- test/DebugInfo/Generic/gvn.ll | 8 +- test/DebugInfo/Generic/member-pointers.ll | 8 +- test/DebugInfo/Generic/namespace.ll | 8 +- test/DebugInfo/Generic/recursive_inlining.ll | 4 +- .../Generic/template-recursive-void.ll | 4 +- test/DebugInfo/Generic/tu-member-pointer.ll | 4 +- test/DebugInfo/Generic/typedef.ll | 4 +- test/DebugInfo/MIR/X86/live-debug-values.mir | 4 +- test/DebugInfo/Mips/InlinedFnLocalVar.ll | 4 +- test/DebugInfo/PowerPC/tls-fission.ll | 4 +- test/DebugInfo/PowerPC/tls.ll | 4 +- .../X86/2011-09-26-GlobalVarContext.ll | 4 +- test/DebugInfo/X86/DIModuleContext.ll | 4 +- .../DebugInfo/X86/DW_AT_calling-convention.ll | 4 +- test/DebugInfo/X86/DW_AT_specification.ll | 4 +- test/DebugInfo/X86/DW_TAG_friend.ll | 8 +- test/DebugInfo/X86/InlinedFnLocalVar.ll | 4 +- test/DebugInfo/X86/PR26148.ll | 4 +- test/DebugInfo/X86/arange-and-stub.ll | 4 +- test/DebugInfo/X86/arange.ll | 4 +- test/DebugInfo/X86/bitfields-dwarf4.ll | 4 +- test/DebugInfo/X86/bitfields.ll | 4 +- test/DebugInfo/X86/c-type-units.ll | 4 +- test/DebugInfo/X86/concrete_out_of_line.ll | 2 +- test/DebugInfo/X86/cu-ranges-odr.ll | 4 +- test/DebugInfo/X86/data_member_location.ll | 4 +- test/DebugInfo/X86/dbg-subrange.ll | 4 +- .../X86/dbg-value-inlined-parameter.ll | 4 +- .../X86/dbg-value-regmask-clobber.ll | 4 +- test/DebugInfo/X86/debug-info-access.ll | 12 +- .../DebugInfo/X86/debug-info-packed-struct.ll | 16 +- .../DebugInfo/X86/debug-info-static-member.ll | 12 +- test/DebugInfo/X86/debug-loc-frame.ll | 16 +- test/DebugInfo/X86/debugger-tune.ll | 4 +- test/DebugInfo/X86/decl-derived-member.ll | 4 +- test/DebugInfo/X86/dllimport.ll | 4 +- .../X86/dwarf-aranges-no-dwarf-labels.ll | 4 +- test/DebugInfo/X86/dwarf-aranges.ll | 12 +- test/DebugInfo/X86/dwarf-linkage-names.ll | 4 +- test/DebugInfo/X86/dwarf-public-names.ll | 12 +- test/DebugInfo/X86/empty-array.ll | 4 +- test/DebugInfo/X86/enum-class.ll | 12 +- test/DebugInfo/X86/enum-fwd-decl.ll | 4 +- test/DebugInfo/X86/externaltyperef.ll | 4 +- test/DebugInfo/X86/fission-cu.ll | 4 +- test/DebugInfo/X86/generate-odr-hash.ll | 16 +- test/DebugInfo/X86/gnu-public-names.ll | 32 +- test/DebugInfo/X86/inline-member-function.ll | 4 +- test/DebugInfo/X86/inlined-indirect-value.ll | 8 +- test/DebugInfo/X86/isel-cse-line.ll | 8 +- test/DebugInfo/X86/linkage-name.ll | 4 +- test/DebugInfo/X86/live-debug-values.ll | 4 +- test/DebugInfo/X86/memberfnptr.ll | 4 +- test/DebugInfo/X86/misched-dbg-value.ll | 36 +- test/DebugInfo/X86/multiple-aranges.ll | 8 +- test/DebugInfo/X86/multiple-at-const-val.ll | 2 +- .../X86/nondefault-subrange-array.ll | 4 +- test/DebugInfo/X86/objc-fwd-decl.ll | 4 +- test/DebugInfo/X86/pointer-type-size.ll | 4 +- test/DebugInfo/X86/pr12831.ll | 2 +- test/DebugInfo/X86/ref_addr_relocation.ll | 8 +- test/DebugInfo/X86/stack-value-dwarf4.ll | 37 ++ test/DebugInfo/X86/stringpool.ll | 4 +- test/DebugInfo/X86/struct-loc.ll | 4 +- test/DebugInfo/X86/template.ll | 8 +- test/DebugInfo/X86/tls.ll | 8 +- .../X86/type_units_with_addresses.ll | 20 +- test/DebugInfo/X86/unattached-global.ll | 19 + test/DebugInfo/X86/union-template.ll | 4 +- test/DebugInfo/X86/vector.ll | 4 +- test/Linker/2011-08-04-Metadata.ll | 13 +- test/Linker/2011-08-04-Metadata2.ll | 4 +- test/Linker/odr.ll | 4 +- test/Linker/only-needed-debug-metadata.ll | 8 +- test/ThinLTO/X86/Inputs/crash_debuginfo.ll | 2 +- test/ThinLTO/X86/Inputs/drop-debug-info.ll | 4 +- test/ThinLTO/X86/crash_debuginfo.ll | 2 +- test/Transforms/GCOVProfiling/return-block.ll | 4 +- test/Transforms/GlobalMerge/debug-info.ll | 23 ++ test/Transforms/GlobalOpt/2009-03-05-dbg.ll | 4 +- test/Transforms/Inline/alloca-dbgdeclare.ll | 8 +- test/Transforms/LoopVectorize/dbg.value.ll | 12 +- .../SampleProfile/cov-zero-samples.ll | 4 +- .../SimplifyCFG/PR27615-simplify-cond-br.ll | 12 +- .../StripSymbols/2010-06-30-StripDebug.ll | 4 +- .../StripSymbols/strip-dead-debug-info.ll | 4 +- .../Hexagon/source-interleave-hexagon.ll | 4 +- .../X86/source-interleave-x86_64.ll | 4 +- unittests/IR/MetadataTest.cpp | 40 +-- unittests/IR/VerifierTest.cpp | 25 -- 159 files changed, 922 insertions(+), 796 deletions(-) create mode 100644 test/Bitcode/diglobalvariable-3.8.ll create mode 100644 test/Bitcode/diglobalvariable-3.8.ll.bc create mode 100644 test/DebugInfo/X86/stack-value-dwarf4.ll create mode 100644 test/DebugInfo/X86/unattached-global.ll create mode 100644 test/Transforms/GlobalMerge/debug-info.ll diff --git a/include/llvm/IR/DIBuilder.h b/include/llvm/IR/DIBuilder.h index c68f06eb479f5..babde4426b39b 100644 --- a/include/llvm/IR/DIBuilder.h +++ b/include/llvm/IR/DIBuilder.h @@ -454,20 +454,21 @@ namespace llvm { /// \param Ty Variable Type. /// \param isLocalToUnit Boolean flag indicate whether this variable is /// 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. DIGlobalVariable *createGlobalVariable(DIScope *Context, StringRef Name, StringRef LinkageName, DIFile *File, unsigned LineNo, DIType *Ty, bool isLocalToUnit, - llvm::Constant *Val, + DIExpression *Expr = nullptr, MDNode *Decl = nullptr); /// Identical to createGlobalVariable /// except that the resulting DbgNode is temporary and meant to be RAUWed. DIGlobalVariable *createTempGlobalVariableFwdDecl( 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); /// Create a new descriptor for an auto variable. This is a local variable @@ -514,6 +515,13 @@ namespace llvm { DIExpression *createBitPieceExpression(unsigned OffsetInBits, 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. /// See comments in DISubprogram* for descriptions of these fields. /// \param Scope Function scope. diff --git a/include/llvm/IR/DebugInfoMetadata.h b/include/llvm/IR/DebugInfoMetadata.h index 165af62db6d69..84763f48dfc11 100644 --- a/include/llvm/IR/DebugInfoMetadata.h +++ b/include/llvm/IR/DebugInfoMetadata.h @@ -1862,6 +1862,159 @@ class DIVariable : public DINode { } }; +/// \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 Elements; + + DIExpression(LLVMContext &C, StorageType Storage, ArrayRef Elements) + : MDNode(C, DIExpressionKind, Storage, None), + Elements(Elements.begin(), Elements.end()) {} + ~DIExpression() = default; + + static DIExpression *getImpl(LLVMContext &Context, + ArrayRef Elements, StorageType Storage, + bool ShouldCreate = true); + + TempDIExpression cloneImpl() const { + return getTemporary(getContext(), getElements()); + } + +public: + DEFINE_MDNODE_GET(DIExpression, (ArrayRef Elements), (Elements)) + + TempDIExpression clone() const { return cloneImpl(); } + + ArrayRef 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::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 { + 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. /// /// TODO: Remove DisplayName. It's always equal to Name. @@ -1882,26 +2035,25 @@ class DIGlobalVariable : public DIVariable { static DIGlobalVariable * getImpl(LLVMContext &Context, DIScope *Scope, StringRef Name, StringRef LinkageName, DIFile *File, unsigned Line, DITypeRef Type, - bool IsLocalToUnit, bool IsDefinition, Constant *Variable, + bool IsLocalToUnit, bool IsDefinition, DIExpression *Expr, DIDerivedType *StaticDataMemberDeclaration, StorageType Storage, bool ShouldCreate = true) { return getImpl(Context, Scope, getCanonicalMDString(Context, Name), getCanonicalMDString(Context, LinkageName), File, Line, Type, - IsLocalToUnit, IsDefinition, - Variable ? ConstantAsMetadata::get(Variable) : nullptr, + IsLocalToUnit, IsDefinition, Expr, StaticDataMemberDeclaration, Storage, ShouldCreate); } static DIGlobalVariable * getImpl(LLVMContext &Context, Metadata *Scope, MDString *Name, MDString *LinkageName, Metadata *File, unsigned Line, Metadata *Type, - bool IsLocalToUnit, bool IsDefinition, Metadata *Variable, + bool IsLocalToUnit, bool IsDefinition, Metadata *Expr, Metadata *StaticDataMemberDeclaration, StorageType Storage, bool ShouldCreate = true); TempDIGlobalVariable cloneImpl() const { return getTemporary(getContext(), getScope(), getName(), getLinkageName(), getFile(), getLine(), getType(), isLocalToUnit(), - isDefinition(), getVariable(), + isDefinition(), getExpr(), getStaticDataMemberDeclaration()); } @@ -1909,17 +2061,17 @@ class DIGlobalVariable : public DIVariable { DEFINE_MDNODE_GET(DIGlobalVariable, (DIScope * Scope, StringRef Name, StringRef LinkageName, DIFile *File, unsigned Line, DITypeRef Type, - bool IsLocalToUnit, bool IsDefinition, Constant *Variable, + bool IsLocalToUnit, bool IsDefinition, DIExpression *Expr, DIDerivedType *StaticDataMemberDeclaration), (Scope, Name, LinkageName, File, Line, Type, IsLocalToUnit, - IsDefinition, Variable, StaticDataMemberDeclaration)) + IsDefinition, Expr, StaticDataMemberDeclaration)) DEFINE_MDNODE_GET(DIGlobalVariable, (Metadata * Scope, MDString *Name, MDString *LinkageName, Metadata *File, unsigned Line, Metadata *Type, - bool IsLocalToUnit, bool IsDefinition, Metadata *Variable, + bool IsLocalToUnit, bool IsDefinition, Metadata *Expr, Metadata *StaticDataMemberDeclaration), (Scope, Name, LinkageName, File, Line, Type, IsLocalToUnit, - IsDefinition, Variable, StaticDataMemberDeclaration)) + IsDefinition, Expr, StaticDataMemberDeclaration)) TempDIGlobalVariable clone() const { return cloneImpl(); } @@ -1927,17 +2079,18 @@ class DIGlobalVariable : public DIVariable { bool isDefinition() const { return IsDefinition; } StringRef getDisplayName() const { return getStringOperand(4); } StringRef getLinkageName() const { return getStringOperand(5); } - Constant *getVariable() const { - if (auto *C = cast_or_null(getRawVariable())) - return dyn_cast(C->getValue()); - return nullptr; + DIExpression *getExpr() const { + return cast_or_null(getRawExpr()); + } + void replaceExpr(DIExpression *E) { + replaceOperandWith(6, E); } DIDerivedType *getStaticDataMemberDeclaration() const { return cast_or_null(getRawStaticDataMemberDeclaration()); } MDString *getRawLinkageName() const { return getOperandAs(5); } - Metadata *getRawVariable() const { return getOperand(6); } + Metadata *getRawExpr() const { return getOperand(6); } Metadata *getRawStaticDataMemberDeclaration() const { return getOperand(7); } static bool classof(const Metadata *MD) { @@ -2024,158 +2177,6 @@ class DILocalVariable : public DIVariable { } }; -/// \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 Elements; - - DIExpression(LLVMContext &C, StorageType Storage, ArrayRef Elements) - : MDNode(C, DIExpressionKind, Storage, None), - Elements(Elements.begin(), Elements.end()) {} - ~DIExpression() = default; - - static DIExpression *getImpl(LLVMContext &Context, - ArrayRef Elements, StorageType Storage, - bool ShouldCreate = true); - - TempDIExpression cloneImpl() const { - return getTemporary(getContext(), getElements()); - } - -public: - DEFINE_MDNODE_GET(DIExpression, (ArrayRef Elements), (Elements)) - - TempDIExpression clone() const { return cloneImpl(); } - - ArrayRef 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::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 { - 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 { friend class LLVMContextImpl; friend class MDNode; diff --git a/include/llvm/IR/GlobalVariable.h b/include/llvm/IR/GlobalVariable.h index ebeb635468d06..d49660b9d31ac 100644 --- a/include/llvm/IR/GlobalVariable.h +++ b/include/llvm/IR/GlobalVariable.h @@ -27,8 +27,9 @@ namespace llvm { -class Module; class Constant; +class DIGlobalVariable; +class Module; template class SymbolTableListTraits; class GlobalVariable : public GlobalObject, public ilist_node { @@ -165,6 +166,9 @@ class GlobalVariable : public GlobalObject, public ilist_node { /// drops not only the reference to the initializer but also to any metadata. void dropAllReferences(); + void addDebugInfo(DIGlobalVariable *GV); + void getDebugInfo(SmallVectorImpl &GVs) const; + // Methods for support type inquiry through isa, cast, and dyn_cast: static inline bool classof(const Value *V) { return V->getValueID() == Value::GlobalVariableVal; diff --git a/lib/AsmParser/LLParser.cpp b/lib/AsmParser/LLParser.cpp index 5120b949e842f..15327a1d0655d 100644 --- a/lib/AsmParser/LLParser.cpp +++ b/lib/AsmParser/LLParser.cpp @@ -4201,7 +4201,7 @@ bool LLParser::ParseDIGlobalVariable(MDNode *&Result, bool IsDistinct) { OPTIONAL(type, MDField, ); \ OPTIONAL(isLocal, MDBoolField, ); \ OPTIONAL(isDefinition, MDBoolField, (true)); \ - OPTIONAL(variable, MDConstant, ); \ + OPTIONAL(expr, MDField, ); \ OPTIONAL(declaration, MDField, ); PARSE_MD_FIELDS(); #undef VISIT_MD_FIELDS @@ -4209,7 +4209,7 @@ bool LLParser::ParseDIGlobalVariable(MDNode *&Result, bool IsDistinct) { Result = GET_OR_DISTINCT(DIGlobalVariable, (Context, scope.Val, name.Val, linkageName.Val, file.Val, line.Val, type.Val, isLocal.Val, - isDefinition.Val, variable.Val, declaration.Val)); + isDefinition.Val, expr.Val, declaration.Val)); return false; } diff --git a/lib/Bitcode/Reader/BitcodeReader.cpp b/lib/Bitcode/Reader/BitcodeReader.cpp index db82766aa6c9b..2504ce78cc651 100644 --- a/lib/Bitcode/Reader/BitcodeReader.cpp +++ b/lib/Bitcode/Reader/BitcodeReader.cpp @@ -2679,14 +2679,35 @@ std::error_code BitcodeReader::parseMetadata(bool ModuleLevel) { return error("Invalid record"); IsDistinct = Record[0]; - MetadataList.assignValue( - 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], - getMDOrNull(Record[9]), getMDOrNull(Record[10]))), - NextMetadataNo++); + + // Upgrade old metadata, which stored a global variable reference or a + // ConstantInt here. + Metadata *Expr = getMDOrNull(Record[9]); + GlobalVariable *Attach = nullptr; + if (auto *CMD = dyn_cast_or_null(Expr)) { + if (auto *GV = dyn_cast(CMD->getValue())) { + Attach = GV; + Expr = nullptr; + } else if (auto *CI = dyn_cast(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; } case bitc::METADATA_LOCAL_VAR: { diff --git a/lib/Bitcode/Writer/BitcodeWriter.cpp b/lib/Bitcode/Writer/BitcodeWriter.cpp index 391adeb47f091..da6a89103187c 100644 --- a/lib/Bitcode/Writer/BitcodeWriter.cpp +++ b/lib/Bitcode/Writer/BitcodeWriter.cpp @@ -1710,7 +1710,7 @@ void ModuleBitcodeWriter::writeDIGlobalVariable( Record.push_back(VE.getMetadataOrNullID(N->getType())); Record.push_back(N->isLocalToUnit()); 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())); Stream.EmitRecord(bitc::METADATA_GLOBAL_VAR, Record, Abbrev); diff --git a/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp b/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp index 017fc208870ee..91a480ec0431d 100644 --- a/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp +++ b/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp @@ -2001,6 +2001,14 @@ void CodeViewDebug::emitDebugInfoForUDTs( } void CodeViewDebug::emitDebugInfoForGlobals() { + DenseMap GlobalMap; + for (const GlobalVariable &GV : MMI->getModule()->globals()) { + SmallVector MDs; + GV.getMetadata(LLVMContext::MD_dbg, MDs); + for (MDNode *MD : MDs) + GlobalMap[cast(MD)] = &GV; + } + NamedMDNode *CUs = MMI->getModule()->getNamedMetadata("llvm.dbg.cu"); for (const MDNode *Node : CUs->operands()) { const auto *CU = cast(Node); @@ -2011,15 +2019,14 @@ void CodeViewDebug::emitDebugInfoForGlobals() { switchToDebugSectionForSymbol(nullptr); MCSymbol *EndLabel = nullptr; for (const DIGlobalVariable *G : CU->getGlobalVariables()) { - if (const auto *GV = dyn_cast_or_null(G->getVariable())) { + if (const auto *GV = GlobalMap.lookup(G)) if (!GV->hasComdat() && !GV->isDeclarationForLinker()) { if (!EndLabel) { OS.AddComment("Symbol subsection for globals"); EndLabel = beginCVSubsection(ModuleSubstreamKind::Symbols); } - emitDebugInfoForGlobal(G, Asm->getSymbol(GV)); + emitDebugInfoForGlobal(G, GV, Asm->getSymbol(GV)); } - } } if (EndLabel) endCVSubsection(EndLabel); @@ -2027,14 +2034,14 @@ void CodeViewDebug::emitDebugInfoForGlobals() { // Second, emit each global that is in a comdat into its own .debug$S // section along with its own symbol substream. for (const DIGlobalVariable *G : CU->getGlobalVariables()) { - if (const auto *GV = dyn_cast_or_null(G->getVariable())) { + if (const auto *GV = GlobalMap.lookup(G)) { if (GV->hasComdat()) { MCSymbol *GVSym = Asm->getSymbol(GV); OS.AddComment("Symbol subsection for " + Twine(GlobalValue::getRealLinkageName(GV->getName()))); switchToDebugSectionForSymbol(GVSym); EndLabel = beginCVSubsection(ModuleSubstreamKind::Symbols); - emitDebugInfoForGlobal(G, GVSym); + emitDebugInfoForGlobal(G, GV, GVSym); endCVSubsection(EndLabel); } } @@ -2055,6 +2062,7 @@ void CodeViewDebug::emitDebugInfoForRetainedTypes() { } void CodeViewDebug::emitDebugInfoForGlobal(const DIGlobalVariable *DIGV, + const GlobalVariable *GV, MCSymbol *GVSym) { // DataSym record, see SymbolRecord.h for more info. // FIXME: Thread local data, etc @@ -2063,7 +2071,6 @@ void CodeViewDebug::emitDebugInfoForGlobal(const DIGlobalVariable *DIGV, OS.AddComment("Record length"); OS.emitAbsoluteSymbolDiff(DataEnd, DataBegin, 2); OS.EmitLabel(DataBegin); - const auto *GV = cast(DIGV->getVariable()); if (DIGV->isLocalToUnit()) { if (GV->isThreadLocal()) { OS.AddComment("Record kind: S_LTHREAD32"); diff --git a/lib/CodeGen/AsmPrinter/CodeViewDebug.h b/lib/CodeGen/AsmPrinter/CodeViewDebug.h index 729012bbd0fe8..0149af5e84f94 100644 --- a/lib/CodeGen/AsmPrinter/CodeViewDebug.h +++ b/lib/CodeGen/AsmPrinter/CodeViewDebug.h @@ -202,7 +202,8 @@ class LLVM_LIBRARY_VISIBILITY CodeViewDebug : public DebugHandlerBase { void emitDebugInfoForUDTs( ArrayRef> 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. /// Returns an end label for use with endCVSubsection when the subsection is diff --git a/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp b/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp index 7822814c7a0f4..f9030d118e5fa 100644 --- a/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp +++ b/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp @@ -73,36 +73,9 @@ unsigned DwarfCompileUnit::getOrCreateSourceID(StringRef FileName, 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(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(Ptr); - if (!GV || !isa(GV->getValueType())) - return nullptr; - - // Second operand is zero. - const ConstantInt *CI = dyn_cast_or_null(CE->getOperand(1)); - if (!CI || !CI->isZero()) - return nullptr; - - // Third operand is offset. - if (!isa(CE->getOperand(2))) - return nullptr; - - return CE; -} - /// getOrCreateGlobalVariableDIE - get or create global variable DIE. DIE *DwarfCompileUnit::getOrCreateGlobalVariableDIE( - const DIGlobalVariable *GV) { + const DIGlobalVariable *GV, const GlobalVariable *Global) { // Check for pre-existence. if (DIE *Die = getDIE(GV)) return Die; @@ -147,12 +120,22 @@ DIE *DwarfCompileUnit::getOrCreateGlobalVariableDIE( // Add location. bool addToAccelTable = false; - if (auto *Global = dyn_cast_or_null(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 // 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; - DIELoc *Loc = new (DIEValueAllocator) DIELoc; const MCSymbol *Sym = Asm->getSymbol(Global); if (Global->isThreadLocal()) { if (Asm->TM.Options.EmulatedTLS) { @@ -187,30 +170,16 @@ DIE *DwarfCompileUnit::getOrCreateGlobalVariableDIE( addOpAddress(*Loc, Sym); } - addBlock(*VariableDIE, dwarf::DW_AT_location, Loc); - if (DD->useAllLinkageNames()) - addLinkageName(*VariableDIE, GV->getLinkageName()); - } - } else if (const ConstantInt *CI = - dyn_cast_or_null(GV->getVariable())) { - addConstantValue(*VariableDIE, CI, GTy); - } else if (const ConstantExpr *CE = getMergedGlobalExpr(GV->getVariable())) { - auto *Ptr = cast(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 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); + if (Expr) { + DIEDwarfExpression DwarfExpr(*Asm, *this, *Loc); + DwarfExpr.AddExpression(Expr->expr_op_begin(), Expr->expr_op_end()); + } } + + addBlock(*VariableDIE, dwarf::DW_AT_location, Loc); + + if (DD->useAllLinkageNames()) + addLinkageName(*VariableDIE, GV->getLinkageName()); } if (addToAccelTable) { @@ -674,7 +643,7 @@ DIE *DwarfCompileUnit::constructImportedEntityDIE( else if (auto *T = dyn_cast(Entity)) EntityDie = getOrCreateTypeDIE(T); else if (auto *GV = dyn_cast(Entity)) - EntityDie = getOrCreateGlobalVariableDIE(GV); + EntityDie = getOrCreateGlobalVariableDIE(GV, nullptr); else EntityDie = getDIE(Entity); assert(EntityDie); diff --git a/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h b/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h index 90f74a3686ea3..766da4a3f7b18 100644 --- a/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h +++ b/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h @@ -97,7 +97,8 @@ class DwarfCompileUnit : public DwarfUnit { void applyStmtList(DIE &D); /// 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 /// either DW_FORM_addr or DW_FORM_GNU_addr_index. diff --git a/lib/CodeGen/AsmPrinter/DwarfDebug.cpp b/lib/CodeGen/AsmPrinter/DwarfDebug.cpp index 307782245a683..d9c7c2bea9eea 100644 --- a/lib/CodeGen/AsmPrinter/DwarfDebug.cpp +++ b/lib/CodeGen/AsmPrinter/DwarfDebug.cpp @@ -477,12 +477,20 @@ void DwarfDebug::beginModule() { MMI->setDebugInfoAvailability(NumDebugCUs > 0); SingleCU = NumDebugCUs == 1; + DenseMap GVMap; + for (const GlobalVariable &Global : M->globals()) { + SmallVector GVs; + Global.getDebugInfo(GVs); + for (auto &GV : GVs) + GVMap[GV] = &Global; + } + for (DICompileUnit *CUNode : M->debug_compile_units()) { DwarfCompileUnit &CU = constructDwarfCompileUnit(CUNode); for (auto *IE : CUNode->getImportedEntities()) CU.addImportedEntity(IE); for (auto *GV : CUNode->getGlobalVariables()) - CU.getOrCreateGlobalVariableDIE(GV); + CU.getOrCreateGlobalVariableDIE(GV, GVMap.lookup(GV)); for (auto *Ty : CUNode->getEnumTypes()) { // The enum types array by design contains pointers to // MDNodes rather than DIRefs. Unique them here. diff --git a/lib/CodeGen/AsmPrinter/DwarfExpression.cpp b/lib/CodeGen/AsmPrinter/DwarfExpression.cpp index 7dbc6cb399517..d3e63e3b34feb 100644 --- a/lib/CodeGen/AsmPrinter/DwarfExpression.cpp +++ b/lib/CodeGen/AsmPrinter/DwarfExpression.cpp @@ -278,6 +278,13 @@ void DwarfExpression::AddExpression(DIExpression::expr_op_iterator I, case dwarf::DW_OP_deref: EmitOp(dwarf::DW_OP_deref); 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: llvm_unreachable("unhandled opcode found in expression"); } diff --git a/lib/CodeGen/GlobalMerge.cpp b/lib/CodeGen/GlobalMerge.cpp index 8c760b724d13c..de39e96a52d31 100644 --- a/lib/CodeGen/GlobalMerge.cpp +++ b/lib/CodeGen/GlobalMerge.cpp @@ -451,10 +451,16 @@ bool GlobalMerge::doMerge(const SmallVectorImpl &Globals, M, MergedTy, isConst, GlobalValue::PrivateLinkage, MergedInit, "_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) { GlobalValue::LinkageTypes Linkage = Globals[k]->getLinkage(); 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] = { ConstantInt::get(Int32Ty, 0), ConstantInt::get(Int32Ty, idx), diff --git a/lib/IR/AsmWriter.cpp b/lib/IR/AsmWriter.cpp index bcb5f198853dd..0734a3772e323 100644 --- a/lib/IR/AsmWriter.cpp +++ b/lib/IR/AsmWriter.cpp @@ -1816,7 +1816,7 @@ static void writeDIGlobalVariable(raw_ostream &Out, const DIGlobalVariable *N, Printer.printMetadata("type", N->getRawType()); Printer.printBool("isLocal", N->isLocalToUnit()); Printer.printBool("isDefinition", N->isDefinition()); - Printer.printMetadata("variable", N->getRawVariable()); + Printer.printMetadata("expr", N->getExpr()); Printer.printMetadata("declaration", N->getRawStaticDataMemberDeclaration()); Out << ")"; } diff --git a/lib/IR/DIBuilder.cpp b/lib/IR/DIBuilder.cpp index 21cedeee78d93..1adf9288e2567 100644 --- a/lib/IR/DIBuilder.cpp +++ b/lib/IR/DIBuilder.cpp @@ -535,13 +535,13 @@ static void checkGlobalVariableScope(DIScope *Context) { DIGlobalVariable *DIBuilder::createGlobalVariable( 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) { checkGlobalVariableScope(Context); auto *N = DIGlobalVariable::getDistinct( VMContext, cast_or_null(Context), Name, LinkageName, F, - LineNumber, Ty, isLocalToUnit, true, Val, + LineNumber, Ty, isLocalToUnit, true, Expr, cast_or_null(Decl)); AllGVs.push_back(N); return N; @@ -549,13 +549,13 @@ DIGlobalVariable *DIBuilder::createGlobalVariable( DIGlobalVariable *DIBuilder::createTempGlobalVariableFwdDecl( 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) { checkGlobalVariableScope(Context); return DIGlobalVariable::getTemporary( VMContext, cast_or_null(Context), Name, LinkageName, F, - LineNumber, Ty, isLocalToUnit, false, Val, + LineNumber, Ty, isLocalToUnit, false, Expr, cast_or_null(Decl)) .release(); } diff --git a/lib/IR/DebugInfoMetadata.cpp b/lib/IR/DebugInfoMetadata.cpp index 208fa9bf9df51..74f8ce84db09e 100644 --- a/lib/IR/DebugInfoMetadata.cpp +++ b/lib/IR/DebugInfoMetadata.cpp @@ -551,6 +551,7 @@ unsigned DIExpression::ExprOperand::getSize() const { switch (getOp()) { case dwarf::DW_OP_bit_piece: return 3; + case dwarf::DW_OP_constu: case dwarf::DW_OP_plus: case dwarf::DW_OP_minus: return 2; @@ -570,8 +571,11 @@ bool DIExpression::isValid() const { default: return false; 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(); + case dwarf::DW_OP_constu: case dwarf::DW_OP_plus: case dwarf::DW_OP_minus: case dwarf::DW_OP_deref: diff --git a/lib/IR/LLVMContextImpl.h b/lib/IR/LLVMContextImpl.h index 1d0b1b1524ae5..40935d9331e09 100644 --- a/lib/IR/LLVMContextImpl.h +++ b/lib/IR/LLVMContextImpl.h @@ -758,23 +758,23 @@ template <> struct MDNodeKeyImpl { Metadata *Type; bool IsLocalToUnit; bool IsDefinition; - Metadata *Variable; + Metadata *Expr; Metadata *StaticDataMemberDeclaration; MDNodeKeyImpl(Metadata *Scope, MDString *Name, MDString *LinkageName, Metadata *File, unsigned Line, Metadata *Type, - bool IsLocalToUnit, bool IsDefinition, Metadata *Variable, + bool IsLocalToUnit, bool IsDefinition, Metadata *Expr, Metadata *StaticDataMemberDeclaration) : Scope(Scope), Name(Name), LinkageName(LinkageName), File(File), Line(Line), Type(Type), IsLocalToUnit(IsLocalToUnit), - IsDefinition(IsDefinition), Variable(Variable), + IsDefinition(IsDefinition), Expr(Expr), StaticDataMemberDeclaration(StaticDataMemberDeclaration) {} MDNodeKeyImpl(const DIGlobalVariable *N) : Scope(N->getRawScope()), Name(N->getRawName()), LinkageName(N->getRawLinkageName()), File(N->getRawFile()), Line(N->getLine()), Type(N->getRawType()), IsLocalToUnit(N->isLocalToUnit()), IsDefinition(N->isDefinition()), - Variable(N->getRawVariable()), + Expr(N->getRawExpr()), StaticDataMemberDeclaration(N->getRawStaticDataMemberDeclaration()) {} bool isKeyOf(const DIGlobalVariable *RHS) const { @@ -783,13 +783,13 @@ template <> struct MDNodeKeyImpl { File == RHS->getRawFile() && Line == RHS->getLine() && Type == RHS->getRawType() && IsLocalToUnit == RHS->isLocalToUnit() && IsDefinition == RHS->isDefinition() && - Variable == RHS->getRawVariable() && + Expr == RHS->getRawExpr() && StaticDataMemberDeclaration == RHS->getRawStaticDataMemberDeclaration(); } unsigned getHashValue() const { return hash_combine(Scope, Name, LinkageName, File, Line, Type, - IsLocalToUnit, IsDefinition, Variable, + IsLocalToUnit, IsDefinition, Expr, StaticDataMemberDeclaration); } }; diff --git a/lib/IR/Metadata.cpp b/lib/IR/Metadata.cpp index ad95bff9e83d1..223326b715f24 100644 --- a/lib/IR/Metadata.cpp +++ b/lib/IR/Metadata.cpp @@ -1424,6 +1424,21 @@ void GlobalObject::copyMetadata(const GlobalObject *Other, unsigned Offset) { *MDNode::get(getContext(), {NewOffsetMD, TypeId})); 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(MD.second); + DIExpression *E = GV->getExpr(); + ArrayRef OrigElements; + if (E) + OrigElements = E->getElements(); + std::vector 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); } } @@ -1444,3 +1459,15 @@ void Function::setSubprogram(DISubprogram *SP) { DISubprogram *Function::getSubprogram() const { return cast_or_null(getMetadata(LLVMContext::MD_dbg)); } + +void GlobalVariable::addDebugInfo(DIGlobalVariable *GV) { + addMetadata(LLVMContext::MD_dbg, *GV); +} + +void GlobalVariable::getDebugInfo( + SmallVectorImpl &GVs) const { + SmallVector MDs; + getMetadata(LLVMContext::MD_dbg, MDs); + for (MDNode *MD : MDs) + GVs.push_back(cast(MD)); +} diff --git a/lib/IR/Verifier.cpp b/lib/IR/Verifier.cpp index ba7db85094ed6..32ead4f54ad0e 100644 --- a/lib/IR/Verifier.cpp +++ b/lib/IR/Verifier.cpp @@ -1112,12 +1112,8 @@ void Verifier::visitDIGlobalVariable(const DIGlobalVariable &N) { AssertDI(N.getTag() == dwarf::DW_TAG_variable, "invalid tag", &N); AssertDI(!N.getName().empty(), "missing global variable name", &N); - if (auto *V = N.getRawVariable()) { - AssertDI(isa(V) && - !isa(cast(V)->getValue()), - "invalid global variable ref", &N, V); - visitConstantExprsRecursively(cast(V)->getValue()); - } + if (auto *V = N.getRawExpr()) + AssertDI(isa(V), "invalid expression location", &N, V); if (auto *Member = N.getRawStaticDataMemberDeclaration()) { AssertDI(isa(Member), "invalid static data member declaration", &N, Member); diff --git a/lib/Linker/IRMover.cpp b/lib/Linker/IRMover.cpp index c02abd7e3aca6..5a00aae7e8a29 100644 --- a/lib/Linker/IRMover.cpp +++ b/lib/Linker/IRMover.cpp @@ -465,7 +465,7 @@ class IRLinker { Error linkModuleFlagsMetadata(); - void linkGlobalInit(GlobalVariable &Dst, GlobalVariable &Src); + void linkGlobalVariable(GlobalVariable &Dst, GlobalVariable &Src); Error linkFunctionBody(Function &Dst, Function &Src); void linkAliasBody(GlobalAlias &Dst, GlobalAlias &Src); Error linkGlobalValueBody(GlobalValue &Dst, GlobalValue &Src); @@ -942,7 +942,9 @@ Expected IRLinker::linkGlobalValueProto(GlobalValue *SGV, /// Update the initializers in the Dest module now that all globals that may be /// 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. Mapper.scheduleMapGlobalInitializer(Dst, *Src.getInitializer()); } @@ -985,7 +987,7 @@ Error IRLinker::linkGlobalValueBody(GlobalValue &Dst, GlobalValue &Src) { if (auto *F = dyn_cast(&Src)) return linkFunctionBody(cast(Dst), *F); if (auto *GVar = dyn_cast(&Src)) { - linkGlobalInit(cast(Dst), *GVar); + linkGlobalVariable(cast(Dst), *GVar); return Error::success(); } linkAliasBody(cast(Dst), cast(Src)); diff --git a/lib/Transforms/IPO/StripSymbols.cpp b/lib/Transforms/IPO/StripSymbols.cpp index fd250366cef24..51c2103e0e5e1 100644 --- a/lib/Transforms/IPO/StripSymbols.cpp +++ b/lib/Transforms/IPO/StripSymbols.cpp @@ -312,13 +312,14 @@ bool StripDeadDebugInfo::runOnModule(Module &M) { // replace the current list of potentially dead global variables/functions // with the live list. SmallVector LiveGlobalVariables; - SmallVector LiveSubprograms; DenseSet VisitedSet; - std::set LiveSPs; - for (Function &F : M) { - if (DISubprogram *SP = F.getSubprogram()) - LiveSPs.insert(SP); + std::set LiveGVs; + for (GlobalVariable &GV : M.globals()) { + SmallVector DIs; + GV.getDebugInfo(DIs); + for (DIGlobalVariable *DI : DIs) + LiveGVs.insert(DI); } for (DICompileUnit *DIC : F.compile_units()) { @@ -329,9 +330,8 @@ bool StripDeadDebugInfo::runOnModule(Module &M) { if (!VisitedSet.insert(DIG).second) continue; - // If the global variable referenced by DIG is not null, the global - // variable is live. - if (DIG->getVariable()) + // If a global variable references DIG, the global variable is live. + if (LiveGVs.count(DIG)) LiveGlobalVariables.push_back(DIG); else GlobalVariableChange = true; @@ -345,7 +345,6 @@ bool StripDeadDebugInfo::runOnModule(Module &M) { } // Reset lists for the next iteration. - LiveSubprograms.clear(); LiveGlobalVariables.clear(); } diff --git a/test/Assembler/diglobalvariable.ll b/test/Assembler/diglobalvariable.ll index 0d027d310f6d8..afaa5f84960d2 100644 --- a/test/Assembler/diglobalvariable.ll +++ b/test/Assembler/diglobalvariable.ll @@ -3,7 +3,7 @@ @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} !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) !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, 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) -!6 = !DIGlobalVariable(name: "foo", scope: !0) +; CHECK: !6 = !DIGlobalVariable(name: "foo", scope: !0, isLocal: false, isDefinition: true, expr: !7) +; 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) !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) diff --git a/test/Bitcode/diglobalvariable-3.8.ll b/test/Bitcode/diglobalvariable-3.8.ll new file mode 100644 index 0000000000000..55b3f656c5744 --- /dev/null +++ b/test/Bitcode/diglobalvariable-3.8.ll @@ -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) diff --git a/test/Bitcode/diglobalvariable-3.8.ll.bc b/test/Bitcode/diglobalvariable-3.8.ll.bc new file mode 100644 index 0000000000000000000000000000000000000000..bfecedd75d9e286f083d24e05f643c18c9ea743e GIT binary patch literal 712 zcmZ>AK5)-egn@yTfq@~3$3Vp=a^JJJ-|cimdj(ie0L2w~7#LOn<+z&^7?^;xFc7mh zDo=Dg!Q#m#U}QOov4uyKl|xdFr8}vC!gdR>c_hT&1t3ZCJlmPkzNGrLYm=MV3!pI0@Cjzl>3&V|VEDk^x z0}IoFi3eD=7I0^4E6*0=*y_vxG(11VBfdBCaz7GL>#sWuV?#qv=_~2 zubk1S^X>!Ry9az<5AeM)U`{%*Q0B=(nKNMWPNK{yMVTXwvZoT+u1#>ZJmG9P15EBX zY%#^zqJ!Cb%3*z=rGJ{NuP|G0ILvcAv%Mgqy{MqMB!j&op}j<+y<|bVAc&>!qo5d|}xZGq0&;B0x}aMLrHV+(m-ID&%tnWF3q NMcI1?WkK=A003Sk@{9lg literal 0 HcmV?d00001 diff --git a/test/Bitcode/dityperefs-3.8.ll b/test/Bitcode/dityperefs-3.8.ll index 6c953f28aba71..2bbe1a81e68e4 100644 --- a/test/Bitcode/dityperefs-3.8.ll +++ b/test/Bitcode/dityperefs-3.8.ll @@ -4,20 +4,22 @@ ; Establish a stable order. !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: !2 = !DICompositeType(tag: DW_TAG_structure_type, name: "T2", scope: !1{{.*}}, baseType: !1, vtableHolder: !1, identifier: "T2") -; CHECK-NEXT: !3 = !DIDerivedType(tag: DW_TAG_member, name: "M1", scope: !1{{.*}}, baseType: !2) -; CHECK-NEXT: !4 = !DISubroutineType(types: !5) -; CHECK-NEXT: !5 = !{!1, !2} -; CHECK-NEXT: !6 = !DISubprogram(scope: !1,{{.*}} containingType: !1{{[,)]}} -; CHECK-NEXT: !7 = !DILocalVariable(name: "V1", scope: !6, type: !2) -; CHECK-NEXT: !8 = !DIObjCProperty(name: "P1", type: !1) -; CHECK-NEXT: !9 = !DITemplateTypeParameter(type: !1) -; CHECK-NEXT: !10 = !DIGlobalVariable(name: "G",{{.*}} type: !1,{{.*}} variable: i32* @G1) +; CHECK-NEXT: !2 = !DIFile(filename: "path/to/file", directory: "/path/to/dir") +; CHECK-NEXT: !3 = !DICompositeType(tag: DW_TAG_structure_type, name: "T2", scope: !1{{.*}}, baseType: !1, vtableHolder: !1, identifier: "T2") +; CHECK-NEXT: !4 = !DIDerivedType(tag: DW_TAG_member, name: "M1", scope: !1{{.*}}, baseType: !3) +; CHECK-NEXT: !5 = !DISubroutineType(types: !6) +; CHECK-NEXT: !6 = !{!1, !3} +; CHECK-NEXT: !7 = !DISubprogram(scope: !1,{{.*}} containingType: !1{{[,)]}} +; CHECK-NEXT: !8 = !DILocalVariable(name: "V1", scope: !7, type: !3) +; CHECK-NEXT: !9 = !DIObjCProperty(name: "P1", type: !1) +; CHECK-NEXT: !10 = !DITemplateTypeParameter(type: !1) ; 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: !13 = !DICompositeType(tag: DW_TAG_structure_type, name: "T3", file: !0, elements: !14, identifier: "T3") +; 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: !2, elements: !14, identifier: "T3") ; CHECK-NEXT: !14 = !{!15} ; CHECK-NEXT: !15 = !DISubprogram(scope: !13, ; CHECK-NEXT: !16 = !DIDerivedType(tag: DW_TAG_ptr_to_member_type,{{.*}} extraData: !13) diff --git a/test/CodeGen/ARM/2010-06-25-Thumb2ITInvalidIterator.ll b/test/CodeGen/ARM/2010-06-25-Thumb2ITInvalidIterator.ll index 5ae1b6626f1a3..7a202ddab0913 100644 --- a/test/CodeGen/ARM/2010-06-25-Thumb2ITInvalidIterator.ll +++ b/test/CodeGen/ARM/2010-06-25-Thumb2ITInvalidIterator.ll @@ -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 triple = "thumbv7-apple-darwin3.0.0-iphoneos" -@length = common global i32 0, align 4 ; [#uses=1] +@length = common global i32 0, align 4, !dbg !14 ; [#uses=1] define void @x0(i8* nocapture %buf, i32 %nbytes) nounwind optsize { 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) !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) -!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) !16 = !DILocation(line: 4, column: 43, scope: !1) !17 = !DILocation(line: 9, column: 2, scope: !11) diff --git a/test/CodeGen/ARM/2011-01-19-MergedGlobalDbg.ll b/test/CodeGen/ARM/2011-01-19-MergedGlobalDbg.ll index 8c6cf00cc3a01..1dce3d2d83671 100644 --- a/test/CodeGen/ARM/2011-01-19-MergedGlobalDbg.ll +++ b/test/CodeGen/ARM/2011-01-19-MergedGlobalDbg.ll @@ -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 triple = "thumbv7-apple-darwin10" -@x1 = internal global i8 1, align 1 -@x2 = internal global i8 1, align 1 -@x3 = internal global i8 1, align 1 -@x4 = internal global i8 1, align 1 -@x5 = global i8 1, align 1 +@x1 = internal global i8 1, align 1, !dbg !13 +@x2 = internal global i8 1, align 1, !dbg !14 +@x3 = internal global i8 1, align 1, !dbg !15 +@x4 = internal global i8 1, align 1, !dbg !16 +@x5 = global i8 1, align 1, !dbg !17 ; Check debug info output for merged global. ; DW_AT_location @@ -21,12 +21,12 @@ target triple = "thumbv7-apple-darwin10" ; CHECK-NOT: DW_TAG ; CHECK: DW_AT_name {{.*}} "x1" ; 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-NOT: DW_TAG ; CHECK: DW_AT_name {{.*}} "x2" ; 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 { entry: @@ -91,11 +91,11 @@ entry: !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) !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) -!14 = !DIGlobalVariable(name: "x2", line: 6, isLocal: true, isDefinition: true, scope: !1, file: !1, type: !5, variable: i8* @x2) -!15 = !DIGlobalVariable(name: "x3", line: 9, isLocal: true, isDefinition: true, scope: !1, file: !1, type: !5, variable: i8* @x3) -!16 = !DIGlobalVariable(name: "x4", line: 12, isLocal: true, isDefinition: true, scope: !1, file: !1, type: !5, variable: i8* @x4) -!17 = !DIGlobalVariable(name: "x5", line: 15, isLocal: false, isDefinition: true, scope: !1, file: !1, type: !5, variable: i8* @x5) +!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) +!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) +!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) !19 = !DILocalVariable(name: "b", line: 7, scope: !20, file: !1, type: !5) !20 = distinct !DILexicalBlock(line: 7, column: 0, file: !47, scope: !6) diff --git a/test/CodeGen/ARM/2011-08-02-MergedGlobalDbg.ll b/test/CodeGen/ARM/2011-08-02-MergedGlobalDbg.ll index 4da4fd4c926ed..1303aa195fd40 100644 --- a/test/CodeGen/ARM/2011-08-02-MergedGlobalDbg.ll +++ b/test/CodeGen/ARM/2011-08-02-MergedGlobalDbg.ll @@ -12,18 +12,18 @@ ; CHECK-NOT: DW_TAG ; CHECK: DW_AT_name {{.*}} "x1" ; 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-NOT: DW_TAG ; CHECK: DW_AT_name {{.*}} "x2" ; 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 triple = "thumbv7-apple-macosx10.7.0" -@x1 = internal unnamed_addr global i32 1, align 4 -@x2 = internal unnamed_addr global i32 2, align 4 +@x1 = internal unnamed_addr global i32 1, align 4, !dbg !25 +@x2 = internal unnamed_addr global i32 2, align 4, !dbg !26 @x3 = internal unnamed_addr global i32 3, align 4 @x4 = internal unnamed_addr global i32 4, 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) !20 = !DILocalVariable(name: "b", line: 14, scope: !21, file: !2, type: !5) !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) -!26 = !DIGlobalVariable(name: "x2", line: 7, isLocal: true, isDefinition: true, scope: !0, file: !2, type: !5, variable: i32* @x2) +!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) !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) !29 = distinct !DILexicalBlock(line: 17, column: 19, file: !47, scope: !9) diff --git a/test/CodeGen/ARM/coalesce-dbgvalue.ll b/test/CodeGen/ARM/coalesce-dbgvalue.ll index cd45af338fde9..bf718db322efb 100644 --- a/test/CodeGen/ARM/coalesce-dbgvalue.ll +++ b/test/CodeGen/ARM/coalesce-dbgvalue.ll @@ -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 triple = "thumbv7-apple-ios3.0.0" -@c = common global i32 0, align 4 -@b = common global i32 0, align 4 -@a = common global i64 0, align 8 -@d = common global i32 0, align 4 +@c = common global i32 0, align 4, !dbg !19 +@b = common global i32 0, align 4, !dbg !18 +@a = common global i64 0, align 8, !dbg !16 +@d = common global i32 0, align 4, !dbg !20 ; Function Attrs: nounwind ssp define i32 @pr16110() #0 !dbg !4 { @@ -94,11 +94,11 @@ attributes #3 = { nounwind } !13 = distinct !DILexicalBlock(line: 12, column: 0, file: !1, scope: !4) !14 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 32, align: 32, baseType: !8) !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) -!18 = !DIGlobalVariable(name: "b", line: 2, isLocal: false, isDefinition: true, scope: null, file: !5, type: !8, variable: i32* @b) -!19 = !DIGlobalVariable(name: "c", line: 3, isLocal: false, isDefinition: true, scope: null, file: !5, type: !8, variable: i32* @c) -!20 = !DIGlobalVariable(name: "d", line: 4, isLocal: false, isDefinition: true, scope: null, file: !5, type: !8, variable: i32* @d) +!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) +!20 = !DIGlobalVariable(name: "d", line: 4, isLocal: false, isDefinition: true, scope: null, file: !5, type: !8) !21 = !DILocation(line: 10, scope: !22) !22 = distinct !DILexicalBlock(line: 10, column: 0, file: !1, scope: !4) !26 = !DILocation(line: 12, scope: !13) diff --git a/test/CodeGen/NVPTX/generic-to-nvvm-ir.ll b/test/CodeGen/NVPTX/generic-to-nvvm-ir.ll index 4b33d27003512..623a2d8740cb0 100644 --- a/test/CodeGen/NVPTX/generic-to-nvvm-ir.ll +++ b/test/CodeGen/NVPTX/generic-to-nvvm-ir.ll @@ -7,7 +7,7 @@ target triple = "nvptx64-nvidia-cuda" ; Generic space variables should be converted to global space AKA 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) @.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 ; CHECK: [[GLOBALSNODE]] = !{[[GVNODE:![0-9]+]]} !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. ; CHECK: [[GVNODE]] = distinct !DIGlobalVariable(name: "static_var" ; CHECK-SAME: scope: [[CUNODE]] ; 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) ; CHECK: [[TYPENODE]] = !DIBasicType(name: "char" !6 = !{i32 2, !"Dwarf Version", i32 4} diff --git a/test/CodeGen/PowerPC/pr17168.ll b/test/CodeGen/PowerPC/pr17168.ll index 0dbdfb891dca4..6d8e28cba9765 100644 --- a/test/CodeGen/PowerPC/pr17168.ll +++ b/test/CodeGen/PowerPC/pr17168.ll @@ -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 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 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) !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} -!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") !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) diff --git a/test/CodeGen/PowerPC/pr24546.ll b/test/CodeGen/PowerPC/pr24546.ll index 2f667cfcb1a7f..d7cd9e18acc88 100644 --- a/test/CodeGen/PowerPC/pr24546.ll +++ b/test/CodeGen/PowerPC/pr24546.ll @@ -3,7 +3,7 @@ ; Verify that we no longer crash in VSX swap removal when debug values ; 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 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} !22 = !DILocalVariable(name: "power", arg: 1, scope: !18, file: !1, line: 1, type: !9) !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) !26 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !4) !27 = !{!28} diff --git a/test/CodeGen/X86/fpstack-debuginstr-kill.ll b/test/CodeGen/X86/fpstack-debuginstr-kill.ll index 874cc7ce7f3f3..60d335dd48d98 100644 --- a/test/CodeGen/X86/fpstack-debuginstr-kill.ll +++ b/test/CodeGen/X86/fpstack-debuginstr-kill.ll @@ -1,7 +1,7 @@ ; RUN: llc < %s -mcpu=generic -mtriple=i386-apple-darwin -no-integrated-as -@g1 = global double 0.000000e+00, align 8 -@g2 = global i32 0, align 4 +@g1 = global double 0.000000e+00, align 8, !dbg !22 +@g2 = global i32 0, align 4, !dbg !23 define void @_Z16fpuop_arithmeticjj(i32, i32) !dbg !4 { 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) !20 = !DILocalVariable(name: "value", line: 16, scope: !4, file: !6, type: !14) !21 = !{!22, !23} -!22 = !DIGlobalVariable(name: "g1", line: 5, isLocal: false, isDefinition: true, scope: null, file: !6, type: !14, variable: double* @g1) -!23 = !DIGlobalVariable(name: "g2", line: 6, isLocal: false, isDefinition: true, scope: null, file: !6, type: !19, variable: i32* @g2) +!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) !24 = !{i32 2, !"Dwarf Version", i32 2} !25 = !{i32 2, !"Debug Info Version", i32 3} diff --git a/test/CodeGen/X86/misched-code-difference-with-debug.ll b/test/CodeGen/X86/misched-code-difference-with-debug.ll index db218f4bd0979..1f91e3ad0b88f 100644 --- a/test/CodeGen/X86/misched-code-difference-with-debug.ll +++ b/test/CodeGen/X86/misched-code-difference-with-debug.ll @@ -22,7 +22,7 @@ %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, ...) @@ -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) !19 = !DILocalVariable(name: "lc", line: 8, scope: !13, file: !14, type: !11) !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} !23 = !{i32 2, !"Debug Info Version", i32 3} !25 = !DILocation(line: 8, column: 3, scope: !13) diff --git a/test/DebugInfo/AArch64/big-endian.ll b/test/DebugInfo/AArch64/big-endian.ll index 78088c05dedc0..4fea2a6b5beeb 100644 --- a/test/DebugInfo/AArch64/big-endian.ll +++ b/test/DebugInfo/AArch64/big-endian.ll @@ -3,7 +3,7 @@ target datalayout = "E-m:e-i64:64-i128:128-n32:64-S128" 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.module.flags = !{!8, !9} @@ -13,7 +13,7 @@ target triple = "aarch64_be--none-eabi" !1 = !DIFile(filename: "-", directory: "/work/validation") !2 = !{} !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: "", directory: "/work/validation") !6 = !{!"", !"/work/validation"} !7 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed) diff --git a/test/DebugInfo/AArch64/bitfields.ll b/test/DebugInfo/AArch64/bitfields.ll index f2af1520fe08a..3e93823f52279 100644 --- a/test/DebugInfo/AArch64/bitfields.ll +++ b/test/DebugInfo/AArch64/bitfields.ll @@ -48,7 +48,7 @@ target triple = "aarch64_be--linux-gnu" %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.module.flags = !{!13, !14, !15} @@ -58,7 +58,7 @@ target triple = "aarch64_be--linux-gnu" !1 = !DIFile(filename: "bitfields.c", directory: "/") !2 = !{} !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: "/") !6 = !DICompositeType(tag: DW_TAG_structure_type, name: "bitfield", file: !5, line: 1, size: 96, align: 32, elements: !7) !7 = !{!8, !10, !11, !12} diff --git a/test/DebugInfo/AArch64/frameindices.ll b/test/DebugInfo/AArch64/frameindices.ll index 55886d22baefe..2aaf1697fa153 100644 --- a/test/DebugInfo/AArch64/frameindices.ll +++ b/test/DebugInfo/AArch64/frameindices.ll @@ -39,8 +39,8 @@ target triple = "aarch64-apple-ios" %struct.A = type { i8, i8*, i8 } %struct.B = type { i8 } -@a = global i64 0, align 8 -@b = global i32* null, align 8 +@a = global i64 0, align 8, !dbg !41 +@b = global i32* null, align 8, !dbg !42 define void @_Z3f131A(%struct.A* nocapture readonly %p1) #0 !dbg !25 { entry: @@ -200,8 +200,8 @@ attributes #5 = { builtin } !38 = !DILocalVariable(name: "c", line: 19, scope: !34, file: !26, type: !4) !39 = !DILocalVariable(name: "d", line: 20, scope: !34, file: !26, type: !14) !40 = !{!41, !42} -!41 = !DIGlobalVariable(name: "a", line: 1, isLocal: false, isDefinition: true, scope: null, file: !26, type: !20, variable: i64* @a) -!42 = !DIGlobalVariable(name: "b", line: 7, isLocal: false, isDefinition: true, scope: null, file: !26, type: !12, variable: i32** @b) +!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) !43 = !{i32 2, !"Dwarf Version", i32 2} !44 = !{i32 2, !"Debug Info Version", i32 3} !45 = !{!"clang version 3.7.0 "} diff --git a/test/DebugInfo/ARM/big-endian-bitfield.ll b/test/DebugInfo/ARM/big-endian-bitfield.ll index 0153e99a3ffd7..942306db4e0a6 100644 --- a/test/DebugInfo/ARM/big-endian-bitfield.ll +++ b/test/DebugInfo/ARM/big-endian-bitfield.ll @@ -12,7 +12,7 @@ target datalayout = "E-m:e-p:32:32-i64:64-v128:64:128-n32-S64" %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.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") !2 = !{} !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) !6 = !{!7, !9, !10, !11} ; CHECK: DW_TAG_member diff --git a/test/DebugInfo/ARM/bitfield.ll b/test/DebugInfo/ARM/bitfield.ll index 6fe1d48f8c595..c755f3bf15500 100644 --- a/test/DebugInfo/ARM/bitfield.ll +++ b/test/DebugInfo/ARM/bitfield.ll @@ -20,7 +20,7 @@ target triple = "thumbv7-apple-ios" %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.module.flags = !{!11, !12, !13, !14, !15} @@ -30,7 +30,7 @@ target triple = "thumbv7-apple-ios" !1 = !DIFile(filename: "test.i", directory: "/") !2 = !{} !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) !6 = !{!7, !9} !7 = !DIDerivedType(tag: DW_TAG_member, name: "c", scope: !5, file: !1, line: 2, baseType: !8, size: 8, align: 8) diff --git a/test/DebugInfo/ARM/multiple-constant-uses-drops-dbgloc.ll b/test/DebugInfo/ARM/multiple-constant-uses-drops-dbgloc.ll index 88c3195d5a9f3..c166e0624d9ff 100644 --- a/test/DebugInfo/ARM/multiple-constant-uses-drops-dbgloc.ll +++ b/test/DebugInfo/ARM/multiple-constant-uses-drops-dbgloc.ll @@ -15,8 +15,8 @@ target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64" target triple = "armv7--linux-gnueabihf" -@ch = common global i8 0, align 1 -@b = common global i32 0, align 4 +@ch = common global i8 0, align 1, !dbg !8 +@b = common global i32 0, align 4, !dbg !10 ; Function Attrs: nounwind 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) !6 = !{null} !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) -!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) !12 = !{i32 2, !"Dwarf Version", i32 4} !13 = !{i32 2, !"Debug Info Version", i32 3} diff --git a/test/DebugInfo/ARM/tls.ll b/test/DebugInfo/ARM/tls.ll index 3ef51e87428e7..d7d78cf7e2b45 100644 --- a/test/DebugInfo/ARM/tls.ll +++ b/test/DebugInfo/ARM/tls.ll @@ -6,7 +6,7 @@ ; Generated with clang with source ; __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.module.flags = !{!7, !8} @@ -26,7 +26,7 @@ !1 = !DIFile(filename: "tls.c", directory: "/tmp") !2 = !{} !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") !6 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed) !7 = !{i32 2, !"Dwarf Version", i32 4} diff --git a/test/DebugInfo/COFF/anonymous-struct.ll b/test/DebugInfo/COFF/anonymous-struct.ll index f39fed6b14e93..2cce03435217a 100644 --- a/test/DebugInfo/COFF/anonymous-struct.ll +++ b/test/DebugInfo/COFF/anonymous-struct.ll @@ -36,7 +36,7 @@ target triple = "i686-pc-windows-msvc18.0.0" %struct.S = type { i32, %struct.anon } %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.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") !2 = !{} !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: "", 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) !7 = !{!8, !10} diff --git a/test/DebugInfo/COFF/big-type.ll b/test/DebugInfo/COFF/big-type.ll index ffce72e6cc542..dbd2e9802356f 100644 --- a/test/DebugInfo/COFF/big-type.ll +++ b/test/DebugInfo/COFF/big-type.ll @@ -57,7 +57,7 @@ source_filename = "t.cpp" target datalayout = "e-m:w-i64:64-f80:128-n8:16:32:64-S128" 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.module.flags = !{!5704, !5705, !5706} @@ -5766,7 +5766,7 @@ target triple = "x86_64-pc-windows-msvc19.0.23918" !5700 = !DIEnumerator(name: "EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE5695", value: 5694) !5701 = !DIEnumerator(name: "EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE5696", value: 5695) !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} !5705 = !{i32 2, !"Debug Info Version", i32 3} !5706 = !{i32 1, !"PIC Level", i32 2} diff --git a/test/DebugInfo/COFF/bitfields.ll b/test/DebugInfo/COFF/bitfields.ll index 817bb88837d10..5b0128601dcac 100644 --- a/test/DebugInfo/COFF/bitfields.ll +++ b/test/DebugInfo/COFF/bitfields.ll @@ -181,9 +181,9 @@ target triple = "x86_64-pc-windows-msvc18.0.0" %struct.anon = type <{ i8, i16 }> %struct.S2 = type { i32 } -@s0 = common global %struct.S0 zeroinitializer, align 1 -@s1 = common global %struct.S1 zeroinitializer, align 1 -@s2 = common global %struct.S2 zeroinitializer, align 1 +@s0 = common global %struct.S0 zeroinitializer, align 1, !dbg !4 +@s1 = common global %struct.S1 zeroinitializer, align 1, !dbg !10 +@s2 = common global %struct.S2 zeroinitializer, align 1, !dbg !29 !llvm.dbg.cu = !{!0} !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") !2 = !{} !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: "", 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) !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) !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) !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) @@ -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) !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) -!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) !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) diff --git a/test/DebugInfo/COFF/enum.ll b/test/DebugInfo/COFF/enum.ll index 1244c403b826e..602435ff1c805 100644 --- a/test/DebugInfo/COFF/enum.ll +++ b/test/DebugInfo/COFF/enum.ll @@ -27,7 +27,7 @@ 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" -@"\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.module.flags = !{!10, !11} @@ -42,7 +42,7 @@ target triple = "i686-pc-windows-msvc18.0.0" !6 = !{!7} !7 = !DIEnumerator(name: "BLAH", value: 0) !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} !11 = !{i32 2, !"Debug Info Version", i32 3} !12 = !{!"clang version 3.9.0 (trunk 272790) (llvm/trunk 272813)"} diff --git a/test/DebugInfo/COFF/global-dllimport.ll b/test/DebugInfo/COFF/global-dllimport.ll index 9d21a43e5eb87..0c2308f576259 100644 --- a/test/DebugInfo/COFF/global-dllimport.ll +++ b/test/DebugInfo/COFF/global-dllimport.ll @@ -5,7 +5,7 @@ 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" -@"\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.module.flags = !{!13, !14} @@ -15,7 +15,7 @@ target triple = "i686-pc-windows-msvc" !1 = !DIFile(filename: "/usr/local/google/home/majnemer/Downloads/", directory: "/usr/local/google/home/majnemer/llvm/src") !2 = !{} !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") !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) diff --git a/test/DebugInfo/COFF/globals-discarded.ll b/test/DebugInfo/COFF/globals-discarded.ll index 35a1df20c9cb5..f3b9943c8d0d9 100644 --- a/test/DebugInfo/COFF/globals-discarded.ll +++ b/test/DebugInfo/COFF/globals-discarded.ll @@ -15,7 +15,7 @@ source_filename = "t.ii" target datalayout = "e-m:w-i64:64-f80:128-n8:16:32:64-S128" target triple = "x86_64-pc-windows-msvc19.0.0" -@x = global i32 42 +@x = global i32 42, !dbg !6 !llvm.dbg.cu = !{!0} !llvm.module.flags = !{!35, !36, !37} @@ -27,7 +27,7 @@ target triple = "x86_64-pc-windows-msvc19.0.0" !3 = !{!4, !6} !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) -!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} !36 = !{i32 2, !"Debug Info Version", i32 3} diff --git a/test/DebugInfo/COFF/globals.ll b/test/DebugInfo/COFF/globals.ll index 8e4d6e545eeb1..2f520ba6454a4 100644 --- a/test/DebugInfo/COFF/globals.ll +++ b/test/DebugInfo/COFF/globals.ll @@ -117,10 +117,10 @@ target triple = "x86_64-pc-windows-msvc19.0.23918" $"\01?comdat@?$A@X@@2HB" = comdat any -@"\01?first@@3HA" = internal global i32 0, align 4 -@"\01?comdat@?$A@X@@2HB" = linkonce_odr constant i32 3, comdat, align 4 -@"\01?middle@@3PEBHEB" = thread_local global i32* @"\01?comdat@?$A@X@@2HB", align 8 -@"\01?last@@3HA" = 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, !dbg !6 +@"\01?middle@@3PEBHEB" = thread_local global i32* @"\01?comdat@?$A@X@@2HB", align 8, !dbg !13 +@"\01?last@@3HA" = global i32 0, align 4, !dbg !15 !llvm.dbg.cu = !{!0} !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") !2 = !{} !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) -!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) !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", file: !1, line: 2, size: 8, align: 8, elements: !10, templateParams: !11) !10 = !{!8} !11 = !{!12} !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) -!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} !17 = !{i32 2, !"Debug Info Version", i32 3} !18 = !{i32 1, !"PIC Level", i32 2} diff --git a/test/DebugInfo/COFF/inheritance.ll b/test/DebugInfo/COFF/inheritance.ll index a556f1d77d637..1c0e9de9f54fd 100644 --- a/test/DebugInfo/COFF/inheritance.ll +++ b/test/DebugInfo/COFF/inheritance.ll @@ -83,7 +83,7 @@ $"\01??_8B@@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@@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 @@ -230,7 +230,7 @@ attributes #4 = { nounwind } !1 = !DIFile(filename: "t.cpp", directory: "D:\5Csrc\5Cllvm\5Cbuild") !2 = !{} !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@@") !6 = !{!7, !21, !27, !28, !29} !7 = !DIDerivedType(tag: DW_TAG_inheritance, scope: !5, baseType: !8, offset: 64) diff --git a/test/DebugInfo/COFF/inlining-files.ll b/test/DebugInfo/COFF/inlining-files.ll index e5240ccc67706..93c54f4321764 100644 --- a/test/DebugInfo/COFF/inlining-files.ll +++ b/test/DebugInfo/COFF/inlining-files.ll @@ -44,7 +44,7 @@ target datalayout = "e-m:w-i64:64-f80:128-n8:16:32:64-S128" 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 define void @f() #0 !dbg !4 { @@ -84,7 +84,7 @@ attributes #0 = { norecurse nounwind uwtable "disable-tail-calls"="false" "less- !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) !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) !11 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed) !12 = !{i32 2, !"CodeView", i32 1} diff --git a/test/DebugInfo/COFF/inlining-header.ll b/test/DebugInfo/COFF/inlining-header.ll index 143bd48e4be86..a74e4991ce677 100644 --- a/test/DebugInfo/COFF/inlining-header.ll +++ b/test/DebugInfo/COFF/inlining-header.ll @@ -106,7 +106,7 @@ source_filename = "t.cpp" target datalayout = "e-m:w-i64:64-f80:128-n8:16:32:64-S128" 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 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") !2 = !{} !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) !6 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed) !7 = !{i32 2, !"CodeView", i32 1} diff --git a/test/DebugInfo/COFF/inlining-levels.ll b/test/DebugInfo/COFF/inlining-levels.ll index 55ce3de84796a..ba533c3f1743c 100644 --- a/test/DebugInfo/COFF/inlining-levels.ll +++ b/test/DebugInfo/COFF/inlining-levels.ll @@ -41,7 +41,7 @@ target datalayout = "e-m:w-i64:64-f80:128-n8:16:32:64-S128" 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 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) !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} -!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) !16 = !{i32 2, !"CodeView", i32 1} !17 = !{i32 2, !"Debug Info Version", i32 3} diff --git a/test/DebugInfo/COFF/register-variables.ll b/test/DebugInfo/COFF/register-variables.ll index 5392ea6238e6d..09afa64181d79 100644 --- a/test/DebugInfo/COFF/register-variables.ll +++ b/test/DebugInfo/COFF/register-variables.ll @@ -192,7 +192,7 @@ target datalayout = "e-m:w-i64:64-f80:128-n8:16:32:64-S128" 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 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) !21 = !DILocalVariable(name: "b", scope: !16, file: !1, line: 5, type: !7) !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) !25 = !{i32 2, !"CodeView", i32 1} !26 = !{i32 2, !"Debug Info Version", i32 3} diff --git a/test/DebugInfo/COFF/scopes.ll b/test/DebugInfo/COFF/scopes.ll index d7b4962945da5..2d144ca20362e 100644 --- a/test/DebugInfo/COFF/scopes.ll +++ b/test/DebugInfo/COFF/scopes.ll @@ -79,7 +79,7 @@ target triple = "x86_64-pc-windows-msvc19.0.23918" %"struct.foo::bar::GlobalRecord" = 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 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") !2 = !{} !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) !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@@") diff --git a/test/DebugInfo/COFF/types-array-advanced.ll b/test/DebugInfo/COFF/types-array-advanced.ll index fbca98f262089..db8b0d7fe80f1 100644 --- a/test/DebugInfo/COFF/types-array-advanced.ll +++ b/test/DebugInfo/COFF/types-array-advanced.ll @@ -127,10 +127,10 @@ target triple = "i686-pc-windows-msvc18.0.31101" %struct.incomplete_struct = type { i32 } -@"\01?multi_dim_arr@@3PAY146DA" = global [2 x [5 x [7 x i8]]] zeroinitializer, align 1 -@"\01?p_incomplete_struct_arr@@3PAY02Uincomplete_struct@@A" = global [3 x i8]* null, align 4 -@"\01?incomplete_struct_arr@@3PAUincomplete_struct@@A" = global [3 x %struct.incomplete_struct] zeroinitializer, align 4 -@"\01?typedef_arr@@3SDHD" = constant [4 x i32] zeroinitializer, align 4 +@"\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, !dbg !11 +@"\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, !dbg !21 ; Function Attrs: nounwind define void @"\01?foo@@YAXH@Z"(i32 %x) #0 !dbg !31 { @@ -172,14 +172,14 @@ attributes #2 = { nounwind } !1 = !DIFile(filename: "t.cpp", directory: "/") !2 = !{} !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) !6 = !DIBasicType(name: "char", size: 8, align: 8, encoding: DW_ATE_signed_char) !7 = !{!8, !9, !10} !8 = !DISubrange(count: 2) !9 = !DISubrange(count: 5) !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) !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@@") @@ -188,8 +188,8 @@ attributes #2 = { nounwind } !17 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed) !18 = !{!19} !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") -!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") +!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) !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) !24 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !25) diff --git a/test/DebugInfo/COFF/types-nested-class.ll b/test/DebugInfo/COFF/types-nested-class.ll index ecb1fdf5898e3..0de7bb07ed9c8 100644 --- a/test/DebugInfo/COFF/types-nested-class.ll +++ b/test/DebugInfo/COFF/types-nested-class.ll @@ -79,7 +79,7 @@ target triple = "i686-pc-windows-msvc19.0.23918" %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.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") !2 = !{} !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@@") !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@@") diff --git a/test/DebugInfo/COFF/types-ptr-to-member.ll b/test/DebugInfo/COFF/types-ptr-to-member.ll index 76b12a08b4b06..04a9d872f4289 100644 --- a/test/DebugInfo/COFF/types-ptr-to-member.ll +++ b/test/DebugInfo/COFF/types-ptr-to-member.ll @@ -184,16 +184,16 @@ target triple = "x86_64-pc-windows-msvc19.0.23918" %0 = type opaque %1 = type opaque -@"\01?pmd_a@@3PEQA@@HEQ1@" = global i32 -1, align 8 -@"\01?pmd_b@@3PEQC@@HEQ1@" = global i32 -1, align 8 -@"\01?pmd_c@@3PEQD@@HEQ1@" = global { i32, i32 } { i32 0, i32 -1 }, align 8 -@"\01?pmd_d@@3PEQE@@HEQ1@" = global { i32, i32, i32 } { i32 0, i32 0, i32 -1 }, align 8 -@"\01?pmf_a@@3P8A@@EAAXXZEQ1@" = global i8* null, align 8 -@"\01?pmf_b@@3P8C@@EAAXXZEQ1@" = global { i8*, i32 } zeroinitializer, align 8 -@"\01?pmf_c@@3P8D@@EAAXXZEQ1@" = global { i8*, i32, i32 } zeroinitializer, align 8 -@"\01?pmf_d@@3P8E@@EAAXXZEQ1@" = global { i8*, i32, i32, i32 } zeroinitializer, align 8 -@"\01?ppmd@@3PEAPEQIncomplete@@HEA" = global %0* null, align 8 -@"\01?ppmf@@3PEAP8Incomplete@@EAAXXZEA" = global %1* null, align 8 +@"\01?pmd_a@@3PEQA@@HEQ1@" = global i32 -1, align 8, !dbg !4 +@"\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, !dbg !20 +@"\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, !dbg !26 +@"\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, !dbg !36 +@"\01?pmf_d@@3P8E@@EAAXXZEQ1@" = global { i8*, i32, i32, i32 } zeroinitializer, align 8, !dbg !41 +@"\01?ppmd@@3PEAPEQIncomplete@@HEA" = global %0* null, align 8, !dbg !46 +@"\01?ppmf@@3PEAP8Incomplete@@EAAXXZEA" = global %1* null, align 8, !dbg !50 !llvm.dbg.cu = !{!0} !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") !2 = !{} !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) !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@@") !8 = !{!9} !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) !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} @@ -219,37 +219,37 @@ target triple = "x86_64-pc-windows-msvc19.0.23918" !17 = !{!18} !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) -!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) !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) !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) !28 = !DISubroutineType(types: !29) !29 = !{null, !30} !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) !33 = !DISubroutineType(types: !34) !34 = !{null, !35} !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) !38 = !DISubroutineType(types: !39) !39 = !{null, !40} !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) !43 = !DISubroutineType(types: !44) !44 = !{null, !45} !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) !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@@") -!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) !52 = !DIDerivedType(tag: DW_TAG_ptr_to_member_type, baseType: !53, extraData: !49) !53 = !DISubroutineType(types: !54) diff --git a/test/DebugInfo/COFF/udts.ll b/test/DebugInfo/COFF/udts.ll index bb0686f313f99..d907cfdbfea0f 100644 --- a/test/DebugInfo/COFF/udts.ll +++ b/test/DebugInfo/COFF/udts.ll @@ -55,7 +55,7 @@ target triple = "i686-pc-windows-msvc18.0.0" %struct.S = 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 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") !2 = !{} !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) !6 = distinct !DICompositeType(tag: DW_TAG_structure_type, file: !1, line: 12, size: 32, align: 32, elements: !7, identifier: ".?AUU@@") !7 = !{!8} diff --git a/test/DebugInfo/COFF/virtual-method-kinds.ll b/test/DebugInfo/COFF/virtual-method-kinds.ll index ebc54b5fe400f..12958bb5089c9 100644 --- a/test/DebugInfo/COFF/virtual-method-kinds.ll +++ b/test/DebugInfo/COFF/virtual-method-kinds.ll @@ -121,7 +121,7 @@ $"\01??_7A@@6B@" = comdat largest $"\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@") @"\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* @@ -237,7 +237,7 @@ attributes #6 = { nounwind } !1 = !DIFile(filename: "t.cpp", directory: "D:\5Csrc\5Cllvm\5Cbuild") !2 = !{} !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) !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} diff --git a/test/DebugInfo/COFF/vtable-optzn-array.ll b/test/DebugInfo/COFF/vtable-optzn-array.ll index 7503e7294b9f1..08a1f758effcd 100644 --- a/test/DebugInfo/COFF/vtable-optzn-array.ll +++ b/test/DebugInfo/COFF/vtable-optzn-array.ll @@ -40,8 +40,8 @@ target triple = "x86_64-pc-windows-msvc" $"\01??_DUseCompleteType@@QEAA@XZ" = comdat any -@"\01?force_fwd_decl@@3UGetFwdDecl@@A" = global %struct.GetFwdDecl zeroinitializer, align 1 -@"\01?require_complete@@3UUseCompleteType@@A" = global %struct.UseCompleteType zeroinitializer, align 8 +@"\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, !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 }] ; Function Attrs: nounwind @@ -100,13 +100,13 @@ attributes #3 = { nounwind readnone } !1 = !DIFile(filename: "", directory: "C:\5Csrc\5Cllvm\5Cbuild") !2 = !{} !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") !6 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "GetFwdDecl", file: !5, line: 2, size: 8, align: 8, elements: !7, identifier: ".?AUGetFwdDecl@@") !7 = !{!8} !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@@") -!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@@") !12 = !{!13, !17, !21} !13 = !DIDerivedType(tag: DW_TAG_member, name: "currencySpcAfterSym", scope: !11, file: !5, line: 13, baseType: !14, size: 64, align: 64) diff --git a/test/DebugInfo/Generic/2009-11-06-NamelessGlobalVariable.ll b/test/DebugInfo/Generic/2009-11-06-NamelessGlobalVariable.ll index a6b7e5f03e3ad..f27d323726e49 100644 --- a/test/DebugInfo/Generic/2009-11-06-NamelessGlobalVariable.ll +++ b/test/DebugInfo/Generic/2009-11-06-NamelessGlobalVariable.ll @@ -1,5 +1,5 @@ ; RUN: llc %s -o /dev/null -@0 = internal constant i32 1 +@0 = internal constant i32 1, !dbg !5 !llvm.dbg.cu = !{!0} !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) !2 = !{} !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") !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") diff --git a/test/DebugInfo/Generic/2010-06-29-InlinedFnLocalVar.ll b/test/DebugInfo/Generic/2010-06-29-InlinedFnLocalVar.ll index c0b9625c488a3..e3cd4860dc08e 100644 --- a/test/DebugInfo/Generic/2010-06-29-InlinedFnLocalVar.ll +++ b/test/DebugInfo/Generic/2010-06-29-InlinedFnLocalVar.ll @@ -6,7 +6,7 @@ ; CHECK-NEXT: DW_AT_name -@i = common global i32 0 ; [#uses=2] +@i = common global i32 0, !dbg !16 ; [#uses=2] declare void @llvm.dbg.declare(metadata, metadata, metadata) nounwind readnone @@ -45,7 +45,7 @@ entry: !13 = !{!14, !15} !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) -!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) !18 = distinct !DILexicalBlock(line: 14, column: 0, file: !1, scope: !6) !19 = !DILocation(line: 9, scope: !0, inlinedAt: !17) diff --git a/test/DebugInfo/Generic/accel-table-hash-collisions.ll b/test/DebugInfo/Generic/accel-table-hash-collisions.ll index 477d5c8469a3e..971a7689d5ea8 100644 --- a/test/DebugInfo/Generic/accel-table-hash-collisions.ll +++ b/test/DebugInfo/Generic/accel-table-hash-collisions.ll @@ -52,18 +52,18 @@ -@ForceTopDown = 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 -@_ZN5clang23DataRecursiveASTVisitorIN12_GLOBAL__N_124UnusedBackingIvarCheckerEE26TraverseCUDAKernelCallExprEPNS_18CUDAKernelCallExprE = common global i32 0, align 4 -@_ZN4llvm16DenseMapIteratorIPNS_10MDLocationENS_6detail13DenseSetEmptyENS_10MDNodeInfoIS1_EENS3_12DenseSetPairIS2_EELb0EE23AdvancePastEmptyBucketsEv = common global i32 0, align 4 -@_ZNK4llvm12LivePhysRegs5printERNS_11raw_ostreamE = common global i32 0, align 4 -@_ZN4llvm15ScalarEvolution14getSignedRangeEPKNS_4SCEVE = common global i32 0, align 4 -@k1 = common global i32 0, align 4 -@is = common global i32 0, align 4 -@setStmt = common global i32 0, align 4 -@_ZN4llvm5TwineC1Ei = common global i32 0, align 4 -@_ZNK5clang12OverrideAttr5cloneERNS_10ASTContextE = common global i32 0, align 4 -@_ZN4llvm22MachineModuleInfoMachOD2Ev = 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, !dbg !6 +@_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, !dbg !8 +@_ZNK4llvm12LivePhysRegs5printERNS_11raw_ostreamE = common global i32 0, align 4, !dbg !9 +@_ZN4llvm15ScalarEvolution14getSignedRangeEPKNS_4SCEVE = common global i32 0, align 4, !dbg !10 +@k1 = common global i32 0, align 4, !dbg !11 +@is = common global i32 0, align 4, !dbg !12 +@setStmt = common global i32 0, align 4, !dbg !13 +@_ZN4llvm5TwineC1Ei = common global i32 0, align 4, !dbg !14 +@_ZNK5clang12OverrideAttr5cloneERNS_10ASTContextE = common global i32 0, align 4, !dbg !15 +@_ZN4llvm22MachineModuleInfoMachOD2Ev = common global i32 0, align 4, !dbg !16 !llvm.dbg.cu = !{!0} !llvm.module.flags = !{!17, !18, !19} @@ -73,19 +73,19 @@ !1 = !DIFile(filename: "hash-collisions.c", directory: "/tmp") !2 = !{} !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) -!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_) -!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) -!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) -!9 = !DIGlobalVariable(name: "_ZNK4llvm12LivePhysRegs5printERNS_11raw_ostreamE", scope: !0, file: !1, line: 5, type: !5, isLocal: false, isDefinition: true, variable: i32* @_ZNK4llvm12LivePhysRegs5printERNS_11raw_ostreamE) -!10 = !DIGlobalVariable(name: "_ZN4llvm15ScalarEvolution14getSignedRangeEPKNS_4SCEVE", scope: !0, file: !1, line: 6, type: !5, isLocal: false, isDefinition: true, variable: i32* @_ZN4llvm15ScalarEvolution14getSignedRangeEPKNS_4SCEVE) -!11 = !DIGlobalVariable(name: "k1", scope: !0, file: !1, line: 7, type: !5, isLocal: false, isDefinition: true, variable: i32* @k1) -!12 = !DIGlobalVariable(name: "is", scope: !0, file: !1, line: 8, type: !5, isLocal: false, isDefinition: true, variable: i32* @is) -!13 = !DIGlobalVariable(name: "setStmt", scope: !0, file: !1, line: 9, type: !5, isLocal: false, isDefinition: true, variable: i32* @setStmt) -!14 = !DIGlobalVariable(name: "_ZN4llvm5TwineC1Ei", scope: !0, file: !1, line: 10, type: !5, isLocal: false, isDefinition: true, variable: i32* @_ZN4llvm5TwineC1Ei) -!15 = !DIGlobalVariable(name: "_ZNK5clang12OverrideAttr5cloneERNS_10ASTContextE", scope: !0, file: !1, line: 11, type: !5, isLocal: false, isDefinition: true, variable: i32* @_ZNK5clang12OverrideAttr5cloneERNS_10ASTContextE) -!16 = !DIGlobalVariable(name: "_ZN4llvm22MachineModuleInfoMachOD2Ev", scope: !0, file: !1, line: 12, type: !5, isLocal: false, isDefinition: true, variable: i32* @_ZN4llvm22MachineModuleInfoMachOD2Ev) +!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) +!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) +!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) +!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) +!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) +!16 = !DIGlobalVariable(name: "_ZN4llvm22MachineModuleInfoMachOD2Ev", scope: !0, file: !1, line: 12, type: !5, isLocal: false, isDefinition: true) !17 = !{i32 2, !"Dwarf Version", i32 2} !18 = !{i32 2, !"Debug Info Version", i32 3} !19 = !{i32 1, !"PIC Level", i32 2} diff --git a/test/DebugInfo/Generic/cross-cu-linkonce-distinct.ll b/test/DebugInfo/Generic/cross-cu-linkonce-distinct.ll index 664a5d233a6b6..29924b6a6c6e8 100644 --- a/test/DebugInfo/Generic/cross-cu-linkonce-distinct.ll +++ b/test/DebugInfo/Generic/cross-cu-linkonce-distinct.ll @@ -37,8 +37,8 @@ ; CHECK: DW_AT_name {{.*}}"a.cpp" ; CHECK: DW_AT_name {{.*}} "func" -@x = global i32 (i32)* @_Z4funci, align 8 -@y = global i32 (i32)* @_Z4funci, align 8 +@x = global i32 (i32)* @_Z4funci, align 8, !dbg !10 +@y = global i32 (i32)* @_Z4funci, align 8, !dbg !18 ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr i32 @_Z4funci(i32 %i) #0 !dbg !4 { @@ -69,14 +69,14 @@ attributes #1 = { nounwind readnone } !7 = !{!8, !8} !8 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed) !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) !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") !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") !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} !20 = !{i32 1, !"Debug Info Version", i32 3} !21 = !{!"clang version 3.5.0 "} diff --git a/test/DebugInfo/Generic/cross-cu-linkonce.ll b/test/DebugInfo/Generic/cross-cu-linkonce.ll index 67dfb358e3cb9..7ca25405b1531 100644 --- a/test/DebugInfo/Generic/cross-cu-linkonce.ll +++ b/test/DebugInfo/Generic/cross-cu-linkonce.ll @@ -25,8 +25,8 @@ ; CHECK: DW_TAG_compile_unit ; CHECK-NOT: DW_TAG_subprogram -@x = global i32 (i32)* @_Z4funci, align 8 -@y = global i32 (i32)* @_Z4funci, align 8 +@x = global i32 (i32)* @_Z4funci, align 8, !dbg !11 +@y = global i32 (i32)* @_Z4funci, align 8, !dbg !16 ; Function Attrs: inlinehint nounwind uwtable define linkonce_odr i32 @_Z4funci(i32 %i) #0 !dbg !4 { @@ -58,12 +58,12 @@ attributes #1 = { nounwind readnone } !8 = !{!9, !9} !9 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed) !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) !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") !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} !18 = !{i32 1, !"Debug Info Version", i32 3} !19 = !{!"clang version 3.5.0 "} diff --git a/test/DebugInfo/Generic/dbg-at-specficiation.ll b/test/DebugInfo/Generic/dbg-at-specficiation.ll index a1bbad8aec9be..24b976b248b8a 100644 --- a/test/DebugInfo/Generic/dbg-at-specficiation.ll +++ b/test/DebugInfo/Generic/dbg-at-specficiation.ll @@ -3,7 +3,7 @@ ; Do not unnecessarily use AT_specification DIE. ; 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.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) !2 = !{} !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") !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) diff --git a/test/DebugInfo/Generic/debuginfofinder-forward-declaration.ll b/test/DebugInfo/Generic/debuginfofinder-forward-declaration.ll index dcbdd2e2e6188..2fdbef202f8df 100644 --- a/test/DebugInfo/Generic/debuginfofinder-forward-declaration.ll +++ b/test/DebugInfo/Generic/debuginfofinder-forward-declaration.ll @@ -21,7 +21,7 @@ %struct.Y = type { %struct.X* } %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.module.flags = !{!10, !11} @@ -31,7 +31,7 @@ !1 = !DIFile(filename: "minimal.c", directory: "/tmp") !2 = !{} !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) !6 = !{!7} !7 = !DIDerivedType(tag: DW_TAG_member, name: "x", scope: !5, file: !1, line: 4, baseType: !8, size: 64, align: 64) diff --git a/test/DebugInfo/Generic/dwarf-public-names.ll b/test/DebugInfo/Generic/dwarf-public-names.ll index 8294c68ded74b..e40bcffcf515d 100644 --- a/test/DebugInfo/Generic/dwarf-public-names.ll +++ b/test/DebugInfo/Generic/dwarf-public-names.ll @@ -51,9 +51,9 @@ %struct.C = type { i8 } -@_ZN1C22static_member_variableE = global i32 0, align 4 -@global_variable = global %struct.C zeroinitializer, align 1 -@_ZN2ns25global_namespace_variableE = global i32 1, align 4 +@_ZN1C22static_member_variableE = global i32 0, align 4, !dbg !25 +@global_variable = global %struct.C zeroinitializer, align 1, !dbg !26 +@_ZN2ns25global_namespace_variableE = global i32 1, align 4, !dbg !27 define void @_ZN1C15member_functionEv(%struct.C* %this) nounwind uwtable align 2 !dbg !3 { entry: @@ -114,9 +114,9 @@ attributes #1 = { nounwind readnone } !22 = !DISubroutineType(types: !23) !23 = !{null} !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) -!26 = !DIGlobalVariable(name: "global_variable", line: 17, isLocal: false, isDefinition: true, scope: null, file: !4, type: !8, variable: %struct.C* @global_variable) -!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) +!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) +!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) !29 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, baseType: !8) !30 = !DILocation(line: 9, scope: !3) diff --git a/test/DebugInfo/Generic/enum.ll b/test/DebugInfo/Generic/enum.ll index 7ffa3ed6bbbb3..b2154241126be 100644 --- a/test/DebugInfo/Generic/enum.ll +++ b/test/DebugInfo/Generic/enum.ll @@ -33,7 +33,7 @@ ; CHECK: DW_TAG_enumerator ; CHECK-NEXT: DW_AT_name{{.*}} = "X" -@a = global i64 0, align 8 +@a = global i64 0, align 8, !dbg !18 ; Function Attrs: nounwind uwtable define void @_Z4funcv() #0 !dbg !13 { @@ -70,7 +70,7 @@ attributes #1 = { nounwind readnone } !15 = !DISubroutineType(types: !16) !16 = !{null} !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} !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) diff --git a/test/DebugInfo/Generic/gvn.ll b/test/DebugInfo/Generic/gvn.ll index 929559588cb9b..6de5b174891c3 100644 --- a/test/DebugInfo/Generic/gvn.ll +++ b/test/DebugInfo/Generic/gvn.ll @@ -16,8 +16,8 @@ target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128" target triple = "arm64-apple-ios" -@a = common global i32 0, align 4 -@b = common global i32 0, align 4 +@a = common global i32 0, align 4, !dbg !16 +@b = common global i32 0, align 4, !dbg !17 ; Function Attrs: nounwind define void @f3() #0 !dbg !12 { @@ -81,8 +81,8 @@ attributes #3 = { nounwind } !13 = !DISubroutineType(types: !14) !14 = !{null} !15 = !{!16, !17} -!16 = !DIGlobalVariable(name: "a", scope: !0, file: !1, line: 1, type: !9, isLocal: false, isDefinition: true, variable: i32* @a) -!17 = !DIGlobalVariable(name: "b", scope: !0, file: !1, line: 1, type: !9, isLocal: false, isDefinition: true, variable: i32* @b) +!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) !18 = !{i32 2, !"Dwarf Version", i32 2} !19 = !{i32 2, !"Debug Info Version", i32 3} !20 = !{!"clang version 3.8.0 (trunk 245562) (llvm/trunk 245569)"} diff --git a/test/DebugInfo/Generic/member-pointers.ll b/test/DebugInfo/Generic/member-pointers.ll index a9be86316663f..7dfa10fdfe568 100644 --- a/test/DebugInfo/Generic/member-pointers.ll +++ b/test/DebugInfo/Generic/member-pointers.ll @@ -17,8 +17,8 @@ ; int S::*x = 0; ; void (S::*y)(int) = 0; -@x = global i64 -1, align 8 -@y = global { i64, i64 } zeroinitializer, align 8 +@x = global i64 -1, align 8, !dbg !5 +@y = global { i64, i64 } zeroinitializer, align 8, !dbg !10 !llvm.dbg.cu = !{!0} !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) !1 = !{} !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") !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) !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) !12 = !DISubroutineType(types: !13) !13 = !{null, !14, !8} diff --git a/test/DebugInfo/Generic/namespace.ll b/test/DebugInfo/Generic/namespace.ll index 1f9fa7bb5fd35..b83f7c297a53a 100644 --- a/test/DebugInfo/Generic/namespace.ll +++ b/test/DebugInfo/Generic/namespace.ll @@ -200,8 +200,8 @@ ; } ; void B::func_fwd() {} -@_ZN1A1B1iE = global i32 0, align 4 -@_ZN1A1B7var_fwdE = global i32 0, align 4 +@_ZN1A1B1iE = global i32 0, align 4, !dbg !31 +@_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 }] ; Function Attrs: nounwind ssp uwtable @@ -317,8 +317,8 @@ attributes #1 = { nounwind readnone } !28 = !DIFile(filename: "debug-info-namespace.cpp", directory: "/tmp") !29 = !DISubroutineType(types: !2) !30 = !{!31, !32} -!31 = !DIGlobalVariable(name: "i", linkageName: "_ZN1A1B1iE", line: 20, isLocal: false, isDefinition: true, scope: !6, file: !18, type: !13, variable: i32* @_ZN1A1B1iE) -!32 = !DIGlobalVariable(name: "var_fwd", linkageName: "_ZN1A1B7var_fwdE", line: 44, isLocal: false, isDefinition: true, scope: !6, file: !18, type: !13, variable: i32* @_ZN1A1B7var_fwdE) +!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) !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) !35 = !DIImportedEntity(tag: DW_TAG_imported_module, line: 18, scope: !0, entity: !7) diff --git a/test/DebugInfo/Generic/recursive_inlining.ll b/test/DebugInfo/Generic/recursive_inlining.ll index d61f4946b8f4c..f7864e5f613f8 100644 --- a/test/DebugInfo/Generic/recursive_inlining.ll +++ b/test/DebugInfo/Generic/recursive_inlining.ll @@ -88,7 +88,7 @@ %struct.C = type { i32 } -@x = global %struct.C* null, align 8 +@x = global %struct.C* null, align 8, !dbg !27 ; Function Attrs: nounwind 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) !25 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, baseType: !4) !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} !29 = !{i32 2, !"Debug Info Version", i32 3} !30 = !{!"clang version 3.6.0 "} diff --git a/test/DebugInfo/Generic/template-recursive-void.ll b/test/DebugInfo/Generic/template-recursive-void.ll index 31a84b822cbd4..b173b46f3c007 100644 --- a/test/DebugInfo/Generic/template-recursive-void.ll +++ b/test/DebugInfo/Generic/template-recursive-void.ll @@ -20,7 +20,7 @@ %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.module.flags = !{!36, !37} @@ -29,7 +29,7 @@ !1 = !DIFile(filename: "debug-info-template-recursive.cpp", directory: "/usr/local/google/home/echristo/tmp") !2 = !{} !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") !6 = !DICompositeType(tag: DW_TAG_class_type, name: "bar", line: 9, size: 8, align: 8, file: !1, elements: !7) !7 = !{!8, !31} diff --git a/test/DebugInfo/Generic/tu-member-pointer.ll b/test/DebugInfo/Generic/tu-member-pointer.ll index af71b33d397cc..0825cf1414a20 100644 --- a/test/DebugInfo/Generic/tu-member-pointer.ll +++ b/test/DebugInfo/Generic/tu-member-pointer.ll @@ -11,7 +11,7 @@ ; }; ; int Foo:*x = 0; -@x = global i64 -1, align 8 +@x = global i64 -1, align 8, !dbg !6 !llvm.dbg.cu = !{!0} !llvm.module.flags = !{!10, !11} @@ -22,7 +22,7 @@ !3 = !{!4} !4 = !DICompositeType(tag: DW_TAG_structure_type, name: "Foo", line: 1, flags: DIFlagFwdDecl, file: !1, identifier: "_ZTS3Foo") !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: ".") !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) diff --git a/test/DebugInfo/Generic/typedef.ll b/test/DebugInfo/Generic/typedef.ll index 090dab0c2c384..45c8a16a9b0a6 100644 --- a/test/DebugInfo/Generic/typedef.ll +++ b/test/DebugInfo/Generic/typedef.ll @@ -12,7 +12,7 @@ ; CHECK-NOT: DW_AT_type ; CHECK: {{DW_TAG|NULL}} -@y = global i8* null, align 8 +@y = global i8* null, align 8, !dbg !4 !llvm.dbg.cu = !{!0} !llvm.module.flags = !{!8, !9} @@ -22,7 +22,7 @@ !1 = !DIFile(filename: "typedef.cpp", directory: "/tmp/dbginfo") !2 = !{} !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") !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) diff --git a/test/DebugInfo/MIR/X86/live-debug-values.mir b/test/DebugInfo/MIR/X86/live-debug-values.mir index 31d39dce3abd7..90da75cb92db9 100644 --- a/test/DebugInfo/MIR/X86/live-debug-values.mir +++ b/test/DebugInfo/MIR/X86/live-debug-values.mir @@ -41,7 +41,7 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" 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 ; Function Attrs: nounwind uwtable @@ -121,7 +121,7 @@ !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) !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} !18 = !{i32 2, !"Debug Info Version", i32 3} !19 = !{!"clang version 3.8.0 (trunk 253049)"} diff --git a/test/DebugInfo/Mips/InlinedFnLocalVar.ll b/test/DebugInfo/Mips/InlinedFnLocalVar.ll index 71c32e20d6a19..83ce5b2a9a025 100644 --- a/test/DebugInfo/Mips/InlinedFnLocalVar.ll +++ b/test/DebugInfo/Mips/InlinedFnLocalVar.ll @@ -6,7 +6,7 @@ ; CHECK-NEXT: info_string -@i = common global i32 0 ; [#uses=2] +@i = common global i32 0, !dbg !16 ; [#uses=2] declare void @llvm.dbg.declare(metadata, metadata, metadata) nounwind readnone @@ -45,7 +45,7 @@ entry: !13 = !{!14, !15} !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) -!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) !18 = distinct !DILexicalBlock(line: 14, column: 0, file: !1, scope: !6) !19 = !DILocation(line: 9, scope: !0, inlinedAt: !17) diff --git a/test/DebugInfo/PowerPC/tls-fission.ll b/test/DebugInfo/PowerPC/tls-fission.ll index fff78d4a16f78..492349c23e738 100644 --- a/test/DebugInfo/PowerPC/tls-fission.ll +++ b/test/DebugInfo/PowerPC/tls-fission.ll @@ -17,7 +17,7 @@ ; CHECK-NEXT: .Laddr_sec: ; 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.module.flags = !{!7, !8} @@ -26,7 +26,7 @@ !1 = !DIFile(filename: "tls.cpp", directory: "/tmp") !2 = !{} !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") !6 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed) !7 = !{i32 2, !"Dwarf Version", i32 3} diff --git a/test/DebugInfo/PowerPC/tls.ll b/test/DebugInfo/PowerPC/tls.ll index b813fd6f9f5d9..08b44e92db667 100644 --- a/test/DebugInfo/PowerPC/tls.ll +++ b/test/DebugInfo/PowerPC/tls.ll @@ -12,7 +12,7 @@ ; DW_OP_GNU_push_tls_address ; 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.module.flags = !{!7, !8} @@ -21,7 +21,7 @@ !1 = !DIFile(filename: "tls.cpp", directory: "/tmp") !2 = !{} !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") !6 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed) !7 = !{i32 2, !"Dwarf Version", i32 3} diff --git a/test/DebugInfo/X86/2011-09-26-GlobalVarContext.ll b/test/DebugInfo/X86/2011-09-26-GlobalVarContext.ll index 62d88ca733b21..bdab7e3cead06 100644 --- a/test/DebugInfo/X86/2011-09-26-GlobalVarContext.ll +++ b/test/DebugInfo/X86/2011-09-26-GlobalVarContext.ll @@ -3,7 +3,7 @@ ; 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 { %LOC = alloca i32, align 4 @@ -27,7 +27,7 @@ declare void @llvm.dbg.declare(metadata, metadata, metadata) nounwind readnone !8 = !{!9} !9 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed) !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) !16 = distinct !DILexicalBlock(line: 3, column: 9, file: !20, scope: !5) !17 = !DILocation(line: 4, column: 9, scope: !16) diff --git a/test/DebugInfo/X86/DIModuleContext.ll b/test/DebugInfo/X86/DIModuleContext.ll index 3955256d85e0a..031676ab5221f 100644 --- a/test/DebugInfo/X86/DIModuleContext.ll +++ b/test/DebugInfo/X86/DIModuleContext.ll @@ -11,7 +11,7 @@ target triple = "x86_64-apple-macosx" %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.module.flags = !{!7, !8} @@ -20,7 +20,7 @@ target triple = "x86_64-apple-macosx" !1 = !DIFile(filename: "test.c", directory: "/") !2 = !{} !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) !6 = !DICompositeType(tag: DW_TAG_structure_type, name: "s", scope: !9, file: !1, line: 1, flags: DIFlagFwdDecl) !7 = !{i32 2, !"Dwarf Version", i32 2} diff --git a/test/DebugInfo/X86/DW_AT_calling-convention.ll b/test/DebugInfo/X86/DW_AT_calling-convention.ll index 6a64f5d06e30d..6650e7ccba4e1 100644 --- a/test/DebugInfo/X86/DW_AT_calling-convention.ll +++ b/test/DebugInfo/X86/DW_AT_calling-convention.ll @@ -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 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 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") !2 = !{} !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) !6 = !DISubroutineType(cc: DW_CC_BORLAND_msfastcall, types: !7) !7 = !{!8, !8, !8} diff --git a/test/DebugInfo/X86/DW_AT_specification.ll b/test/DebugInfo/X86/DW_AT_specification.ll index edc19893f444f..188b8627415af 100644 --- a/test/DebugInfo/X86/DW_AT_specification.ll +++ b/test/DebugInfo/X86/DW_AT_specification.ll @@ -10,7 +10,7 @@ ; CHECK: DW_AT_specification {{.*}} "_ZN3foo3barEv" -@_ZZN3foo3barEvE1x = constant i32 0, align 4 +@_ZZN3foo3barEvE1x = constant i32 0, align 4, !dbg !20 define void @_ZN3foo3barEv() !dbg !5 { 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) !13 = !{!11} !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) !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) diff --git a/test/DebugInfo/X86/DW_TAG_friend.ll b/test/DebugInfo/X86/DW_TAG_friend.ll index 5ce75cbaddaf5..016bc260726e9 100644 --- a/test/DebugInfo/X86/DW_TAG_friend.ll +++ b/test/DebugInfo/X86/DW_TAG_friend.ll @@ -12,8 +12,8 @@ %class.A = type { i32 } %class.B = type { i32 } -@a = global %class.A zeroinitializer, align 4 -@b = global %class.B zeroinitializer, align 4 +@a = global %class.A zeroinitializer, align 4, !dbg !5 +@b = global %class.B zeroinitializer, align 4, !dbg !17 !llvm.dbg.cu = !{!0} !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) !1 = !{} !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") !7 = !DICompositeType(tag: DW_TAG_class_type, name: "A", line: 1, size: 32, align: 32, file: !28, elements: !8) !8 = !{!9, !11} @@ -31,7 +31,7 @@ !12 = !DISubroutineType(types: !13) !13 = !{null, !14} !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) !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) diff --git a/test/DebugInfo/X86/InlinedFnLocalVar.ll b/test/DebugInfo/X86/InlinedFnLocalVar.ll index e70be4c85dd7f..c95a7e08db063 100644 --- a/test/DebugInfo/X86/InlinedFnLocalVar.ll +++ b/test/DebugInfo/X86/InlinedFnLocalVar.ll @@ -6,7 +6,7 @@ ; CHECK-NEXT: info_string -@i = common global i32 0 ; [#uses=2] +@i = common global i32 0, !dbg !16 ; [#uses=2] declare void @llvm.dbg.declare(metadata, metadata, metadata) nounwind readnone @@ -45,7 +45,7 @@ entry: !13 = !{!14, !15} !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) -!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) !18 = distinct !DILexicalBlock(line: 14, column: 0, file: !1, scope: !6) !19 = !DILocation(line: 9, scope: !0, inlinedAt: !17) diff --git a/test/DebugInfo/X86/PR26148.ll b/test/DebugInfo/X86/PR26148.ll index b195eafd5eafa..c93078208caf6 100644 --- a/test/DebugInfo/X86/PR26148.ll +++ b/test/DebugInfo/X86/PR26148.ll @@ -31,7 +31,7 @@ target triple = "x86_64-apple-macosx10.11.0" %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.value(metadata, i64, metadata, metadata) @@ -84,7 +84,7 @@ entry: !18 = !DISubroutineType(types: !19) !19 = !{!15} !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} !23 = !{i32 2, !"Debug Info Version", i32 3} !24 = !{i32 1, !"PIC Level", i32 2} diff --git a/test/DebugInfo/X86/arange-and-stub.ll b/test/DebugInfo/X86/arange-and-stub.ll index 891429e3ef19c..a56634c05ada4 100644 --- a/test/DebugInfo/X86/arange-and-stub.ll +++ b/test/DebugInfo/X86/arange-and-stub.ll @@ -10,7 +10,7 @@ target triple = "x86_64-linux-gnu" @_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 { ret void @@ -42,7 +42,7 @@ lpad: ; preds = %0 !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) !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) !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) diff --git a/test/DebugInfo/X86/arange.ll b/test/DebugInfo/X86/arange.ll index 322459a2678de..54156d6884d9b 100644 --- a/test/DebugInfo/X86/arange.ll +++ b/test/DebugInfo/X86/arange.ll @@ -22,7 +22,7 @@ %struct.foo = type { i8 } -@f = global %struct.foo zeroinitializer, align 1 +@f = global %struct.foo zeroinitializer, align 1, !dbg !10 @i = external global i32 !llvm.dbg.cu = !{!0} @@ -39,7 +39,7 @@ !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) !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") !12 = !{i32 2, !"Dwarf Version", i32 4} !13 = !{i32 1, !"Debug Info Version", i32 3} diff --git a/test/DebugInfo/X86/bitfields-dwarf4.ll b/test/DebugInfo/X86/bitfields-dwarf4.ll index 5275fc6455434..a4ee76f8fa1b2 100644 --- a/test/DebugInfo/X86/bitfields-dwarf4.ll +++ b/test/DebugInfo/X86/bitfields-dwarf4.ll @@ -21,7 +21,7 @@ target triple = "x86_64-apple-macosx" %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.module.flags = !{!14, !15, !16} @@ -31,7 +31,7 @@ target triple = "x86_64-apple-macosx" !1 = !DIFile(filename: "bitfield.c", directory: "/Volumes/Data/llvm") !2 = !{} !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) !6 = !{!7, !9, !13} diff --git a/test/DebugInfo/X86/bitfields.ll b/test/DebugInfo/X86/bitfields.ll index 1011558f6036a..9380ed46fad3b 100644 --- a/test/DebugInfo/X86/bitfields.ll +++ b/test/DebugInfo/X86/bitfields.ll @@ -48,7 +48,7 @@ target triple = "x86_64-apple-macosx" %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.module.flags = !{!13, !14, !15} @@ -58,7 +58,7 @@ target triple = "x86_64-apple-macosx" !1 = !DIFile(filename: "bitfields.c", directory: "/") !2 = !{} !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: "/") !6 = !DICompositeType(tag: DW_TAG_structure_type, name: "bitfield", file: !5, line: 1, size: 96, align: 32, elements: !7) !7 = !{!8, !10, !11, !12} diff --git a/test/DebugInfo/X86/c-type-units.ll b/test/DebugInfo/X86/c-type-units.ll index 37cb3d55659f8..282937b201062 100644 --- a/test/DebugInfo/X86/c-type-units.ll +++ b/test/DebugInfo/X86/c-type-units.ll @@ -11,7 +11,7 @@ %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.module.flags = !{!7, !8} @@ -21,7 +21,7 @@ !1 = !DIFile(filename: "simple.c", directory: "/tmp/dbginfo") !2 = !{} !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") !6 = !DICompositeType(tag: DW_TAG_structure_type, name: "foo", line: 1, align: 8, file: !1, elements: !2) !7 = !{i32 2, !"Dwarf Version", i32 4} diff --git a/test/DebugInfo/X86/concrete_out_of_line.ll b/test/DebugInfo/X86/concrete_out_of_line.ll index 47b2e5fa59219..de06a8881dff7 100644 --- a/test/DebugInfo/X86/concrete_out_of_line.ll +++ b/test/DebugInfo/X86/concrete_out_of_line.ll @@ -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) !46 = !DILocalVariable(name: "aValue", line: 4, arg: 2, scope: !31, file: !6, type: !9) !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) !51 = distinct !DILexicalBlock(line: 4, column: 29, file: !6, scope: !31) !52 = !DILocation(line: 15, scope: !53) diff --git a/test/DebugInfo/X86/cu-ranges-odr.ll b/test/DebugInfo/X86/cu-ranges-odr.ll index 163d9330075bb..13652a54fde12 100644 --- a/test/DebugInfo/X86/cu-ranges-odr.ll +++ b/test/DebugInfo/X86/cu-ranges-odr.ll @@ -20,7 +20,7 @@ %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 }] 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) !20 = !DISubroutineType(types: !2) !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} !24 = !{i32 1, !"Debug Info Version", i32 3} !25 = !{!"clang version 3.5 (trunk 199923) (llvm/trunk 199940)"} diff --git a/test/DebugInfo/X86/data_member_location.ll b/test/DebugInfo/X86/data_member_location.ll index eea636b53b3e2..fe021e479c0c8 100644 --- a/test/DebugInfo/X86/data_member_location.ll +++ b/test/DebugInfo/X86/data_member_location.ll @@ -28,7 +28,7 @@ %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.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) !9 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed) !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") !13 = !{i32 2, !"Dwarf Version", i32 4} !14 = !{!"clang version 3.4 "} diff --git a/test/DebugInfo/X86/dbg-subrange.ll b/test/DebugInfo/X86/dbg-subrange.ll index 6c69053ae67db..aa733ac62fe63 100644 --- a/test/DebugInfo/X86/dbg-subrange.ll +++ b/test/DebugInfo/X86/dbg-subrange.ll @@ -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 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 define void @bar() nounwind uwtable ssp !dbg !5 { @@ -22,7 +22,7 @@ entry: !7 = !DISubroutineType(types: !8) !8 = !{null} !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) !15 = !DIBasicType(tag: DW_TAG_base_type, name: "char", size: 8, align: 8, encoding: DW_ATE_signed_char) !16 = !{!17} diff --git a/test/DebugInfo/X86/dbg-value-inlined-parameter.ll b/test/DebugInfo/X86/dbg-value-inlined-parameter.ll index f647d60ff74c2..7db2582767e55 100644 --- a/test/DebugInfo/X86/dbg-value-inlined-parameter.ll +++ b/test/DebugInfo/X86/dbg-value-inlined-parameter.ll @@ -41,7 +41,7 @@ %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 { 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) !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) -!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) !21 = !DILocation(line: 7, column: 21, scope: !0) !22 = !DILocation(line: 9, column: 3, scope: !23) diff --git a/test/DebugInfo/X86/dbg-value-regmask-clobber.ll b/test/DebugInfo/X86/dbg-value-regmask-clobber.ll index 31a065898b130..048c98dbb4498 100644 --- a/test/DebugInfo/X86/dbg-value-regmask-clobber.ll +++ b/test/DebugInfo/X86/dbg-value-regmask-clobber.ll @@ -36,7 +36,7 @@ target datalayout = "e-m:w-i64:64-f80:128-n8:16:32:64-S128" 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 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) !13 = !DILocalVariable(name: "argc", arg: 1, scope: !4, file: !1, line: 4, type: !7) !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) !17 = !{i32 2, !"Dwarf Version", i32 4} !18 = !{i32 2, !"Debug Info Version", i32 3} diff --git a/test/DebugInfo/X86/debug-info-access.ll b/test/DebugInfo/X86/debug-info-access.ll index f3ed35b94b92d..fa0752d1f99ed 100644 --- a/test/DebugInfo/X86/debug-info-access.ll +++ b/test/DebugInfo/X86/debug-info-access.ll @@ -91,9 +91,9 @@ target triple = "x86_64-apple-macosx10.10.0" %class.B = type { i8 } %union.U = type { i32 } -@a = global %struct.A zeroinitializer, align 1 -@b = global %class.B zeroinitializer, align 1 -@u = global %union.U zeroinitializer, align 4 +@a = global %struct.A zeroinitializer, align 1, !dbg !35 +@b = global %class.B zeroinitializer, align 1, !dbg !36 +@u = global %union.U zeroinitializer, align 4, !dbg !37 ; Function Attrs: nounwind ssp uwtable define void @_Z4freev() #0 !dbg !30 { @@ -140,9 +140,9 @@ attributes #0 = { nounwind ssp uwtable } !32 = !DISubroutineType(types: !33) !33 = !{null} !34 = !{!35, !36, !37} -!35 = !DIGlobalVariable(name: "a", line: 37, isLocal: false, isDefinition: true, scope: null, file: !31, type: !4, variable: %struct.A* @a) -!36 = !DIGlobalVariable(name: "b", line: 38, isLocal: false, isDefinition: true, scope: null, file: !31, type: !12, variable: %class.B* @b) -!37 = !DIGlobalVariable(name: "u", line: 39, isLocal: false, isDefinition: true, scope: null, file: !31, type: !22, variable: %union.U* @u) +!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) +!37 = !DIGlobalVariable(name: "u", line: 39, isLocal: false, isDefinition: true, scope: null, file: !31, type: !22) !38 = !{i32 2, !"Dwarf Version", i32 2} !39 = !{i32 2, !"Debug Info Version", i32 3} !40 = !{!"clang version 3.6.0 "} diff --git a/test/DebugInfo/X86/debug-info-packed-struct.ll b/test/DebugInfo/X86/debug-info-packed-struct.ll index d041cf3bc8875..4ed3583f52cb1 100644 --- a/test/DebugInfo/X86/debug-info-packed-struct.ll +++ b/test/DebugInfo/X86/debug-info-packed-struct.ll @@ -139,10 +139,10 @@ target triple = "x86_64-apple-darwin" ; CHECK: DW_AT_bit_offset {{.*}} (0x1f) ; CHECK: DW_AT_data_member_location {{.*}}0c -@l0 = common global %struct.layout0 zeroinitializer, align 8 -@l1 = common global %struct.layout1 zeroinitializer, align 4 -@l2 = common global %struct.layout2 zeroinitializer, align 1 -@l3 = common global %struct.layout3 zeroinitializer, align 4 +@l0 = common global %struct.layout0 zeroinitializer, align 8, !dbg !4 +@l1 = common global %struct.layout1 zeroinitializer, align 4, !dbg !18 +@l2 = common global %struct.layout2 zeroinitializer, align 1, !dbg !25 +@l3 = common global %struct.layout3 zeroinitializer, align 4, !dbg !35 !llvm.dbg.cu = !{!0} !llvm.module.flags = !{!45, !46} @@ -152,7 +152,7 @@ target triple = "x86_64-apple-darwin" !1 = !DIFile(filename: "/llvm/tools/clang/test/CodeGen/", directory: "/llvm/_build.ninja.release") !2 = !{} !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") !6 = !DICompositeType(tag: DW_TAG_structure_type, name: "layout0", file: !5, line: 15, size: 192, align: 64, elements: !7) !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) !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) -!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) !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) !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) !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) !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) @@ -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) !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) -!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) !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) diff --git a/test/DebugInfo/X86/debug-info-static-member.ll b/test/DebugInfo/X86/debug-info-static-member.ll index cbe51177c0f18..017501e4bcb6a 100644 --- a/test/DebugInfo/X86/debug-info-static-member.ll +++ b/test/DebugInfo/X86/debug-info-static-member.ll @@ -38,9 +38,9 @@ %class.C = type { i32 } -@_ZN1C1aE = global i32 4, align 4 -@_ZN1C1bE = global i32 2, align 4 -@_ZN1C1cE = global i32 1, align 4 +@_ZN1C1aE = global i32 4, align 4, !dbg !12 +@_ZN1C1bE = global i32 2, align 4, !dbg !27 +@_ZN1C1cE = global i32 1, align 4, !dbg !28 define i32 @main() nounwind uwtable !dbg !5 { entry: @@ -67,7 +67,7 @@ declare void @llvm.dbg.declare(metadata, metadata, metadata) nounwind readnone !8 = !{!9} !9 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed) !10 = !{!12, !27, !28} -!12 = !DIGlobalVariable(name: "a", linkageName: "_ZN1C1aE", line: 14, isLocal: false, isDefinition: true, scope: null, file: !6, type: !9, variable: i32* @_ZN1C1aE, declaration: !15) +!12 = !DIGlobalVariable(name: "a", linkageName: "_ZN1C1aE", line: 14, isLocal: false, isDefinition: true, scope: null, file: !6, type: !9, declaration: !15) !13 = !DICompositeType(tag: DW_TAG_class_type, name: "C", line: 1, size: 32, align: 32, file: !33, elements: !14) !14 = !{!15, !16, !19, !20, !23, !24, !26} !15 = !DIDerivedType(tag: DW_TAG_member, name: "a", line: 3, flags: DIFlagPrivate | DIFlagStaticMember, file: !33, scope: !13, baseType: !9) @@ -82,8 +82,8 @@ declare void @llvm.dbg.declare(metadata, metadata, metadata) nounwind readnone !24 = !DIDerivedType(tag: DW_TAG_member, name: "const_c", line: 10, flags: DIFlagPublic | DIFlagStaticMember, file: !33, scope: !13, baseType: !25, extraData: i32 18) !25 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !9) !26 = !DIDerivedType(tag: DW_TAG_member, name: "d", line: 11, size: 32, align: 32, flags: DIFlagPublic, file: !33, scope: !13, baseType: !9) -!27 = !DIGlobalVariable(name: "b", linkageName: "_ZN1C1bE", line: 15, isLocal: false, isDefinition: true, scope: null, file: !6, type: !9, variable: i32* @_ZN1C1bE, declaration: !19) -!28 = !DIGlobalVariable(name: "c", linkageName: "_ZN1C1cE", line: 16, isLocal: false, isDefinition: true, scope: null, file: !6, type: !9, variable: i32* @_ZN1C1cE, declaration: !23) +!27 = !DIGlobalVariable(name: "b", linkageName: "_ZN1C1bE", line: 15, isLocal: false, isDefinition: true, scope: null, file: !6, type: !9, declaration: !19) +!28 = !DIGlobalVariable(name: "c", linkageName: "_ZN1C1cE", line: 16, isLocal: false, isDefinition: true, scope: null, file: !6, type: !9, declaration: !23) !29 = !DILocalVariable(name: "instance_C", line: 20, scope: !5, file: !6, type: !13) !30 = !DILocation(line: 20, scope: !5) !31 = !DILocation(line: 21, scope: !5) diff --git a/test/DebugInfo/X86/debug-loc-frame.ll b/test/DebugInfo/X86/debug-loc-frame.ll index 9a6b6aa46d55d..905e35b1c7ab6 100644 --- a/test/DebugInfo/X86/debug-loc-frame.ll +++ b/test/DebugInfo/X86/debug-loc-frame.ll @@ -42,10 +42,10 @@ ; ModuleID = 'frame.c' source_filename = "frame.c" -@data = global i32 17, align 4 -@sum = local_unnamed_addr global i32 0, align 4 -@zero = local_unnamed_addr global i32 0, align 4 -@ptr = common local_unnamed_addr global i32* null, align 8 +@data = global i32 17, align 4, !dbg !4 +@sum = local_unnamed_addr global i32 0, align 4, !dbg !6 +@zero = local_unnamed_addr global i32 0, align 4, !dbg !7 +@ptr = common local_unnamed_addr global i32* null, align 8, !dbg !8 ; Function Attrs: nounwind uwtable define i32 @main() local_unnamed_addr !dbg !13 { @@ -83,11 +83,11 @@ declare void @llvm.dbg.value(metadata, i64, metadata, metadata) !1 = !DIFile(filename: "frame.c", directory: "/home/user/test") !2 = !{} !3 = !{!4, !6, !7, !8} -!4 = distinct !DIGlobalVariable(name: "data", scope: !0, file: !1, line: 1, type: !5, isLocal: false, isDefinition: true, variable: i32* @data) +!4 = distinct !DIGlobalVariable(name: "data", scope: !0, file: !1, line: 1, type: !5, isLocal: false, isDefinition: true) !5 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed) -!6 = distinct !DIGlobalVariable(name: "sum", scope: !0, file: !1, line: 2, type: !5, isLocal: false, isDefinition: true, variable: i32* @sum) -!7 = distinct !DIGlobalVariable(name: "zero", scope: !0, file: !1, line: 3, type: !5, isLocal: false, isDefinition: true, variable: i32* @zero) -!8 = distinct !DIGlobalVariable(name: "ptr", scope: !0, file: !1, line: 4, type: !9, isLocal: false, isDefinition: true, variable: i32** @ptr) +!6 = distinct !DIGlobalVariable(name: "sum", scope: !0, file: !1, line: 2, type: !5, isLocal: false, isDefinition: true) +!7 = distinct !DIGlobalVariable(name: "zero", scope: !0, file: !1, line: 3, type: !5, isLocal: false, isDefinition: true) +!8 = distinct !DIGlobalVariable(name: "ptr", scope: !0, file: !1, line: 4, type: !9, isLocal: false, isDefinition: true) !9 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !5, size: 64, align: 64) !10 = !{i32 2, !"Dwarf Version", i32 4} !11 = !{i32 2, !"Debug Info Version", i32 3} diff --git a/test/DebugInfo/X86/debugger-tune.ll b/test/DebugInfo/X86/debugger-tune.ll index 3c9288b18c785..9e82c493988ed 100644 --- a/test/DebugInfo/X86/debugger-tune.ll +++ b/test/DebugInfo/X86/debugger-tune.ll @@ -27,7 +27,7 @@ ; SCE-NOT: apple_names -@globalvar = global i32 0, align 4 +@globalvar = global i32 0, align 4, !dbg !4 !llvm.dbg.cu = !{!0} !llvm.module.flags = !{!6, !7} @@ -37,7 +37,7 @@ !1 = !DIFile(filename: "debugger-tune.cpp", directory: "/home/probinson/projects/scratch") !2 = !{} !3 = !{!4} -!4 = !DIGlobalVariable(name: "globalvar", scope: !0, file: !1, line: 1, type: !5, isLocal: false, isDefinition: true, variable: i32* @globalvar) +!4 = !DIGlobalVariable(name: "globalvar", scope: !0, file: !1, line: 1, type: !5, isLocal: false, isDefinition: true) !5 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed) !6 = !{i32 2, !"Dwarf Version", i32 4} !7 = !{i32 2, !"Debug Info Version", i32 3} diff --git a/test/DebugInfo/X86/decl-derived-member.ll b/test/DebugInfo/X86/decl-derived-member.ll index 730af8562c161..fec59f9ff2699 100644 --- a/test/DebugInfo/X86/decl-derived-member.ll +++ b/test/DebugInfo/X86/decl-derived-member.ll @@ -28,7 +28,7 @@ $_ZN3fooD2Ev = comdat any $_ZN4baseC2Ev = comdat any -@f = global %struct.foo zeroinitializer, align 8 +@f = global %struct.foo zeroinitializer, align 8, !dbg !29 @__dso_handle = external global i8 @_ZTV4base = external unnamed_addr constant [4 x i8*] @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @_GLOBAL__sub_I_decl_derived_member.cpp, i8* null }] @@ -128,7 +128,7 @@ attributes #4 = { "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "n !26 = distinct !DISubprogram(name: "", linkageName: "_GLOBAL__sub_I_decl_derived_member.cpp", isLocal: true, isDefinition: true, flags: DIFlagArtificial, isOptimized: false, unit: !0, file: !1, scope: !11, type: !27, variables: !2) !27 = !DISubroutineType(types: !2) !28 = !{!29} -!29 = !DIGlobalVariable(name: "f", line: 8, isLocal: false, isDefinition: true, scope: null, file: !11, type: !4, variable: %struct.foo* @f) +!29 = !DIGlobalVariable(name: "f", line: 8, isLocal: false, isDefinition: true, scope: null, file: !11, type: !4) !30 = !{i32 2, !"Dwarf Version", i32 4} !31 = !{i32 2, !"Debug Info Version", i32 3} !32 = !{!"clang version 3.7.0 (trunk 227104) (llvm/trunk 227103)"} diff --git a/test/DebugInfo/X86/dllimport.ll b/test/DebugInfo/X86/dllimport.ll index 60c3116cf2e7d..b809a9dc769ac 100644 --- a/test/DebugInfo/X86/dllimport.ll +++ b/test/DebugInfo/X86/dllimport.ll @@ -5,7 +5,7 @@ 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" -@"\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.module.flags = !{!13, !14} @@ -14,7 +14,7 @@ target triple = "i686-pc-windows-msvc" !1 = !DIFile(filename: "/usr/local/google/home/majnemer/Downloads/", directory: "/usr/local/google/home/majnemer/llvm/src") !2 = !{} !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") !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) diff --git a/test/DebugInfo/X86/dwarf-aranges-no-dwarf-labels.ll b/test/DebugInfo/X86/dwarf-aranges-no-dwarf-labels.ll index d9eb0ec84bf98..6be5d6169c0f1 100644 --- a/test/DebugInfo/X86/dwarf-aranges-no-dwarf-labels.ll +++ b/test/DebugInfo/X86/dwarf-aranges-no-dwarf-labels.ll @@ -23,7 +23,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 triple = "x86_64-unknown-linux-gnu" -@global = global i32 2, align 4 +@global = global i32 2, align 4, !dbg !18 ; Function Attrs: nounwind readnone uwtable define i32 @_Z3fooi(i32 %bar) #0 !dbg !4 { @@ -77,7 +77,7 @@ attributes #2 = { nounwind readnone } !15 = !DISubroutineType(types: !16) !16 = !{!8} !17 = !{!18} -!18 = !DIGlobalVariable(name: "global", line: 1, isLocal: false, isDefinition: true, scope: null, file: !5, type: !8, variable: i32* @global) +!18 = !DIGlobalVariable(name: "global", line: 1, isLocal: false, isDefinition: true, scope: null, file: !5, type: !8) !19 = !{i32 2, !"Dwarf Version", i32 4} !20 = !DILocation(line: 2, scope: !4) !21 = !DILocation(line: 3, scope: !11) diff --git a/test/DebugInfo/X86/dwarf-aranges.ll b/test/DebugInfo/X86/dwarf-aranges.ll index 2ec246724fe4b..d736b506819f4 100644 --- a/test/DebugInfo/X86/dwarf-aranges.ll +++ b/test/DebugInfo/X86/dwarf-aranges.ll @@ -44,9 +44,9 @@ target triple = "x86_64-unknown-linux-gnu" -@some_data = global i32 4, align 4 -@some_other = global i32 5, section "strange+section", align 4 -@some_bss = common global i32 0, align 4 +@some_data = global i32 4, align 4, !dbg !9 +@some_other = global i32 5, section "strange+section", align 4, !dbg !11 +@some_bss = common global i32 0, align 4, !dbg !12 define void @some_code() !dbg !4 { entry: @@ -70,10 +70,10 @@ entry: !6 = !DISubroutineType(types: !7) !7 = !{null} !8 = !{!9, !11, !12} -!9 = !DIGlobalVariable(name: "some_data", line: 1, isLocal: false, isDefinition: true, scope: null, file: !5, type: !10, variable: i32* @some_data) +!9 = !DIGlobalVariable(name: "some_data", line: 1, isLocal: false, isDefinition: true, scope: null, file: !5, type: !10) !10 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed) -!11 = !DIGlobalVariable(name: "some_other", line: 3, isLocal: false, isDefinition: true, scope: null, file: !5, type: !10, variable: i32* @some_other) -!12 = !DIGlobalVariable(name: "some_bss", line: 2, isLocal: false, isDefinition: true, scope: null, file: !5, type: !10, variable: i32* @some_bss) +!11 = !DIGlobalVariable(name: "some_other", line: 3, isLocal: false, isDefinition: true, scope: null, file: !5, type: !10) +!12 = !DIGlobalVariable(name: "some_bss", line: 2, isLocal: false, isDefinition: true, scope: null, file: !5, type: !10) !13 = !{i32 2, !"Dwarf Version", i32 4} !14 = !DILocation(line: 7, scope: !4) !15 = !DILocation(line: 8, scope: !4) diff --git a/test/DebugInfo/X86/dwarf-linkage-names.ll b/test/DebugInfo/X86/dwarf-linkage-names.ll index 9e89ee93cc014..a4437aa114742 100644 --- a/test/DebugInfo/X86/dwarf-linkage-names.ll +++ b/test/DebugInfo/X86/dwarf-linkage-names.ll @@ -38,7 +38,7 @@ ; NOLINKAGE-NOT: .asciz "_ZN4test10global_varE" ; NOLINKAGE-NOT: .asciz "_ZN4test3barEv" -@_ZN4test10global_varE = global i32 0, align 4 +@_ZN4test10global_varE = global i32 0, align 4, !dbg !10 ; Function Attrs: nounwind uwtable define i32 @_ZN4test3barEv() #0 !dbg !4 { @@ -62,7 +62,7 @@ attributes #0 = { nounwind uwtable "disable-tail-calls"="false" "less-precise-fp !7 = !{!8} !8 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed) !9 = !{!10} -!10 = !DIGlobalVariable(name: "global_var", linkageName: "_ZN4test10global_varE", scope: !5, file: !1, line: 2, type: !8, isLocal: false, isDefinition: true, variable: i32* @_ZN4test10global_varE) +!10 = !DIGlobalVariable(name: "global_var", linkageName: "_ZN4test10global_varE", scope: !5, file: !1, line: 2, type: !8, isLocal: false, isDefinition: true) !11 = !{i32 2, !"Dwarf Version", i32 4} !12 = !{i32 2, !"Debug Info Version", i32 3} !13 = !{!"clang version 3.8.0 (trunk 244662)"} diff --git a/test/DebugInfo/X86/dwarf-public-names.ll b/test/DebugInfo/X86/dwarf-public-names.ll index e6cdd7b336823..70fdb5b758cf2 100644 --- a/test/DebugInfo/X86/dwarf-public-names.ll +++ b/test/DebugInfo/X86/dwarf-public-names.ll @@ -57,9 +57,9 @@ %struct.C = type { i8 } -@_ZN1C22static_member_variableE = global i32 0, align 4 -@global_variable = global %struct.C zeroinitializer, align 1 -@_ZN2ns25global_namespace_variableE = global i32 1, align 4 +@_ZN1C22static_member_variableE = global i32 0, align 4, !dbg !25 +@global_variable = global %struct.C zeroinitializer, align 1, !dbg !26 +@_ZN2ns25global_namespace_variableE = global i32 1, align 4, !dbg !27 define void @_ZN1C15member_functionEv(%struct.C* %this) nounwind uwtable align 2 !dbg !3 { entry: @@ -120,9 +120,9 @@ attributes #1 = { nounwind readnone } !22 = !DISubroutineType(types: !23) !23 = !{null} !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) -!26 = !DIGlobalVariable(name: "global_variable", line: 17, isLocal: false, isDefinition: true, scope: null, file: !4, type: !8, variable: %struct.C* @global_variable) -!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) +!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) +!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) !29 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, baseType: !8) !30 = !DILocation(line: 9, scope: !3) diff --git a/test/DebugInfo/X86/empty-array.ll b/test/DebugInfo/X86/empty-array.ll index e927f9f587033..7c3cdc067422c 100644 --- a/test/DebugInfo/X86/empty-array.ll +++ b/test/DebugInfo/X86/empty-array.ll @@ -4,7 +4,7 @@ %class.A = type { [0 x i32] } -@a = global %class.A zeroinitializer, align 4 +@a = global %class.A zeroinitializer, align 4, !dbg !5 ; CHECK: DW_TAG_class_type ; CHECK: DW_TAG_member @@ -30,7 +30,7 @@ !0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang version 3.3 (trunk 169136)", isOptimized: false, emissionKind: FullDebug, file: !20, enums: !1, retainedTypes: !1, globals: !3, imports: !1) !1 = !{} !3 = !{!5} -!5 = !DIGlobalVariable(name: "a", line: 1, isLocal: false, isDefinition: true, scope: null, file: !6, type: !7, variable: %class.A* @a) +!5 = !DIGlobalVariable(name: "a", line: 1, isLocal: false, isDefinition: true, scope: null, file: !6, type: !7) !6 = !DIFile(filename: "t.cpp", directory: "/Volumes/Sandbox/llvm") !7 = !DICompositeType(tag: DW_TAG_class_type, name: "A", line: 1, align: 32, file: !20, elements: !8) !8 = !{!9, !14} diff --git a/test/DebugInfo/X86/enum-class.ll b/test/DebugInfo/X86/enum-class.ll index eaf43d2b8340e..247215deb9dc2 100644 --- a/test/DebugInfo/X86/enum-class.ll +++ b/test/DebugInfo/X86/enum-class.ll @@ -1,9 +1,9 @@ ; RUN: llc -O0 -mtriple=x86_64-apple-darwin %s -o %t -filetype=obj ; RUN: llvm-dwarfdump -debug-dump=info %t | FileCheck %s -@a = global i32 0, align 4 -@b = global i64 0, align 8 -@c = global i32 0, align 4 +@a = global i32 0, align 4, !dbg !19 +@b = global i64 0, align 8, !dbg !20 +@c = global i32 0, align 4, !dbg !21 !llvm.dbg.cu = !{!0} !llvm.module.flags = !{!23} @@ -24,9 +24,9 @@ !14 = !DIEnumerator(name: "C1", value: 1) ; [ DW_TAG_enumerator ] !15 = !{} !17 = !{!19, !20, !21} -!19 = !DIGlobalVariable(name: "a", line: 4, isLocal: false, isDefinition: true, scope: null, file: !4, type: !3, variable: i32* @a) -!20 = !DIGlobalVariable(name: "b", line: 5, isLocal: false, isDefinition: true, scope: null, file: !4, type: !8, variable: i64* @b) -!21 = !DIGlobalVariable(name: "c", line: 6, isLocal: false, isDefinition: true, scope: null, file: !4, type: !12, variable: i32* @c) +!19 = !DIGlobalVariable(name: "a", line: 4, isLocal: false, isDefinition: true, scope: null, file: !4, type: !3) +!20 = !DIGlobalVariable(name: "b", line: 5, isLocal: false, isDefinition: true, scope: null, file: !4, type: !8) +!21 = !DIGlobalVariable(name: "c", line: 6, isLocal: false, isDefinition: true, scope: null, file: !4, type: !12) !22 = !DIFile(filename: "foo.cpp", directory: "/Users/echristo/tmp") ; CHECK: DW_TAG_enumeration_type [{{.*}}] diff --git a/test/DebugInfo/X86/enum-fwd-decl.ll b/test/DebugInfo/X86/enum-fwd-decl.ll index c01f513e2638c..e05e105d27f69 100644 --- a/test/DebugInfo/X86/enum-fwd-decl.ll +++ b/test/DebugInfo/X86/enum-fwd-decl.ll @@ -1,7 +1,7 @@ ; RUN: llc -O0 -mtriple=x86_64-apple-darwin %s -o %t -filetype=obj ; RUN: llvm-dwarfdump -debug-dump=info %t | FileCheck %s -@e = global i16 0, align 2 +@e = global i16 0, align 2, !dbg !5 !llvm.dbg.cu = !{!0} !llvm.module.flags = !{!9} @@ -9,7 +9,7 @@ !0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang version 3.2 (trunk 165274) (llvm/trunk 165272)", isOptimized: false, emissionKind: FullDebug, file: !8, enums: !1, retainedTypes: !1, globals: !3, imports: !1) !1 = !{} !3 = !{!5} -!5 = !DIGlobalVariable(name: "e", line: 2, isLocal: false, isDefinition: true, scope: null, file: !6, type: !7, variable: i16* @e) +!5 = !DIGlobalVariable(name: "e", line: 2, isLocal: false, isDefinition: true, scope: null, file: !6, type: !7) !6 = !DIFile(filename: "foo.cpp", directory: "/tmp") !7 = !DICompositeType(tag: DW_TAG_enumeration_type, name: "E", line: 1, size: 16, align: 16, flags: DIFlagFwdDecl, file: !8) !8 = !DIFile(filename: "foo.cpp", directory: "/tmp") diff --git a/test/DebugInfo/X86/externaltyperef.ll b/test/DebugInfo/X86/externaltyperef.ll index 7d895597fc994..1bc69a970388a 100644 --- a/test/DebugInfo/X86/externaltyperef.ll +++ b/test/DebugInfo/X86/externaltyperef.ll @@ -26,7 +26,7 @@ target triple = "x86_64-apple-macosx10.10.0" %class.A = type opaque -@a = global %class.A* null, align 8 +@a = global %class.A* null, align 8, !dbg !6 !llvm.dbg.cu = !{!0} !llvm.module.flags = !{!13, !14, !15} @@ -38,7 +38,7 @@ target triple = "x86_64-apple-macosx10.10.0" !3 = !{!4, !9} !4 = !DICompositeType(tag: DW_TAG_class_type, name: "A", file: !1, flags: DIFlagExternalTypeRef, identifier: "_ZTS1A") !5 = !{!6} -!6 = !DIGlobalVariable(name: "a", scope: !0, file: !1, line: 2, type: !7, isLocal: false, isDefinition: true, variable: %class.A** @a) +!6 = !DIGlobalVariable(name: "a", scope: !0, file: !1, line: 2, type: !7, isLocal: false, isDefinition: true) !7 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64, align: 64) !8 = !DICompositeType(tag: DW_TAG_class_type, name: "B", file: !1, flags: DIFlagExternalTypeRef, identifier: "_ZTS1B") !9 = !DICompositeType(tag: DW_TAG_class_type, name: "A", file: !1, flags: DIFlagExternalTypeRef, identifier: "_ZTSN1N1BE") diff --git a/test/DebugInfo/X86/fission-cu.ll b/test/DebugInfo/X86/fission-cu.ll index 96bb6e227bc83..8d1e2f948104d 100644 --- a/test/DebugInfo/X86/fission-cu.ll +++ b/test/DebugInfo/X86/fission-cu.ll @@ -3,7 +3,7 @@ ; RUN: llvm-readobj --relocations %t | FileCheck --check-prefix=OBJ %s ; RUN: llvm-objdump -h %t | FileCheck --check-prefix=HDR %s -@a = common global i32 0, align 4 +@a = common global i32 0, align 4, !dbg !5 !llvm.dbg.cu = !{!0} !llvm.module.flags = !{!9} @@ -11,7 +11,7 @@ !0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.3 (trunk 169021) (llvm/trunk 169020)", isOptimized: false, splitDebugFilename: "baz.dwo", emissionKind: FullDebug, file: !8, enums: !1, retainedTypes: !1, globals: !3, imports: !1) !1 = !{} !3 = !{!5} -!5 = !DIGlobalVariable(name: "a", line: 1, isLocal: false, isDefinition: true, scope: null, file: !6, type: !7, variable: i32* @a) +!5 = !DIGlobalVariable(name: "a", line: 1, isLocal: false, isDefinition: true, scope: null, file: !6, type: !7) !6 = !DIFile(filename: "baz.c", directory: "/usr/local/google/home/echristo/tmp") !7 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed) !8 = !DIFile(filename: "baz.c", directory: "/usr/local/google/home/echristo/tmp") diff --git a/test/DebugInfo/X86/generate-odr-hash.ll b/test/DebugInfo/X86/generate-odr-hash.ll index a2ee2b9d3e72b..f8a7a29b8e724 100644 --- a/test/DebugInfo/X86/generate-odr-hash.ll +++ b/test/DebugInfo/X86/generate-odr-hash.ll @@ -173,10 +173,10 @@ %struct.anon = type { i32, i32 } %struct.baz = type { i8 } -@b = global %struct.bar zeroinitializer, align 1 -@_ZN7echidna8capybara8mongoose6animalE = global %"class.echidna::capybara::mongoose::fluffy" zeroinitializer, align 4 -@w = internal global %"struct.::walrus" zeroinitializer, align 1 -@wom = global %struct.wombat zeroinitializer, align 4 +@b = global %struct.bar zeroinitializer, align 1, !dbg !39 +@_ZN7echidna8capybara8mongoose6animalE = global %"class.echidna::capybara::mongoose::fluffy" zeroinitializer, align 4, !dbg !40 +@w = internal global %"struct.::walrus" zeroinitializer, align 1, !dbg !41 +@wom = global %struct.wombat zeroinitializer, align 4, !dbg !42 @llvm.global_ctors = appending global [1 x { i32, void ()* }] [{ i32, void ()* } { i32 65535, void ()* @_GLOBAL__I_a }] ; Function Attrs: nounwind uwtable @@ -256,10 +256,10 @@ attributes #1 = { nounwind readnone } !36 = distinct !DISubprogram(name: "", linkageName: "_GLOBAL__I_a", line: 25, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagArtificial, isOptimized: false, unit: !0, scopeLine: 25, file: !1, scope: !23, type: !37, variables: !2) !37 = !DISubroutineType(types: !2) !38 = !{!39, !40, !41, !42} -!39 = !DIGlobalVariable(name: "b", line: 3, isLocal: false, isDefinition: true, scope: null, file: !23, type: !4, variable: %struct.bar* @b) -!40 = !DIGlobalVariable(name: "animal", linkageName: "_ZN7echidna8capybara8mongoose6animalE", line: 18, isLocal: false, isDefinition: true, scope: !7, file: !23, type: !6, variable: %"class.echidna::capybara::mongoose::fluffy"* @_ZN7echidna8capybara8mongoose6animalE) -!41 = !DIGlobalVariable(name: "w", line: 29, isLocal: true, isDefinition: true, scope: null, file: !23, type: !28, variable: %"struct.::walrus"* @w) -!42 = !DIGlobalVariable(name: "wom", line: 38, isLocal: false, isDefinition: true, scope: null, file: !23, type: !14, variable: %struct.wombat* @wom) +!39 = !DIGlobalVariable(name: "b", line: 3, isLocal: false, isDefinition: true, scope: null, file: !23, type: !4) +!40 = !DIGlobalVariable(name: "animal", linkageName: "_ZN7echidna8capybara8mongoose6animalE", line: 18, isLocal: false, isDefinition: true, scope: !7, file: !23, type: !6) +!41 = !DIGlobalVariable(name: "w", line: 29, isLocal: true, isDefinition: true, scope: null, file: !23, type: !28) +!42 = !DIGlobalVariable(name: "wom", line: 38, isLocal: false, isDefinition: true, scope: null, file: !23, type: !14) !43 = !{i32 2, !"Dwarf Version", i32 4} !44 = !{i32 1, !"Debug Info Version", i32 3} !45 = !{!"clang version 3.5 "} diff --git a/test/DebugInfo/X86/gnu-public-names.ll b/test/DebugInfo/X86/gnu-public-names.ll index 026e086610572..dade8bb623142 100644 --- a/test/DebugInfo/X86/gnu-public-names.ll +++ b/test/DebugInfo/X86/gnu-public-names.ll @@ -230,14 +230,14 @@ %struct.C = type { i8 } %"struct.ns::D" = type { i32 } -@_ZN1C22static_member_variableE = global i32 0, align 4 -@global_variable = global %struct.C zeroinitializer, align 1 -@_ZN2ns25global_namespace_variableE = global i32 1, align 4 -@_ZN2ns1dE = global %"struct.ns::D" zeroinitializer, align 4 -@_ZZ2f3vE1z = internal global i32 0, align 4 -@_ZN12_GLOBAL__N_11iE = internal global i32 0, align 4 -@_ZN12_GLOBAL__N_15inner1bE = internal global i32 0, align 4 -@_ZN5outer12_GLOBAL__N_11cE = internal global i32 0, align 4 +@_ZN1C22static_member_variableE = global i32 0, align 4, !dbg !32 +@global_variable = global %struct.C zeroinitializer, align 1, !dbg !33 +@_ZN2ns25global_namespace_variableE = global i32 1, align 4, !dbg !34 +@_ZN2ns1dE = global %"struct.ns::D" zeroinitializer, align 4, !dbg !35 +@_ZZ2f3vE1z = internal global i32 0, align 4, !dbg !36 +@_ZN12_GLOBAL__N_11iE = internal global i32 0, align 4, !dbg !37 +@_ZN12_GLOBAL__N_15inner1bE = internal global i32 0, align 4, !dbg !39 +@_ZN5outer12_GLOBAL__N_11cE = internal global i32 0, align 4, !dbg !41 ; Function Attrs: nounwind uwtable define void @_ZN1C15member_functionEv(%struct.C* %this) #0 align 2 !dbg !20 { @@ -331,16 +331,16 @@ attributes #1 = { nounwind readnone } !29 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !7, size: 64, align: 64) !30 = distinct !DISubprogram(name: "f7", linkageName: "_Z2f7v", scope: !1, file: !1, line: 57, type: !13, isLocal: false, isDefinition: true, scopeLine: 57, flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2) !31 = !{!32, !33, !34, !35, !36, !37, !39, !41} -!32 = !DIGlobalVariable(name: "static_member_variable", linkageName: "_ZN1C22static_member_variableE", scope: !0, file: !1, line: 7, type: !7, isLocal: false, isDefinition: true, variable: i32* @_ZN1C22static_member_variableE, declaration: !6) -!33 = !DIGlobalVariable(name: "global_variable", scope: !0, file: !1, line: 17, type: !4, isLocal: false, isDefinition: true, variable: %struct.C* @global_variable) -!34 = !DIGlobalVariable(name: "global_namespace_variable", linkageName: "_ZN2ns25global_namespace_variableE", scope: !16, file: !1, line: 27, type: !7, isLocal: false, isDefinition: true, variable: i32* @_ZN2ns25global_namespace_variableE) -!35 = !DIGlobalVariable(name: "d", linkageName: "_ZN2ns1dE", scope: !16, file: !1, line: 31, type: !15, isLocal: false, isDefinition: true, variable: %"struct.ns::D"* @_ZN2ns1dE) -!36 = !DIGlobalVariable(name: "z", scope: !26, file: !1, line: 41, type: !7, isLocal: true, isDefinition: true, variable: i32* @_ZZ2f3vE1z) -!37 = !DIGlobalVariable(name: "i", linkageName: "_ZN12_GLOBAL__N_11iE", scope: !38, file: !1, line: 37, type: !7, isLocal: true, isDefinition: true, variable: i32* @_ZN12_GLOBAL__N_11iE) +!32 = !DIGlobalVariable(name: "static_member_variable", linkageName: "_ZN1C22static_member_variableE", scope: !0, file: !1, line: 7, type: !7, isLocal: false, isDefinition: true, declaration: !6) +!33 = !DIGlobalVariable(name: "global_variable", scope: !0, file: !1, line: 17, type: !4, isLocal: false, isDefinition: true) +!34 = !DIGlobalVariable(name: "global_namespace_variable", linkageName: "_ZN2ns25global_namespace_variableE", scope: !16, file: !1, line: 27, type: !7, isLocal: false, isDefinition: true) +!35 = !DIGlobalVariable(name: "d", linkageName: "_ZN2ns1dE", scope: !16, file: !1, line: 31, type: !15, isLocal: false, isDefinition: true) +!36 = !DIGlobalVariable(name: "z", scope: !26, file: !1, line: 41, type: !7, isLocal: true, isDefinition: true) +!37 = !DIGlobalVariable(name: "i", linkageName: "_ZN12_GLOBAL__N_11iE", scope: !38, file: !1, line: 37, type: !7, isLocal: true, isDefinition: true) !38 = !DINamespace(scope: null, file: !1, line: 36) -!39 = !DIGlobalVariable(name: "b", linkageName: "_ZN12_GLOBAL__N_15inner1bE", scope: !40, file: !1, line: 47, type: !7, isLocal: true, isDefinition: true, variable: i32* @_ZN12_GLOBAL__N_15inner1bE) +!39 = !DIGlobalVariable(name: "b", linkageName: "_ZN12_GLOBAL__N_15inner1bE", scope: !40, file: !1, line: 47, type: !7, isLocal: true, isDefinition: true) !40 = !DINamespace(name: "inner", scope: !38, file: !1, line: 46) -!41 = !DIGlobalVariable(name: "c", linkageName: "_ZN5outer12_GLOBAL__N_11cE", scope: !42, file: !1, line: 53, type: !7, isLocal: true, isDefinition: true, variable: i32* @_ZN5outer12_GLOBAL__N_11cE) +!41 = !DIGlobalVariable(name: "c", linkageName: "_ZN5outer12_GLOBAL__N_11cE", scope: !42, file: !1, line: 53, type: !7, isLocal: true, isDefinition: true) !42 = !DINamespace(scope: !43, file: !1, line: 52) !43 = !DINamespace(name: "outer", scope: null, file: !1, line: 51) !44 = !{!45, !47} diff --git a/test/DebugInfo/X86/inline-member-function.ll b/test/DebugInfo/X86/inline-member-function.ll index bdf0667cb060f..f4c18bb3168a3 100644 --- a/test/DebugInfo/X86/inline-member-function.ll +++ b/test/DebugInfo/X86/inline-member-function.ll @@ -34,7 +34,7 @@ %struct.foo = type { i8 } -@i = global i32 0, align 4 +@i = global i32 0, align 4, !dbg !19 ; Function Attrs: uwtable define i32 @main() #0 !dbg !13 { @@ -82,7 +82,7 @@ attributes #1 = { nounwind readnone } !16 = !{!9} !17 = distinct !DISubprogram(name: "func", linkageName: "_ZN3foo4funcEi", line: 2, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, unit: !0, scopeLine: 2, file: !1, scope: !4, type: !7, declaration: !6, variables: !2) !18 = !{!19} -!19 = !DIGlobalVariable(name: "i", line: 5, isLocal: false, isDefinition: true, scope: null, file: !14, type: !9, variable: i32* @i) +!19 = !DIGlobalVariable(name: "i", line: 5, isLocal: false, isDefinition: true, scope: null, file: !14, type: !9) !20 = !{i32 2, !"Dwarf Version", i32 4} !21 = !{i32 1, !"Debug Info Version", i32 3} !22 = !{!"clang version 3.5.0 "} diff --git a/test/DebugInfo/X86/inlined-indirect-value.ll b/test/DebugInfo/X86/inlined-indirect-value.ll index ea5d88a437420..c19bd15250df9 100644 --- a/test/DebugInfo/X86/inlined-indirect-value.ll +++ b/test/DebugInfo/X86/inlined-indirect-value.ll @@ -19,8 +19,8 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" target triple = "x86_64-unknown-linux-gnu" -@x = common global i32 0, align 4 -@y = common global i32 0, align 4 +@x = common global i32 0, align 4, !dbg !10 +@y = common global i32 0, align 4, !dbg !12 define i32 @main() !dbg !4 { ; CHECK: .loc 1 {{[89]}} @@ -58,9 +58,9 @@ select.end: ; preds = %entry, %select.mid !7 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed) !8 = distinct !DISubprogram(name: "f1", scope: !1, file: !1, line: 3, type: !5, isLocal: true, isDefinition: true, scopeLine: 3, isOptimized: true, unit: !0, variables: !2) !9 = !{!10, !12} -!10 = !DIGlobalVariable(name: "x", scope: !0, file: !1, line: 1, type: !11, isLocal: false, isDefinition: true, variable: i32* @x) +!10 = !DIGlobalVariable(name: "x", scope: !0, file: !1, line: 1, type: !11, isLocal: false, isDefinition: true) !11 = !DIDerivedType(tag: DW_TAG_volatile_type, baseType: !7) -!12 = !DIGlobalVariable(name: "y", scope: !0, file: !1, line: 2, type: !7, isLocal: false, isDefinition: true, variable: i32* @y) +!12 = !DIGlobalVariable(name: "y", scope: !0, file: !1, line: 2, type: !7, isLocal: false, isDefinition: true) !13 = !{i32 2, !"Dwarf Version", i32 4} !14 = !{i32 2, !"Debug Info Version", i32 3} !16 = !DILocation(line: 4, column: 9, scope: !17, inlinedAt: !18) diff --git a/test/DebugInfo/X86/isel-cse-line.ll b/test/DebugInfo/X86/isel-cse-line.ll index dfb058bea5b09..7140a4ddf42ec 100644 --- a/test/DebugInfo/X86/isel-cse-line.ll +++ b/test/DebugInfo/X86/isel-cse-line.ll @@ -31,8 +31,8 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" target triple = "x86_64-unknown-linux-gnu" -@glb_start = global i64 17, align 8 -@glb_end = global i64 42, align 8 +@glb_start = global i64 17, align 8, !dbg !7 +@glb_end = global i64 42, align 8, !dbg !10 ; Function Attrs: norecurse nounwind uwtable define i32 @main() !dbg !14 { @@ -73,10 +73,10 @@ declare void @llvm.dbg.declare(metadata, metadata, metadata) !4 = !DIDerivedType(tag: DW_TAG_typedef, name: "fp_t", file: !1, line: 1, baseType: !5) !5 = !DIBasicType(name: "double", size: 64, align: 64, encoding: DW_ATE_float) !6 = !{!7, !10} -!7 = distinct !DIGlobalVariable(name: "glb_start", scope: !0, file: !1, line: 4, type: !8, isLocal: false, isDefinition: true, variable: i64* @glb_start) +!7 = distinct !DIGlobalVariable(name: "glb_start", scope: !0, file: !1, line: 4, type: !8, isLocal: false, isDefinition: true) !8 = !DIDerivedType(tag: DW_TAG_typedef, name: "int_t", file: !1, line: 2, baseType: !9) !9 = !DIBasicType(name: "long unsigned int", size: 64, align: 64, encoding: DW_ATE_unsigned) -!10 = distinct !DIGlobalVariable(name: "glb_end", scope: !0, file: !1, line: 5, type: !8, isLocal: false, isDefinition: true, variable: i64* @glb_end) +!10 = distinct !DIGlobalVariable(name: "glb_end", scope: !0, file: !1, line: 5, type: !8, isLocal: false, isDefinition: true) !11 = !{i32 2, !"Dwarf Version", i32 4} !12 = !{i32 2, !"Debug Info Version", i32 3} !13 = !{!"clang version 3.9.0 (trunk 268246)"} diff --git a/test/DebugInfo/X86/linkage-name.ll b/test/DebugInfo/X86/linkage-name.ll index 295b898b4489b..a84cde7b6bba8 100644 --- a/test/DebugInfo/X86/linkage-name.ll +++ b/test/DebugInfo/X86/linkage-name.ll @@ -7,7 +7,7 @@ %class.A = type { i8 } -@a = global %class.A zeroinitializer, align 1 +@a = global %class.A zeroinitializer, align 1, !dbg !20 define i32 @_ZN1A1aEi(%class.A* %this, i32 %b) nounwind uwtable ssp align 2 !dbg !5 { entry: @@ -39,7 +39,7 @@ declare void @llvm.dbg.declare(metadata, metadata, metadata) nounwind readnone !12 = !{!13} !13 = !DISubprogram(name: "a", linkageName: "_ZN1A1aEi", line: 2, isLocal: false, isDefinition: false, virtualIndex: 6, flags: DIFlagPrivate | DIFlagPrototyped, isOptimized: false, file: !6, scope: !11, type: !7) !18 = !{!20} -!20 = !DIGlobalVariable(name: "a", line: 9, isLocal: false, isDefinition: true, scope: null, file: !6, type: !11, variable: %class.A* @a) +!20 = !DIGlobalVariable(name: "a", line: 9, isLocal: false, isDefinition: true, scope: null, file: !6, type: !11) !21 = !DILocalVariable(name: "this", line: 5, arg: 1, flags: DIFlagArtificial, scope: !5, file: !6, type: !22) !22 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, baseType: !11) !23 = !DILocation(line: 5, column: 8, scope: !5) diff --git a/test/DebugInfo/X86/live-debug-values.ll b/test/DebugInfo/X86/live-debug-values.ll index eca301017ae04..d7a829812eb5d 100644 --- a/test/DebugInfo/X86/live-debug-values.ll +++ b/test/DebugInfo/X86/live-debug-values.ll @@ -39,7 +39,7 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" 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 ; Function Attrs: nounwind uwtable @@ -119,7 +119,7 @@ attributes #4 = { nounwind } !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) !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} !18 = !{i32 2, !"Debug Info Version", i32 3} !19 = !{!"clang version 3.8.0 (trunk 253049) "} diff --git a/test/DebugInfo/X86/memberfnptr.ll b/test/DebugInfo/X86/memberfnptr.ll index bb6dca9eab9ac..6d548243bca49 100644 --- a/test/DebugInfo/X86/memberfnptr.ll +++ b/test/DebugInfo/X86/memberfnptr.ll @@ -16,7 +16,7 @@ target triple = "x86_64-apple-macosx" %struct.A = type { i8 } -@p = global { i64, i64 } { i64 ptrtoint (void (%struct.A*)* @_ZN1A3fooEv to i64), i64 0 }, align 8 +@p = global { i64, i64 } { i64 ptrtoint (void (%struct.A*)* @_ZN1A3fooEv to i64), i64 0 }, align 8, !dbg !11 declare void @_ZN1A3fooEv(%struct.A*) @@ -35,7 +35,7 @@ declare void @_ZN1A3fooEv(%struct.A*) !8 = !{null, !9} !9 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, flags: DIFlagArtificial | DIFlagObjectPointer, baseType: !4) !10 = !{!11} -!11 = !DIGlobalVariable(name: "p", line: 5, isLocal: false, isDefinition: true, scope: null, file: !12, type: !13, variable: { i64, i64 }* @p) +!11 = !DIGlobalVariable(name: "p", line: 5, isLocal: false, isDefinition: true, scope: null, file: !12, type: !13) !12 = !DIFile(filename: "memberfnptr.cpp", directory: "") !13 = !DIDerivedType(tag: DW_TAG_ptr_to_member_type, size: 64, baseType: !7, extraData: !4) !14 = !{i32 2, !"Dwarf Version", i32 2} diff --git a/test/DebugInfo/X86/misched-dbg-value.ll b/test/DebugInfo/X86/misched-dbg-value.ll index 96d59809bd725..5b923ff237e80 100644 --- a/test/DebugInfo/X86/misched-dbg-value.ll +++ b/test/DebugInfo/X86/misched-dbg-value.ll @@ -36,15 +36,15 @@ %struct.Record = type { %struct.Record*, i32, i32, i32, [31 x i8] } -@Version = global [4 x i8] c"1.1\00", align 1 -@IntGlob = common global i32 0, align 4 -@BoolGlob = common global i32 0, align 4 -@Char1Glob = common global i8 0, align 1 -@Char2Glob = common global i8 0, align 1 -@Array1Glob = common global [51 x i32] zeroinitializer, align 16 -@Array2Glob = common global [51 x [51 x i32]] zeroinitializer, align 16 -@PtrGlb = common global %struct.Record* null, align 8 -@PtrGlbNext = common global %struct.Record* null, align 8 +@Version = global [4 x i8] c"1.1\00", align 1, !dbg !30 +@IntGlob = common global i32 0, align 4, !dbg !35 +@BoolGlob = common global i32 0, align 4, !dbg !36 +@Char1Glob = common global i8 0, align 1, !dbg !38 +@Char2Glob = common global i8 0, align 1, !dbg !39 +@Array1Glob = common global [51 x i32] zeroinitializer, align 16, !dbg !40 +@Array2Glob = common global [51 x [51 x i32]] zeroinitializer, align 16, !dbg !42 +@PtrGlb = common global %struct.Record* null, align 8, !dbg !46 +@PtrGlbNext = common global %struct.Record* null, align 8, !dbg !63 define void @Proc8(i32* nocapture %Array1Par, [51 x i32]* nocapture %Array2Par, i32 %IntParI1, i32 %IntParI2) nounwind optsize !dbg !12 { entry: @@ -132,23 +132,23 @@ attributes #1 = { nounwind readnone } !27 = !DILocalVariable(name: "IntLoc", line: 186, scope: !12, file: !3, type: !21) !28 = !DILocalVariable(name: "IntIndex", line: 187, scope: !12, file: !3, type: !21) !29 = !{!30, !35, !36, !38, !39, !40, !42, !46, !63} -!30 = !DIGlobalVariable(name: "Version", line: 111, isLocal: false, isDefinition: true, scope: null, file: !3, type: !31, variable: [4 x i8]* @Version) +!30 = !DIGlobalVariable(name: "Version", line: 111, isLocal: false, isDefinition: true, scope: null, file: !3, type: !31) !31 = !DICompositeType(tag: DW_TAG_array_type, size: 32, align: 8, baseType: !32, elements: !33) !32 = !DIBasicType(tag: DW_TAG_base_type, name: "char", size: 8, align: 8, encoding: DW_ATE_signed_char) !33 = !{!34} !34 = !DISubrange(count: 4) -!35 = !DIGlobalVariable(name: "IntGlob", line: 171, isLocal: false, isDefinition: true, scope: null, file: !3, type: !16, variable: i32* @IntGlob) -!36 = !DIGlobalVariable(name: "BoolGlob", line: 172, isLocal: false, isDefinition: true, scope: null, file: !3, type: !37, variable: i32* @BoolGlob) +!35 = !DIGlobalVariable(name: "IntGlob", line: 171, isLocal: false, isDefinition: true, scope: null, file: !3, type: !16) +!36 = !DIGlobalVariable(name: "BoolGlob", line: 172, isLocal: false, isDefinition: true, scope: null, file: !3, type: !37) !37 = !DIDerivedType(tag: DW_TAG_typedef, name: "boolean", line: 149, file: !82, baseType: !16) -!38 = !DIGlobalVariable(name: "Char1Glob", line: 173, isLocal: false, isDefinition: true, scope: null, file: !3, type: !32, variable: i8* @Char1Glob) -!39 = !DIGlobalVariable(name: "Char2Glob", line: 174, isLocal: false, isDefinition: true, scope: null, file: !3, type: !32, variable: i8* @Char2Glob) -!40 = !DIGlobalVariable(name: "Array1Glob", line: 175, isLocal: false, isDefinition: true, scope: null, file: !3, type: !41, variable: [51 x i32]* @Array1Glob) +!38 = !DIGlobalVariable(name: "Char1Glob", line: 173, isLocal: false, isDefinition: true, scope: null, file: !3, type: !32) +!39 = !DIGlobalVariable(name: "Char2Glob", line: 174, isLocal: false, isDefinition: true, scope: null, file: !3, type: !32) +!40 = !DIGlobalVariable(name: "Array1Glob", line: 175, isLocal: false, isDefinition: true, scope: null, file: !3, type: !41) !41 = !DIDerivedType(tag: DW_TAG_typedef, name: "Array1Dim", line: 135, file: !82, baseType: !18) -!42 = !DIGlobalVariable(name: "Array2Glob", line: 176, isLocal: false, isDefinition: true, scope: null, file: !3, type: !43, variable: [51 x [51 x i32]]* @Array2Glob) +!42 = !DIGlobalVariable(name: "Array2Glob", line: 176, isLocal: false, isDefinition: true, scope: null, file: !3, type: !43) !43 = !DIDerivedType(tag: DW_TAG_typedef, name: "Array2Dim", line: 136, file: !82, baseType: !44) !44 = !DICompositeType(tag: DW_TAG_array_type, size: 83232, align: 32, baseType: !16, elements: !45) !45 = !{!20, !20} -!46 = !DIGlobalVariable(name: "PtrGlb", line: 177, isLocal: false, isDefinition: true, scope: null, file: !3, type: !47, variable: %struct.Record** @PtrGlb) +!46 = !DIGlobalVariable(name: "PtrGlb", line: 177, isLocal: false, isDefinition: true, scope: null, file: !3, type: !47) !47 = !DIDerivedType(tag: DW_TAG_typedef, name: "RecordPtr", line: 148, file: !82, baseType: !48) !48 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, baseType: !49) !49 = !DIDerivedType(tag: DW_TAG_typedef, name: "RecordType", line: 147, file: !82, baseType: !50) @@ -165,7 +165,7 @@ attributes #1 = { nounwind readnone } !60 = !DICompositeType(tag: DW_TAG_array_type, size: 248, align: 8, baseType: !32, elements: !61) !61 = !{!62} !62 = !DISubrange(count: 31) -!63 = !DIGlobalVariable(name: "PtrGlbNext", line: 178, isLocal: false, isDefinition: true, scope: null, file: !3, type: !47, variable: %struct.Record** @PtrGlbNext) +!63 = !DIGlobalVariable(name: "PtrGlbNext", line: 178, isLocal: false, isDefinition: true, scope: null, file: !3, type: !47) !64 = !DILocation(line: 181, scope: !12) !65 = !DILocation(line: 182, scope: !12) !66 = !DILocation(line: 183, scope: !12) diff --git a/test/DebugInfo/X86/multiple-aranges.ll b/test/DebugInfo/X86/multiple-aranges.ll index b07d7183b19b4..77e1eeea5a69d 100644 --- a/test/DebugInfo/X86/multiple-aranges.ll +++ b/test/DebugInfo/X86/multiple-aranges.ll @@ -38,8 +38,8 @@ ; ModuleID = 'test.bc' target triple = "x86_64-unknown-linux-gnu" -@kittens = global i32 4, align 4 -@rainbows = global i32 5, align 4 +@kittens = global i32 4, align 4, !dbg !4 +@rainbows = global i32 5, align 4, !dbg !10 !llvm.dbg.cu = !{!0, !7} !llvm.module.flags = !{!12, !13} @@ -48,13 +48,13 @@ target triple = "x86_64-unknown-linux-gnu" !1 = !DIFile(filename: "test1.c", directory: "/home/kayamon") !2 = !{} !3 = !{!4} -!4 = !DIGlobalVariable(name: "kittens", line: 1, isLocal: false, isDefinition: true, scope: null, file: !5, type: !6, variable: i32* @kittens) +!4 = !DIGlobalVariable(name: "kittens", line: 1, isLocal: false, isDefinition: true, scope: null, file: !5, type: !6) !5 = !DIFile(filename: "test1.c", directory: "/home/kayamon") !6 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed) !7 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.4 ", isOptimized: false, emissionKind: FullDebug, file: !8, enums: !2, retainedTypes: !2, globals: !9, imports: !2) !8 = !DIFile(filename: "test2.c", directory: "/home/kayamon") !9 = !{!10} -!10 = !DIGlobalVariable(name: "rainbows", line: 1, isLocal: false, isDefinition: true, scope: null, file: !11, type: !6, variable: i32* @rainbows) +!10 = !DIGlobalVariable(name: "rainbows", line: 1, isLocal: false, isDefinition: true, scope: null, file: !11, type: !6) !11 = !DIFile(filename: "test2.c", directory: "/home/kayamon") !12 = !{i32 2, !"Dwarf Version", i32 4} !13 = !{i32 1, !"Debug Info Version", i32 3} diff --git a/test/DebugInfo/X86/multiple-at-const-val.ll b/test/DebugInfo/X86/multiple-at-const-val.ll index 052d905af8013..fcfd48f84d6af 100644 --- a/test/DebugInfo/X86/multiple-at-const-val.ll +++ b/test/DebugInfo/X86/multiple-at-const-val.ll @@ -56,7 +56,7 @@ declare void @llvm.dbg.value(metadata, i64, metadata, metadata) nounwind readnon !960 = distinct !DISubprogram(name: "main", line: 73, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 73, file: !1802, scope: null, type: !54, variables: !955) !961 = !DIFile(filename: "student2.cpp", directory: "/privite/tmp") !1786 = !{!1800} -!1800 = !DIGlobalVariable(name: "badbit", linkageName: "badbit", line: 331, isLocal: true, isDefinition: true, scope: !5, file: !5, type: !78, variable: i32 1, declaration: !77) +!1800 = !DIGlobalVariable(name: "badbit", linkageName: "badbit", line: 331, isLocal: true, isDefinition: true, scope: !5, file: !5, type: !78, expr: !DIExpression(DW_OP_constu, 1, DW_OP_stack_value), declaration: !77) !1801 = !DIFile(filename: "os_base.h", directory: "/privite/tmp") !1802 = !DIFile(filename: "student2.cpp", directory: "/privite/tmp") !1803 = !{i32 1, !"Debug Info Version", i32 3} diff --git a/test/DebugInfo/X86/nondefault-subrange-array.ll b/test/DebugInfo/X86/nondefault-subrange-array.ll index ee5f2d9fe7379..9f1b2502d5a01 100644 --- a/test/DebugInfo/X86/nondefault-subrange-array.ll +++ b/test/DebugInfo/X86/nondefault-subrange-array.ll @@ -3,7 +3,7 @@ %class.A = type { [42 x i32] } -@a = global %class.A zeroinitializer, align 4 +@a = global %class.A zeroinitializer, align 4, !dbg !5 ; Check that we can handle non-default array bounds. In this case, the array ; goes from [-3, 38]. @@ -33,7 +33,7 @@ !0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang version 3.3 (trunk 169136)", isOptimized: false, emissionKind: FullDebug, file: !20, enums: !1, retainedTypes: !1, globals: !3, imports: !1) !1 = !{} !3 = !{!5} -!5 = !DIGlobalVariable(name: "a", line: 1, isLocal: false, isDefinition: true, scope: null, file: !6, type: !7, variable: %class.A* @a) +!5 = !DIGlobalVariable(name: "a", line: 1, isLocal: false, isDefinition: true, scope: null, file: !6, type: !7) !6 = !DIFile(filename: "t.cpp", directory: "/Volumes/Sandbox/llvm") !7 = !DICompositeType(tag: DW_TAG_class_type, name: "A", line: 1, align: 32, file: !20, elements: !8) !8 = !{!9, !14} diff --git a/test/DebugInfo/X86/objc-fwd-decl.ll b/test/DebugInfo/X86/objc-fwd-decl.ll index af12e16a800d0..9a6895a93675e 100644 --- a/test/DebugInfo/X86/objc-fwd-decl.ll +++ b/test/DebugInfo/X86/objc-fwd-decl.ll @@ -7,7 +7,7 @@ %0 = type opaque -@a = common global %0* null, align 8 +@a = common global %0* null, align 8, !dbg !5 !llvm.dbg.cu = !{!0} !llvm.module.flags = !{!9, !10, !11, !12, !14} @@ -15,7 +15,7 @@ !0 = distinct !DICompileUnit(language: DW_LANG_ObjC, producer: "clang version 3.1 (trunk 152054 trunk 152094)", isOptimized: false, runtimeVersion: 2, emissionKind: FullDebug, file: !13, enums: !1, retainedTypes: !1, globals: !3, imports: !1) !1 = !{} !3 = !{!5} -!5 = !DIGlobalVariable(name: "a", line: 3, isLocal: false, isDefinition: true, scope: null, file: !6, type: !7, variable: %0** @a) +!5 = !DIGlobalVariable(name: "a", line: 3, isLocal: false, isDefinition: true, scope: null, file: !6, type: !7) !6 = !DIFile(filename: "foo.m", directory: "/Users/echristo") !7 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, baseType: !8) !8 = !DICompositeType(tag: DW_TAG_structure_type, name: "FooBarBaz", line: 1, flags: DIFlagFwdDecl, runtimeLang: DW_LANG_ObjC, file: !13) diff --git a/test/DebugInfo/X86/pointer-type-size.ll b/test/DebugInfo/X86/pointer-type-size.ll index e26ea2ea648b0..6de3596c90545 100644 --- a/test/DebugInfo/X86/pointer-type-size.ll +++ b/test/DebugInfo/X86/pointer-type-size.ll @@ -6,7 +6,7 @@ %struct.crass = type { i8* } -@crass = common global %struct.crass zeroinitializer, align 8 +@crass = common global %struct.crass zeroinitializer, align 8, !dbg !5 !llvm.dbg.cu = !{!0} !llvm.module.flags = !{!14} @@ -14,7 +14,7 @@ !0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.1 (trunk 147882)", isOptimized: false, emissionKind: FullDebug, file: !13, enums: !1, retainedTypes: !1, globals: !3, imports: !1) !1 = !{} !3 = !{!5} -!5 = !DIGlobalVariable(name: "crass", line: 1, isLocal: false, isDefinition: true, scope: null, file: !6, type: !7, variable: %struct.crass* @crass) +!5 = !DIGlobalVariable(name: "crass", line: 1, isLocal: false, isDefinition: true, scope: null, file: !6, type: !7) !6 = !DIFile(filename: "foo.c", directory: "/Users/echristo/tmp") !7 = !DICompositeType(tag: DW_TAG_structure_type, name: "crass", line: 1, size: 64, align: 64, file: !13, elements: !8) !8 = !{!9} diff --git a/test/DebugInfo/X86/pr12831.ll b/test/DebugInfo/X86/pr12831.ll index 99decb6d5e948..2b0400d967b94 100644 --- a/test/DebugInfo/X86/pr12831.ll +++ b/test/DebugInfo/X86/pr12831.ll @@ -174,7 +174,7 @@ entry: !126 = distinct !DISubprogram(name: "function >", linkageName: "_ZN8functionIFvvEEC2IZN17BPLFunctionWriter9writeExprEvE3$_0EET_", line: 8, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, unit: !0, scopeLine: 8, file: !6, scope: null, type: !23, templateParams: !47, declaration: !22, variables: !1) !127 = distinct !DISubprogram(name: "_M_not_empty_function >", linkageName: "_ZN13_Base_manager21_M_not_empty_functionIZN17BPLFunctionWriter9writeExprEvE3$_0EEvRKT_", line: 3, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, unit: !0, scopeLine: 3, file: !6, scope: null, type: !117, templateParams: !120, declaration: !116, variables: !1) !128 = !{!130} -!130 = !DIGlobalVariable(name: "__stored_locally", linkageName: "__stored_locally", line: 2, isLocal: true, isDefinition: true, scope: !114, file: !6, type: !131, variable: i1 1) +!130 = !DIGlobalVariable(name: "__stored_locally", linkageName: "__stored_locally", line: 2, isLocal: true, isDefinition: true, scope: !114, file: !6, type: !131, expr: !DIExpression(DW_OP_constu, 1, DW_OP_stack_value)) !131 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !132) !132 = !DIBasicType(tag: DW_TAG_base_type, name: "bool", size: 8, align: 8, encoding: DW_ATE_boolean) !133 = !DILocalVariable(name: "this", line: 19, arg: 1, flags: DIFlagArtificial, scope: !5, file: !6, type: !134) diff --git a/test/DebugInfo/X86/ref_addr_relocation.ll b/test/DebugInfo/X86/ref_addr_relocation.ll index c6bf3cec67f65..167a154a3e35f 100644 --- a/test/DebugInfo/X86/ref_addr_relocation.ll +++ b/test/DebugInfo/X86/ref_addr_relocation.ll @@ -52,8 +52,8 @@ %struct.foo = type { i8 } -@f = global %struct.foo zeroinitializer, align 1 -@g = global %struct.foo zeroinitializer, align 1 +@f = global %struct.foo zeroinitializer, align 1, !dbg !7 +@g = global %struct.foo zeroinitializer, align 1, !dbg !12 !llvm.dbg.cu = !{!0, !9} !llvm.module.flags = !{!14, !15} @@ -65,12 +65,12 @@ !4 = !DICompositeType(tag: DW_TAG_structure_type, name: "foo", line: 1, size: 8, align: 8, file: !5, elements: !2, identifier: "_ZTS3foo") !5 = !DIFile(filename: "./hdr.h", directory: "/Users/manmanren/test-Nov/type_unique_air/ref_addr") !6 = !{!7} -!7 = !DIGlobalVariable(name: "f", line: 2, isLocal: false, isDefinition: true, scope: null, file: !8, type: !4, variable: %struct.foo* @f) +!7 = !DIGlobalVariable(name: "f", line: 2, isLocal: false, isDefinition: true, scope: null, file: !8, type: !4) !8 = !DIFile(filename: "tu1.cpp", directory: "/Users/manmanren/test-Nov/type_unique_air/ref_addr") !9 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang version 3.4 (trunk 191799)", isOptimized: false, emissionKind: FullDebug, file: !10, enums: !2, retainedTypes: !3, globals: !11, imports: !2) !10 = !DIFile(filename: "tu2.cpp", directory: "/Users/manmanren/test-Nov/type_unique_air/ref_addr") !11 = !{!12} -!12 = !DIGlobalVariable(name: "g", line: 2, isLocal: false, isDefinition: true, scope: null, file: !13, type: !4, variable: %struct.foo* @g) +!12 = !DIGlobalVariable(name: "g", line: 2, isLocal: false, isDefinition: true, scope: null, file: !13, type: !4) !13 = !DIFile(filename: "tu2.cpp", directory: "/Users/manmanren/test-Nov/type_unique_air/ref_addr") !14 = !{i32 2, !"Dwarf Version", i32 2} !15 = !{i32 1, !"Debug Info Version", i32 3} diff --git a/test/DebugInfo/X86/stack-value-dwarf4.ll b/test/DebugInfo/X86/stack-value-dwarf4.ll new file mode 100644 index 0000000000000..ad2aeb2e6af77 --- /dev/null +++ b/test/DebugInfo/X86/stack-value-dwarf4.ll @@ -0,0 +1,37 @@ +; RUN: llc -o - %s | FileCheck --check-prefix=CHECK-DWARF2 %s +; RUN: llc -dwarf-version=4 -o - %s | FileCheck --check-prefix=CHECK-DWARF4 %s + +target datalayout = "e-p:64:64" +target triple = "x86_64-unknown-linux-gnu" + +; CHECK-DWARF2: .byte 13 # DW_AT_location +; CHECK-DWARF2-NEXT: .byte 3 +; CHECK-DWARF2-NEXT: .quad g +; CHECK-DWARF2-NEXT: .byte 16 +; CHECK-DWARF2-NEXT: .byte 4 +; CHECK-DWARF2-NEXT: .byte 16 +; CHECK-DWARF2-NEXT: .byte 4 + +; CHECK-DWARF4: .byte 14 # DW_AT_location +; CHECK-DWARF4-NEXT: .byte 3 +; CHECK-DWARF4-NEXT: .quad g +; CHECK-DWARF4-NEXT: .byte 16 +; CHECK-DWARF4-NEXT: .byte 4 +; CHECK-DWARF4-NEXT: .byte 16 +; CHECK-DWARF4-NEXT: .byte 4 +; CHECK-DWARF4-NEXT: .byte 159 + +@g = global i32 0, !dbg !2 + +!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang", file: !4, globals: !1, emissionKind: FullDebug) +!1 = !{!2} +!2 = distinct !DIGlobalVariable(name: "a", scope: null, isLocal: false, isDefinition: true, expr: !3, type: !5) +!3 = !DIExpression(DW_OP_constu, 4, DW_OP_constu, 4, DW_OP_stack_value) +!4 = !DIFile(filename: "", directory: "/") +!5 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed) + +!6 = !{i32 2, !"Dwarf Version", i32 2} +!7 = !{i32 2, !"Debug Info Version", i32 3} + +!llvm.dbg.cu = !{!0} +!llvm.module.flags = !{!6, !7} diff --git a/test/DebugInfo/X86/stringpool.ll b/test/DebugInfo/X86/stringpool.ll index 970871c16d636..87d1c61966923 100644 --- a/test/DebugInfo/X86/stringpool.ll +++ b/test/DebugInfo/X86/stringpool.ll @@ -1,7 +1,7 @@ ; RUN: llc -mtriple=x86_64-unknown-linux-gnu < %s | FileCheck %s --check-prefix=LINUX ; RUN: llc -mtriple=x86_64-darwin < %s | FileCheck %s --check-prefix=DARWIN -@yyyy = common global i32 0, align 4 +@yyyy = common global i32 0, align 4, !dbg !5 !llvm.dbg.cu = !{!0} !llvm.module.flags = !{!9} @@ -9,7 +9,7 @@ !0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.1 (trunk 143009)", isOptimized: true, emissionKind: FullDebug, file: !8, enums: !1, retainedTypes: !1, globals: !3, imports: !1) !1 = !{} !3 = !{!5} -!5 = !DIGlobalVariable(name: "yyyy", line: 1, isLocal: false, isDefinition: true, scope: null, file: !6, type: !7, variable: i32* @yyyy) +!5 = !DIGlobalVariable(name: "yyyy", line: 1, isLocal: false, isDefinition: true, scope: null, file: !6, type: !7) !6 = !DIFile(filename: "z.c", directory: "/home/nicholas") !7 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed) !8 = !DIFile(filename: "z.c", directory: "/home/nicholas") diff --git a/test/DebugInfo/X86/struct-loc.ll b/test/DebugInfo/X86/struct-loc.ll index b5da5332b369a..b3acab087d98c 100644 --- a/test/DebugInfo/X86/struct-loc.ll +++ b/test/DebugInfo/X86/struct-loc.ll @@ -9,7 +9,7 @@ %struct.foo = type { i32 } -@f = common global %struct.foo zeroinitializer, align 4 +@f = common global %struct.foo zeroinitializer, align 4, !dbg !5 !llvm.dbg.cu = !{!0} !llvm.module.flags = !{!12} @@ -17,7 +17,7 @@ !0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.1 (trunk 152837) (llvm/trunk 152845)", isOptimized: false, emissionKind: FullDebug, file: !11, enums: !1, retainedTypes: !1, globals: !3, imports: !1) !1 = !{} !3 = !{!5} -!5 = !DIGlobalVariable(name: "f", line: 5, isLocal: false, isDefinition: true, scope: null, file: !6, type: !7, variable: %struct.foo* @f) +!5 = !DIGlobalVariable(name: "f", line: 5, isLocal: false, isDefinition: true, scope: null, file: !6, type: !7) !6 = !DIFile(filename: "struct_bug.c", directory: "/Users/echristo/tmp") !7 = !DICompositeType(tag: DW_TAG_structure_type, name: "foo", line: 1, size: 32, align: 32, file: !11, elements: !8) !8 = !{!9} diff --git a/test/DebugInfo/X86/template.ll b/test/DebugInfo/X86/template.ll index 337f2380cbfad..d17874db48ce3 100644 --- a/test/DebugInfo/X86/template.ll +++ b/test/DebugInfo/X86/template.ll @@ -60,8 +60,8 @@ %"struct.y_impl::nested" = type { i8 } -@glbl = global i32 0, align 4 -@n = global %"struct.y_impl::nested" zeroinitializer, align 1 +@glbl = global i32 0, align 4, !dbg !31 +@n = global %"struct.y_impl::nested" zeroinitializer, align 1, !dbg !32 @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @_GLOBAL__sub_I_template.cpp, i8* null }] define internal void @__cxx_global_var_init() section ".text.startup" !dbg !10 { @@ -119,8 +119,8 @@ attributes #0 = { nounwind uwtable "less-precise-fpmad"="false" "no-frame-pointe !28 = distinct !DISubprogram(name: "", linkageName: "_GLOBAL__sub_I_template.cpp", isLocal: true, isDefinition: true, flags: DIFlagArtificial, isOptimized: false, unit: !0, file: !1, scope: !11, type: !29, variables: !2) !29 = !DISubroutineType(types: !2) !30 = !{!31, !32} -!31 = !DIGlobalVariable(name: "glbl", line: 3, isLocal: false, isDefinition: true, scope: null, file: !11, type: !7, variable: i32* @glbl) -!32 = !DIGlobalVariable(name: "n", line: 4, isLocal: false, isDefinition: true, scope: null, file: !11, type: !8, variable: %"struct.y_impl::nested"* @n) +!31 = !DIGlobalVariable(name: "glbl", line: 3, isLocal: false, isDefinition: true, scope: null, file: !11, type: !7) +!32 = !DIGlobalVariable(name: "n", line: 4, isLocal: false, isDefinition: true, scope: null, file: !11, type: !8) !33 = !{i32 2, !"Dwarf Version", i32 4} !34 = !{i32 2, !"Debug Info Version", i32 3} !35 = !{!"clang version 3.6.0 (trunk 224394) (llvm/trunk 224384)"} diff --git a/test/DebugInfo/X86/tls.ll b/test/DebugInfo/X86/tls.ll index 5533c4588d380..40c356bdbc97f 100644 --- a/test/DebugInfo/X86/tls.ll +++ b/test/DebugInfo/X86/tls.ll @@ -96,8 +96,8 @@ ; template int func<&glbl>(); // create a second reference to 'glbl' -@tls = thread_local global i32 0, align 4 -@glbl = global i32 0, align 4 +@tls = thread_local global i32 0, align 4, !dbg !13 +@glbl = global i32 0, align 4, !dbg !14 ; Function Attrs: nounwind uwtable define weak_odr i32 @_Z4funcIXadL_Z4glblEEEiv() #0 !dbg !4 { @@ -123,8 +123,8 @@ attributes #0 = { nounwind uwtable "less-precise-fpmad"="false" "no-frame-pointe !10 = !DITemplateValueParameter(tag: DW_TAG_template_value_parameter, name: "I", type: !11, value: i32* @glbl) !11 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, baseType: !8) !12 = !{!13, !14} -!13 = !DIGlobalVariable(name: "tls", line: 1, isLocal: false, isDefinition: true, scope: null, file: !5, type: !8, variable: i32* @tls) -!14 = !DIGlobalVariable(name: "glbl", line: 2, isLocal: false, isDefinition: true, scope: null, file: !5, type: !8, variable: i32* @glbl) +!13 = !DIGlobalVariable(name: "tls", line: 1, isLocal: false, isDefinition: true, scope: null, file: !5, type: !8) +!14 = !DIGlobalVariable(name: "glbl", line: 2, isLocal: false, isDefinition: true, scope: null, file: !5, type: !8) !15 = !{i32 2, !"Dwarf Version", i32 4} !16 = !{i32 1, !"Debug Info Version", i32 3} !17 = !{!"clang version 3.5 "} diff --git a/test/DebugInfo/X86/type_units_with_addresses.ll b/test/DebugInfo/X86/type_units_with_addresses.ll index f75e32a601e70..e145626c09221 100644 --- a/test/DebugInfo/X86/type_units_with_addresses.ll +++ b/test/DebugInfo/X86/type_units_with_addresses.ll @@ -102,11 +102,11 @@ %struct.S4_1 = type { i8 } %struct.S4_2 = type { i8 } -@i = global i32 0, align 4 -@a = global %struct.S1 zeroinitializer, align 1 -@s2 = global %struct.S2 zeroinitializer, align 1 -@s3 = global %struct.S3 zeroinitializer, align 1 -@s4 = global %struct.S4 zeroinitializer, align 1 +@i = global i32 0, align 4, !dbg !28 +@a = global %struct.S1 zeroinitializer, align 1, !dbg !30 +@s2 = global %struct.S2 zeroinitializer, align 1, !dbg !31 +@s3 = global %struct.S3 zeroinitializer, align 1, !dbg !32 +@s4 = global %struct.S4 zeroinitializer, align 1, !dbg !33 !llvm.dbg.cu = !{!0} !llvm.module.flags = !{!34, !35} @@ -140,12 +140,12 @@ !25 = !{!26} !26 = !DITemplateValueParameter(tag: DW_TAG_template_value_parameter, name: "T", type: !7, value: i32* @i) !27 = !{!28, !30, !31, !32, !33} -!28 = !DIGlobalVariable(name: "i", line: 1, isLocal: false, isDefinition: true, scope: null, file: !29, type: !8, variable: i32* @i) +!28 = !DIGlobalVariable(name: "i", line: 1, isLocal: false, isDefinition: true, scope: null, file: !29, type: !8) !29 = !DIFile(filename: "tu.cpp", directory: "/tmp/dbginfo") -!30 = !DIGlobalVariable(name: "a", line: 6, isLocal: false, isDefinition: true, scope: null, file: !29, type: !4, variable: %struct.S1* @a) -!31 = !DIGlobalVariable(name: "s2", line: 15, isLocal: false, isDefinition: true, scope: null, file: !29, type: !9, variable: %struct.S2* @s2) -!32 = !DIGlobalVariable(name: "s3", line: 27, isLocal: false, isDefinition: true, scope: null, file: !29, type: !13, variable: %struct.S3* @s3) -!33 = !DIGlobalVariable(name: "s4", line: 39, isLocal: false, isDefinition: true, scope: null, file: !29, type: !19, variable: %struct.S4* @s4) +!30 = !DIGlobalVariable(name: "a", line: 6, isLocal: false, isDefinition: true, scope: null, file: !29, type: !4) +!31 = !DIGlobalVariable(name: "s2", line: 15, isLocal: false, isDefinition: true, scope: null, file: !29, type: !9) +!32 = !DIGlobalVariable(name: "s3", line: 27, isLocal: false, isDefinition: true, scope: null, file: !29, type: !13) +!33 = !DIGlobalVariable(name: "s4", line: 39, isLocal: false, isDefinition: true, scope: null, file: !29, type: !19) !34 = !{i32 2, !"Dwarf Version", i32 4} !35 = !{i32 1, !"Debug Info Version", i32 3} !36 = !{!"clang version 3.5.0 "} diff --git a/test/DebugInfo/X86/unattached-global.ll b/test/DebugInfo/X86/unattached-global.ll new file mode 100644 index 0000000000000..d271e4ea478d3 --- /dev/null +++ b/test/DebugInfo/X86/unattached-global.ll @@ -0,0 +1,19 @@ +; RUN: llc -o - %s | FileCheck %s + +target datalayout = "e-p:64:64" +target triple = "x86_64-unknown-linux-gnu" + +; CHECK: .byte 0 # DW_AT_location + +!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang", file: !4, globals: !1, emissionKind: FullDebug) +!1 = !{!2} +!2 = distinct !DIGlobalVariable(name: "a", scope: null, isLocal: false, isDefinition: true, expr: !3, type: !5) +!3 = !DIExpression(DW_OP_plus, 4) +!4 = !DIFile(filename: "", directory: "/") +!5 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed) + +!6 = !{i32 2, !"Dwarf Version", i32 2} +!7 = !{i32 2, !"Debug Info Version", i32 3} + +!llvm.dbg.cu = !{!0} +!llvm.module.flags = !{!6, !7} diff --git a/test/DebugInfo/X86/union-template.ll b/test/DebugInfo/X86/union-template.ll index 58d44c7890501..437d616aefb4d 100644 --- a/test/DebugInfo/X86/union-template.ll +++ b/test/DebugInfo/X86/union-template.ll @@ -9,7 +9,7 @@ %"union.PR15637::Value" = type { i32 } -@_ZN7PR156371fE = global %"union.PR15637::Value" zeroinitializer, align 4 +@_ZN7PR156371fE = global %"union.PR15637::Value" zeroinitializer, align 4, !dbg !10 define void @_ZN7PR156371gEf(float %value) #0 !dbg !4 { entry: @@ -38,7 +38,7 @@ attributes #1 = { nounwind readnone } !7 = !{null, !8} !8 = !DIBasicType(tag: DW_TAG_base_type, name: "float", size: 32, align: 32, encoding: DW_ATE_float) !9 = !{!10} -!10 = !DIGlobalVariable(name: "f", linkageName: "_ZN7PR156371fE", line: 6, isLocal: false, isDefinition: true, scope: !5, file: !11, type: !12, variable: %"union.PR15637::Value"* @_ZN7PR156371fE) +!10 = !DIGlobalVariable(name: "f", linkageName: "_ZN7PR156371fE", line: 6, isLocal: false, isDefinition: true, scope: !5, file: !11, type: !12) !11 = !DIFile(filename: "foo.cc", directory: "/usr/local/google/home/echristo/tmp") !12 = !DICompositeType(tag: DW_TAG_union_type, name: "Value", line: 2, size: 32, align: 32, file: !1, scope: !5, elements: !13, templateParams: !21) !13 = !{!14, !16} diff --git a/test/DebugInfo/X86/vector.ll b/test/DebugInfo/X86/vector.ll index 7d6abd787bf0e..3bd5e6ffbf4f6 100644 --- a/test/DebugInfo/X86/vector.ll +++ b/test/DebugInfo/X86/vector.ll @@ -7,7 +7,7 @@ ; ; v4si a -@a = common global <4 x i32> zeroinitializer, align 16 +@a = common global <4 x i32> zeroinitializer, align 16, !dbg !5 !llvm.dbg.cu = !{!0} !llvm.module.flags = !{!13} @@ -15,7 +15,7 @@ !0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.3 (trunk 171825) (llvm/trunk 171822)", isOptimized: false, emissionKind: FullDebug, file: !12, enums: !1, retainedTypes: !1, globals: !3, imports: !1) !1 = !{} !3 = !{!5} -!5 = !DIGlobalVariable(name: "a", line: 3, isLocal: false, isDefinition: true, scope: null, file: !6, type: !7, variable: <4 x i32>* @a) +!5 = !DIGlobalVariable(name: "a", line: 3, isLocal: false, isDefinition: true, scope: null, file: !6, type: !7) !6 = !DIFile(filename: "foo.c", directory: "/Users/echristo") !7 = !DIDerivedType(tag: DW_TAG_typedef, name: "v4si", line: 1, file: !12, baseType: !8) !8 = !DICompositeType(tag: DW_TAG_array_type, size: 128, align: 128, flags: DIFlagVector, baseType: !9, elements: !10) diff --git a/test/Linker/2011-08-04-Metadata.ll b/test/Linker/2011-08-04-Metadata.ll index dbc193af5b2b6..bbcc3fc7807fd 100644 --- a/test/Linker/2011-08-04-Metadata.ll +++ b/test/Linker/2011-08-04-Metadata.ll @@ -2,16 +2,17 @@ ; RUN: llvm-dis < %t.bc | FileCheck %s ; Test if internal global variable's debug info is merged appropriately or not. -; CHECK: !DIGlobalVariable(name: "x", +; CHECK: @x = internal global i32 0, align 4, !dbg [[DI1:![0-9]+]] +; CHECK: @x.1 = internal global i32 0, align 4, !dbg [[DI2:![0-9]+]] + +; CHECK: [[DI1]] = !DIGlobalVariable(name: "x", ; CHECK-NOT: linkageName: -; CHECK-SAME: variable: i32* @x{{[,)]}} -; CHECK: !DIGlobalVariable(name: "x", +; CHECK: [[DI2]] = !DIGlobalVariable(name: "x", ; CHECK-NOT: linkageName: -; CHECK-SAME: variable: i32* @x.1{{[,)]}} 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" target triple = "x86_64-apple-macosx10.7.0" -@x = internal global i32 0, align 4 +@x = internal global i32 0, align 4, !dbg !5 define void @foo() nounwind uwtable ssp !dbg !1 { entry: @@ -27,7 +28,7 @@ entry: !2 = !DIFile(filename: "/tmp/one.c", directory: "/Volumes/Lalgate/Slate/D") !3 = !DISubroutineType(types: !4) !4 = !{null} -!5 = !DIGlobalVariable(name: "x", line: 2, isLocal: true, isDefinition: true, scope: !0, file: !2, type: !6, variable: i32* @x) +!5 = !DIGlobalVariable(name: "x", line: 2, isLocal: true, isDefinition: true, scope: !0, file: !2, type: !6) !6 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed) !7 = !DILocation(line: 3, column: 14, scope: !8) !8 = distinct !DILexicalBlock(line: 3, column: 12, file: !9, scope: !1) diff --git a/test/Linker/2011-08-04-Metadata2.ll b/test/Linker/2011-08-04-Metadata2.ll index 12b0d4387fe8b..f15a8414089e0 100644 --- a/test/Linker/2011-08-04-Metadata2.ll +++ b/test/Linker/2011-08-04-Metadata2.ll @@ -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-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64" target triple = "x86_64-apple-macosx10.7.0" -@x = internal global i32 0, align 4 +@x = internal global i32 0, align 4, !dbg !5 define void @bar() nounwind uwtable ssp !dbg !1 { entry: @@ -22,7 +22,7 @@ entry: !2 = !DIFile(filename: "/tmp/two.c", directory: "/Volumes/Lalgate/Slate/D") !3 = !DISubroutineType(types: !4) !4 = !{null} -!5 = !DIGlobalVariable(name: "x", line: 1, isLocal: true, isDefinition: true, scope: !0, file: !2, type: !6, variable: i32* @x) +!5 = !DIGlobalVariable(name: "x", line: 1, isLocal: true, isDefinition: true, scope: !0, file: !2, type: !6) !6 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed) !7 = !DILocation(line: 2, column: 14, scope: !8) !8 = distinct !DILexicalBlock(line: 2, column: 12, file: !9, scope: !1) diff --git a/test/Linker/odr.ll b/test/Linker/odr.ll index db54995e7a476..a3ca855fa5f21 100644 --- a/test/Linker/odr.ll +++ b/test/Linker/odr.ll @@ -3,7 +3,7 @@ ; RUN: llvm-as %p/Inputs/odr.ll -o %t2.bc ; Check that we can link it ; RUN: llvm-link %t1.bc %t2.bc -o %t -@bar = global i64 0, align 8 +@bar = global i64 0, align 8, !dbg !6 !llvm.dbg.cu = !{!0} !llvm.module.flags = !{!7} @@ -14,5 +14,5 @@ !3 = distinct !DICompositeType(tag: DW_TAG_class_type, scope: !4, file: !1, identifier: "zed") !4 = distinct !DISubprogram(name: "b", scope: null, isLocal: false, isDefinition: true, isOptimized: false, unit: !0) !5 = !{!6} -!6 = distinct !DIGlobalVariable(name: "c", scope: null, isLocal: false, isDefinition: true, variable: i64* @bar) +!6 = distinct !DIGlobalVariable(name: "c", scope: null, isLocal: false, isDefinition: true) !7 = !{i32 2, !"Debug Info Version", i32 3} diff --git a/test/Linker/only-needed-debug-metadata.ll b/test/Linker/only-needed-debug-metadata.ll index 2f8858e4c6ea5..2d1949fb0ecf0 100644 --- a/test/Linker/only-needed-debug-metadata.ll +++ b/test/Linker/only-needed-debug-metadata.ll @@ -11,8 +11,8 @@ ; ONLYNEEDED: distinct !DISubprogram(name: "foo" ; ONLYNEEDED-NOT: distinct !DISubprogram(name: "unused" -@X = global i32 5 -@U = global i32 6 +@X = global i32 5, !dbg !14 +@U = global i32 6, !dbg !15 @U_linkonce = linkonce_odr hidden global i32 6 define i32 @foo() !dbg !4 { ret i32 7, !dbg !20 @@ -38,8 +38,8 @@ define i32 @unused() !dbg !10 { !11 = !DISubroutineType(types: !12) !12 = !{!7} !13 = !{!14, !15} -!14 = !DIGlobalVariable(name: "X", scope: !0, file: !1, line: 1, type: !7, isLocal: false, isDefinition: true, variable: i32* @X) -!15 = !DIGlobalVariable(name: "U", scope: !0, file: !1, line: 2, type: !7, isLocal: false, isDefinition: true, variable: i32* @U) +!14 = !DIGlobalVariable(name: "X", scope: !0, file: !1, line: 1, type: !7, isLocal: false, isDefinition: true) +!15 = !DIGlobalVariable(name: "U", scope: !0, file: !1, line: 2, type: !7, isLocal: false, isDefinition: true) !16 = !{i32 2, !"Dwarf Version", i32 4} !17 = !{i32 2, !"Debug Info Version", i32 3} !18 = !{!"clang version 3.8.0 (trunk 251407) (llvm/trunk 251401)"} diff --git a/test/ThinLTO/X86/Inputs/crash_debuginfo.ll b/test/ThinLTO/X86/Inputs/crash_debuginfo.ll index 9bb9a2fb0c5cc..2f707872911a9 100644 --- a/test/ThinLTO/X86/Inputs/crash_debuginfo.ll +++ b/test/ThinLTO/X86/Inputs/crash_debuginfo.ll @@ -17,7 +17,7 @@ define void @bar(i32 %arg) { !1 = !DIFile(filename: "2.cpp", directory: "some_dir") !2 = !{} !3 = !{!4} -!4 = distinct !DIGlobalVariable(name: "a_global", linkageName: "a_global", scope: null, line: 52, type: !5, isLocal: true, isDefinition: true, variable: %another_type** undef) +!4 = distinct !DIGlobalVariable(name: "a_global", linkageName: "a_global", scope: null, line: 52, type: !5, isLocal: true, isDefinition: true) !5 = !DISubroutineType(types: !2) !6 = !{i32 2, !"Debug Info Version", i32 3} !7 = distinct !DILocation(line: 728, column: 71, scope: !8, inlinedAt: !14) diff --git a/test/ThinLTO/X86/Inputs/drop-debug-info.ll b/test/ThinLTO/X86/Inputs/drop-debug-info.ll index 82a728e228616..b44bb81402e67 100644 --- a/test/ThinLTO/X86/Inputs/drop-debug-info.ll +++ b/test/ThinLTO/X86/Inputs/drop-debug-info.ll @@ -5,7 +5,7 @@ target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128" target triple = "x86_64-apple-macosx10.11.0" -@argc = global i8 0, align 1 +@argc = global i8 0, align 1, !dbg !21 define void @globalfunc() { entry: @@ -40,7 +40,7 @@ declare void @llvm.dbg.value(metadata, i64, metadata, metadata) !18 = !DILocalVariable(name: "c", line: 7, scope: !13, file: !14, type: !4) !19 = !DILocalVariable(name: "lc", line: 8, scope: !13, file: !14, type: !11) !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} !23 = !{i32 2, !"Debug Info Version", i32 0} !25 = !DILocation(line: 8, column: 3, scope: !13) diff --git a/test/ThinLTO/X86/crash_debuginfo.ll b/test/ThinLTO/X86/crash_debuginfo.ll index b250afab1ed68..b9063576c760e 100644 --- a/test/ThinLTO/X86/crash_debuginfo.ll +++ b/test/ThinLTO/X86/crash_debuginfo.ll @@ -29,7 +29,7 @@ declare void @bar(i32) !0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !1, producer: "Apple LLVM version 8.0.0 (clang-800.0.24.1)", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, globals: !2) !1 = !DIFile(filename: "1.cpp", directory: "/another_dir") !2 = !{!3} -!3 = distinct !DIGlobalVariable(name: "_", linkageName: "some_global", scope: null, file: !1, line: 20, type: !4, isLocal: true, isDefinition: true, variable: %some_type* undef) +!3 = distinct !DIGlobalVariable(name: "_", linkageName: "some_global", scope: null, file: !1, line: 20, type: !4, isLocal: true, isDefinition: true) !4 = distinct !DICompositeType(tag: DW_TAG_class_type, name: "slice_nil", file: !1, line: 13, size: 64, align: 64, elements: !5, identifier: "_ZTSN5boost6python3api9slice_nilE") !5 = !{} !6 = !{i32 2, !"Debug Info Version", i32 3} diff --git a/test/Transforms/GCOVProfiling/return-block.ll b/test/Transforms/GCOVProfiling/return-block.ll index 424e0b581f04f..51dde5724fe4b 100644 --- a/test/Transforms/GCOVProfiling/return-block.ll +++ b/test/Transforms/GCOVProfiling/return-block.ll @@ -22,7 +22,7 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" target triple = "x86_64-unknown-linux-gnu" -@A = common global i32 0, align 4 +@A = common global i32 0, align 4, !dbg !9 ; Function Attrs: nounwind uwtable define void @test() #0 !dbg !4 { @@ -61,7 +61,7 @@ attributes #2 = { nounwind } !6 = !DISubroutineType(types: !7) !7 = !{null} !8 = !{!9} -!9 = !DIGlobalVariable(name: "A", line: 3, isLocal: false, isDefinition: true, scope: null, file: !5, type: !10, variable: i32* @A) +!9 = !DIGlobalVariable(name: "A", line: 3, isLocal: false, isDefinition: true, scope: null, file: !5, type: !10) !10 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed) !11 = !{i32 2, !"Dwarf Version", i32 4} !12 = !{i32 2, !"Debug Info Version", i32 3} diff --git a/test/Transforms/GlobalMerge/debug-info.ll b/test/Transforms/GlobalMerge/debug-info.ll new file mode 100644 index 0000000000000..ba0109adf6209 --- /dev/null +++ b/test/Transforms/GlobalMerge/debug-info.ll @@ -0,0 +1,23 @@ +; RUN: opt -global-merge -global-merge-max-offset=100 -S -o - %s | FileCheck %s + +target datalayout = "e-p:64:64" +target triple = "x86_64-unknown-linux-gnu" + +; CHECK: @_MergedGlobals = private global { i32, i32 } { i32 1, i32 2 }, !dbg [[A:![0-9]+]], !dbg [[B:![0-9]+]] + +@a = internal global i32 1, !dbg !0 +@b = internal global i32 2, !dbg !1 + +define void @use1() { + %x = load i32, i32* @a + %y = load i32, i32* @b + ret void +} + +; CHECK: [[A]] = distinct !DIGlobalVariable(name: "a", scope: null, isLocal: false, isDefinition: true) +; CHECK: [[B]] = distinct !DIGlobalVariable(name: "b", scope: null, isLocal: false, isDefinition: true, expr: [[EXPR:![0-9]+]]) +; CHECK: [[EXPR]] = !DIExpression(DW_OP_plus, 4) + + +!0 = distinct !DIGlobalVariable(name: "a") +!1 = distinct !DIGlobalVariable(name: "b") diff --git a/test/Transforms/GlobalOpt/2009-03-05-dbg.ll b/test/Transforms/GlobalOpt/2009-03-05-dbg.ll index 3f6e269a960bf..587ec9bf7f36d 100644 --- a/test/Transforms/GlobalOpt/2009-03-05-dbg.ll +++ b/test/Transforms/GlobalOpt/2009-03-05-dbg.ll @@ -2,7 +2,7 @@ ; RUN: opt < %s -globalopt -stats -disable-output 2>&1 | FileCheck %s ; CHECK: 1 globalopt - Number of global vars shrunk to booleans -@Stop = internal global i32 0 ; [#uses=3] +@Stop = internal global i32 0, !dbg !0 ; [#uses=3] define i32 @foo(i32 %i) nounwind ssp { entry: @@ -55,7 +55,7 @@ return: ; preds = %bb2 declare void @llvm.dbg.value(metadata, i64, metadata, metadata) nounwind readnone !llvm.dbg.cu = !{!1} -!0 = !DIGlobalVariable(name: "Stop", line: 2, isLocal: true, isDefinition: true, scope: !1, file: !1, type: !2, variable: i32* @Stop) +!0 = !DIGlobalVariable(name: "Stop", line: 2, isLocal: true, isDefinition: true, scope: !1, file: !1, type: !2) !1 = distinct !DICompileUnit(language: DW_LANG_C89, producer: "4.2.1 (Based on Apple Inc. build 5658) (LLVM build)", isOptimized: true, emissionKind: FullDebug, file: !20, enums: !21, retainedTypes: !21, globals: !{!0}) !2 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed) !3 = !DILocalVariable(name: "i", line: 4, arg: 1, scope: !4, file: !1, type: !2) diff --git a/test/Transforms/Inline/alloca-dbgdeclare.ll b/test/Transforms/Inline/alloca-dbgdeclare.ll index d06a9299d92b4..44ca11adaf13b 100644 --- a/test/Transforms/Inline/alloca-dbgdeclare.ll +++ b/test/Transforms/Inline/alloca-dbgdeclare.ll @@ -21,8 +21,8 @@ target triple = "aarch64-apple-darwin" %struct.A = type { i32, [2 x double] } -@a = global %struct.A zeroinitializer, align 8 -@b = global %struct.A zeroinitializer, align 8 +@a = global %struct.A zeroinitializer, align 8, !dbg !26 +@b = global %struct.A zeroinitializer, align 8, !dbg !27 ; Function Attrs: nounwind declare void @_Z3fn31A(%struct.A* nocapture readonly %p1) #0 @@ -107,8 +107,8 @@ attributes #3 = { noreturn nounwind } !23 = !{null} !24 = distinct !DISubprogram(name: "fn5", linkageName: "_Z3fn5v", line: 13, isLocal: false, isDefinition: true, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 13, file: !5, scope: !16, type: !22, variables: !2) !25 = !{!26, !27} -!26 = !DIGlobalVariable(name: "a", line: 4, isLocal: false, isDefinition: true, scope: null, file: !16, type: !4, variable: %struct.A* @a) -!27 = !DIGlobalVariable(name: "b", line: 4, isLocal: false, isDefinition: true, scope: null, file: !16, type: !4, variable: %struct.A* @b) +!26 = !DIGlobalVariable(name: "a", line: 4, isLocal: false, isDefinition: true, scope: null, file: !16, type: !4) +!27 = !DIGlobalVariable(name: "b", line: 4, isLocal: false, isDefinition: true, scope: null, file: !16, type: !4) !28 = !{i32 2, !"Dwarf Version", i32 4} !29 = !{i32 2, !"Debug Info Version", i32 3} !30 = !{!"clang version 3.7.0 (trunk 227480) (llvm/trunk 227517)"} diff --git a/test/Transforms/LoopVectorize/dbg.value.ll b/test/Transforms/LoopVectorize/dbg.value.ll index d7d3ff6d9f968..c25801fc37b39 100644 --- a/test/Transforms/LoopVectorize/dbg.value.ll +++ b/test/Transforms/LoopVectorize/dbg.value.ll @@ -4,9 +4,9 @@ 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.8.0" -@A = global [1024 x i32] zeroinitializer, align 16 -@B = global [1024 x i32] zeroinitializer, align 16 -@C = global [1024 x i32] zeroinitializer, align 16 +@A = global [1024 x i32] zeroinitializer, align 16, !dbg !12 +@B = global [1024 x i32] zeroinitializer, align 16, !dbg !16 +@C = global [1024 x i32] zeroinitializer, align 16, !dbg !17 ; CHECK-LABEL: @test( define i32 @test() #0 !dbg !3 { @@ -55,12 +55,12 @@ attributes #1 = { nounwind readnone } !9 = !DILocalVariable(name: "i", line: 6, scope: !10, file: !4, type: !7) !10 = distinct !DILexicalBlock(line: 6, column: 0, file: !25, scope: !3) !11 = !{!12, !16, !17} -!12 = !DIGlobalVariable(name: "A", line: 1, isLocal: false, isDefinition: true, scope: null, file: !4, type: !13, variable: [1024 x i32]* @A) +!12 = !DIGlobalVariable(name: "A", line: 1, isLocal: false, isDefinition: true, scope: null, file: !4, type: !13) !13 = !DICompositeType(tag: DW_TAG_array_type, size: 32768, align: 32, baseType: !7, elements: !14) !14 = !{!15} !15 = !{i32 786465, i64 0, i64 1024} -!16 = !DIGlobalVariable(name: "B", line: 2, isLocal: false, isDefinition: true, scope: null, file: !4, type: !13, variable: [1024 x i32]* @B) -!17 = !DIGlobalVariable(name: "C", line: 3, isLocal: false, isDefinition: true, scope: null, file: !4, type: !13, variable: [1024 x i32]* @C) +!16 = !DIGlobalVariable(name: "B", line: 2, isLocal: false, isDefinition: true, scope: null, file: !4, type: !13) +!17 = !DIGlobalVariable(name: "C", line: 3, isLocal: false, isDefinition: true, scope: null, file: !4, type: !13) !18 = !DILocation(line: 6, scope: !10) !19 = !DILocation(line: 7, scope: !20) !20 = distinct !DILexicalBlock(line: 6, column: 0, file: !25, scope: !10) diff --git a/test/Transforms/SampleProfile/cov-zero-samples.ll b/test/Transforms/SampleProfile/cov-zero-samples.ll index dc3e6de8c3c9a..9ffa8ca36eebc 100644 --- a/test/Transforms/SampleProfile/cov-zero-samples.ll +++ b/test/Transforms/SampleProfile/cov-zero-samples.ll @@ -13,7 +13,7 @@ ; Coverage for this profile should be 100% ; CHECK-NOT: warning: cov-zero-samples.cc:1: -@N = global i64 8000000000, align 8 +@N = global i64 8000000000, align 8, !dbg !12 @.str = private unnamed_addr constant [11 x i8] c"sum is %d\0A\00", align 1 ; Function Attrs: nounwind uwtable @@ -98,7 +98,7 @@ declare i32 @printf(i8*, ...) !9 = !DISubroutineType(types: !10) !10 = !{!7} !11 = !{!12} -!12 = !DIGlobalVariable(name: "N", scope: !0, file: !1, line: 3, type: !13, isLocal: false, isDefinition: true, variable: i64* @N) +!12 = !DIGlobalVariable(name: "N", scope: !0, file: !1, line: 3, type: !13, isLocal: false, isDefinition: true) !13 = !DIDerivedType(tag: DW_TAG_volatile_type, baseType: !14) !14 = !DIBasicType(name: "long long int", size: 64, align: 64, encoding: DW_ATE_signed) !15 = !{i32 2, !"Dwarf Version", i32 4} diff --git a/test/Transforms/SimplifyCFG/PR27615-simplify-cond-br.ll b/test/Transforms/SimplifyCFG/PR27615-simplify-cond-br.ll index 872444d01655c..94e32dedb61a6 100644 --- a/test/Transforms/SimplifyCFG/PR27615-simplify-cond-br.ll +++ b/test/Transforms/SimplifyCFG/PR27615-simplify-cond-br.ll @@ -9,9 +9,9 @@ ; ModuleID = './csmith107.i.debug.ll' source_filename = "./csmith107.i.debug.ll" -@a = global i16 0 -@b = global i32 0 -@c = global i16* null +@a = global i16 0, !dbg !4 +@b = global i32 0, !dbg !6 +@c = global i16* null, !dbg !10 ; Function Attrs: nounwind @@ -46,13 +46,13 @@ declare void @llvm.dbg.value(metadata, i64, metadata, metadata) #4 !1 = !DIFile(filename: "csmith107.i.c", directory: "/tmp") !2 = !{} !3 = !{!4, !6, !10} -!4 = !DIGlobalVariable(name: "a", scope: null, file: !1, line: 2, type: !5, isLocal: false, isDefinition: true, variable: i16* @a) +!4 = !DIGlobalVariable(name: "a", scope: null, file: !1, line: 2, type: !5, isLocal: false, isDefinition: true) !5 = !DIBasicType(name: "int", size: 16, align: 16, encoding: DW_ATE_signed) -!6 = !DIGlobalVariable(name: "b", scope: null, file: !1, line: 3, type: !7, isLocal: false, isDefinition: true, variable: i32* @b) +!6 = !DIGlobalVariable(name: "b", scope: null, file: !1, line: 3, type: !7, isLocal: false, isDefinition: true) !7 = !DIDerivedType(tag: DW_TAG_typedef, name: "uint32_t", file: !1, line: 1, baseType: !8) !8 = !DIDerivedType(tag: DW_TAG_typedef, name: "__u32_t", file: !1, baseType: !9) !9 = !DIBasicType(name: "unsigned long", size: 32, align: 16, encoding: DW_ATE_unsigned) -!10 = !DIGlobalVariable(name: "c", scope: null, file: !1, line: 4, type: !11, isLocal: false, isDefinition: true, variable: i16** @c) +!10 = !DIGlobalVariable(name: "c", scope: null, file: !1, line: 4, type: !11, isLocal: false, isDefinition: true) !11 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !5, size: 16, align: 16) !12 = !{i32 2, !"Dwarf Version", i32 4} !13 = !{i32 2, !"Debug Info Version", i32 3} diff --git a/test/Transforms/StripSymbols/2010-06-30-StripDebug.ll b/test/Transforms/StripSymbols/2010-06-30-StripDebug.ll index cb6c26e9aa49a..0d08627907dae 100644 --- a/test/Transforms/StripSymbols/2010-06-30-StripDebug.ll +++ b/test/Transforms/StripSymbols/2010-06-30-StripDebug.ll @@ -2,7 +2,7 @@ ; CHECK-NOT: call void @llvm.dbg.value -@x = common global i32 0 ; [#uses=0] +@x = common global i32 0, !dbg !8 ; [#uses=0] define void @foo() nounwind readnone optsize ssp !dbg !0 { entry: @@ -23,7 +23,7 @@ declare void @llvm.dbg.value(metadata, i64, metadata, metadata) nounwind readnon !5 = !DILocalVariable(name: "y", line: 3, scope: !6, file: !1, type: !7) !6 = distinct !DILexicalBlock(line: 2, column: 0, file: !12, scope: !0) !7 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed) -!8 = !DIGlobalVariable(name: "x", line: 1, isLocal: false, isDefinition: true, scope: !1, file: !1, type: !7, variable: i32* @x) +!8 = !DIGlobalVariable(name: "x", line: 1, isLocal: false, isDefinition: true, scope: !1, file: !1, type: !7) !9 = !{i32 0} !10 = !DILocation(line: 3, scope: !6) !11 = !DILocation(line: 4, scope: !6) diff --git a/test/Transforms/StripSymbols/strip-dead-debug-info.ll b/test/Transforms/StripSymbols/strip-dead-debug-info.ll index 91074808df4d7..2116db49d00b8 100644 --- a/test/Transforms/StripSymbols/strip-dead-debug-info.ll +++ b/test/Transforms/StripSymbols/strip-dead-debug-info.ll @@ -4,7 +4,7 @@ ; CHECK-NOT: "bar" ; CHECK-NOT: "abcd" -@xyz = global i32 2 +@xyz = global i32 2, !dbg !17 ; Function Attrs: nounwind readnone declare void @llvm.dbg.value(metadata, i64, metadata, metadata) #0 @@ -47,7 +47,7 @@ attributes #2 = { nounwind readonly ssp } !14 = distinct !DILexicalBlock(line: 5, column: 0, file: !1, scope: !3) !15 = !DILocalVariable(name: "i", line: 7, arg: 1, scope: !10, file: !5, type: !9) !16 = !DIGlobalVariable(name: "abcd", line: 2, isLocal: true, isDefinition: true, scope: !5, file: !5, type: !9) -!17 = !DIGlobalVariable(name: "xyz", line: 3, isLocal: false, isDefinition: true, scope: !5, file: !5, type: !9, variable: i32* @xyz) +!17 = !DIGlobalVariable(name: "xyz", line: 3, isLocal: false, isDefinition: true, scope: !5, file: !5, type: !9) !18 = !DILocation(line: 6, scope: !19) !19 = distinct !DILexicalBlock(line: 6, column: 0, file: !1, scope: !6) !20 = !DILocation(line: 7, scope: !10) diff --git a/test/tools/llvm-objdump/Hexagon/source-interleave-hexagon.ll b/test/tools/llvm-objdump/Hexagon/source-interleave-hexagon.ll index 2e4e03565dafe..461db5a34391b 100644 --- a/test/tools/llvm-objdump/Hexagon/source-interleave-hexagon.ll +++ b/test/tools/llvm-objdump/Hexagon/source-interleave-hexagon.ll @@ -7,7 +7,7 @@ source_filename = "source-interleave-hexagon.c" target datalayout = "e-m:e-p:32:32:32-a:0-n16:32-i64:64:64-i32:32:32-i16:16:16-i1:8:8-f32:32:32-f64:64:64-v32:32:32-v64:64:64-v512:512:512-v1024:1024:1024-v2048:2048:2048" target triple = "hexagon-unknown--elf" -@a = global i32 1, align 4 +@a = global i32 1, align 4, !dbg !4 ; Function Attrs: nounwind define i32 @foo() #0 !dbg !9 { @@ -45,7 +45,7 @@ attributes #1 = { nounwind readnone } !1 = !DIFile(filename: "source-interleave-hexagon.c", directory: "SRC_COMPDIR") !2 = !{} !3 = !{!4} -!4 = distinct !DIGlobalVariable(name: "a", scope: !0, file: !1, line: 1, type: !5, isLocal: false, isDefinition: true, variable: i32* @a) +!4 = distinct !DIGlobalVariable(name: "a", scope: !0, file: !1, line: 1, type: !5, isLocal: false, isDefinition: true) !5 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed) !6 = !{i32 2, !"Dwarf Version", i32 4} !7 = !{i32 2, !"Debug Info Version", i32 3} diff --git a/test/tools/llvm-objdump/X86/source-interleave-x86_64.ll b/test/tools/llvm-objdump/X86/source-interleave-x86_64.ll index 6030a90215733..09f16365fe43f 100644 --- a/test/tools/llvm-objdump/X86/source-interleave-x86_64.ll +++ b/test/tools/llvm-objdump/X86/source-interleave-x86_64.ll @@ -8,7 +8,7 @@ source_filename = "source-interleave-x86_64.c" target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" target triple = "x86_64-unknown-linux-gnu" -@a = global i32 1, align 4 +@a = global i32 1, align 4, !dbg !4 ; Function Attrs: nounwind uwtable define i32 @foo() #0 !dbg !9 { @@ -46,7 +46,7 @@ attributes #1 = { nounwind readnone } !1 = !DIFile(filename: "source-interleave-x86_64.c", directory: "SRC_COMPDIR") !2 = !{} !3 = !{!4} -!4 = distinct !DIGlobalVariable(name: "a", scope: !0, file: !1, line: 1, type: !5, isLocal: false, isDefinition: true, variable: i32* @a) +!4 = distinct !DIGlobalVariable(name: "a", scope: !0, file: !1, line: 1, type: !5, isLocal: false, isDefinition: true) !5 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed) !6 = !{i32 2, !"Dwarf Version", i32 4} !7 = !{i32 2, !"Debug Info Version", i32 3} diff --git a/unittests/IR/MetadataTest.cpp b/unittests/IR/MetadataTest.cpp index def2ddee26251..4213d51ed2169 100644 --- a/unittests/IR/MetadataTest.cpp +++ b/unittests/IR/MetadataTest.cpp @@ -1820,13 +1820,14 @@ TEST_F(DIGlobalVariableTest, get) { DIType *Type = getDerivedType(); bool IsLocalToUnit = false; bool IsDefinition = true; - Constant *Variable = getConstant(); + auto *Expr = DIExpression::get(Context, {1, 2}); + auto *Expr2 = DIExpression::get(Context, {1, 2, 3}); DIDerivedType *StaticDataMemberDeclaration = cast(getDerivedType()); auto *N = DIGlobalVariable::get(Context, Scope, Name, LinkageName, File, Line, - Type, IsLocalToUnit, IsDefinition, Variable, - StaticDataMemberDeclaration); + Type, IsLocalToUnit, IsDefinition, + Expr, StaticDataMemberDeclaration); EXPECT_EQ(dwarf::DW_TAG_variable, N->getTag()); EXPECT_EQ(Scope, N->getScope()); EXPECT_EQ(Name, N->getName()); @@ -1836,47 +1837,46 @@ TEST_F(DIGlobalVariableTest, get) { EXPECT_EQ(Type, N->getType()); EXPECT_EQ(IsLocalToUnit, N->isLocalToUnit()); EXPECT_EQ(IsDefinition, N->isDefinition()); - EXPECT_EQ(Variable, N->getVariable()); + EXPECT_EQ(Expr, N->getExpr()); EXPECT_EQ(StaticDataMemberDeclaration, N->getStaticDataMemberDeclaration()); EXPECT_EQ(N, DIGlobalVariable::get(Context, Scope, Name, LinkageName, File, Line, Type, IsLocalToUnit, IsDefinition, - Variable, StaticDataMemberDeclaration)); + Expr, StaticDataMemberDeclaration)); EXPECT_NE(N, DIGlobalVariable::get(Context, getSubprogram(), Name, LinkageName, File, Line, Type, IsLocalToUnit, IsDefinition, - Variable, StaticDataMemberDeclaration)); + Expr, StaticDataMemberDeclaration)); EXPECT_NE(N, DIGlobalVariable::get(Context, Scope, "other", LinkageName, File, Line, Type, IsLocalToUnit, IsDefinition, - Variable, StaticDataMemberDeclaration)); + Expr, StaticDataMemberDeclaration)); EXPECT_NE(N, DIGlobalVariable::get(Context, Scope, Name, "other", File, Line, - Type, IsLocalToUnit, IsDefinition, - Variable, StaticDataMemberDeclaration)); + Type, IsLocalToUnit, IsDefinition, Expr, + StaticDataMemberDeclaration)); EXPECT_NE(N, DIGlobalVariable::get(Context, Scope, Name, LinkageName, getFile(), - Line, Type, IsLocalToUnit, IsDefinition, - Variable, StaticDataMemberDeclaration)); + Line, Type, IsLocalToUnit, IsDefinition, Expr, + StaticDataMemberDeclaration)); EXPECT_NE(N, DIGlobalVariable::get(Context, Scope, Name, LinkageName, File, Line + 1, Type, IsLocalToUnit, IsDefinition, - Variable, StaticDataMemberDeclaration)); + Expr, StaticDataMemberDeclaration)); EXPECT_NE(N, DIGlobalVariable::get(Context, Scope, Name, LinkageName, File, Line, getDerivedType(), IsLocalToUnit, IsDefinition, - Variable, StaticDataMemberDeclaration)); + Expr, StaticDataMemberDeclaration)); EXPECT_NE(N, DIGlobalVariable::get(Context, Scope, Name, LinkageName, File, Line, Type, !IsLocalToUnit, IsDefinition, - Variable, StaticDataMemberDeclaration)); + Expr, StaticDataMemberDeclaration)); EXPECT_NE(N, DIGlobalVariable::get(Context, Scope, Name, LinkageName, File, Line, Type, IsLocalToUnit, !IsDefinition, - Variable, StaticDataMemberDeclaration)); - EXPECT_NE(N, - DIGlobalVariable::get(Context, Scope, Name, LinkageName, File, Line, - Type, IsLocalToUnit, IsDefinition, - getConstant(), StaticDataMemberDeclaration)); + Expr, StaticDataMemberDeclaration)); + EXPECT_NE(N, DIGlobalVariable::get(Context, Scope, Name, LinkageName, File, + Line, Type, IsLocalToUnit, IsDefinition, + Expr2, StaticDataMemberDeclaration)); EXPECT_NE(N, DIGlobalVariable::get(Context, Scope, Name, LinkageName, File, Line, - Type, IsLocalToUnit, IsDefinition, Variable, + Type, IsLocalToUnit, IsDefinition, Expr, cast(getDerivedType()))); TempDIGlobalVariable Temp = N->clone(); diff --git a/unittests/IR/VerifierTest.cpp b/unittests/IR/VerifierTest.cpp index c33c92a6f7c58..96c32f2c8b300 100644 --- a/unittests/IR/VerifierTest.cpp +++ b/unittests/IR/VerifierTest.cpp @@ -121,31 +121,6 @@ TEST(VerifierTest, CrossModuleRef) { F3->eraseFromParent(); } -TEST(VerifierTest, CrossModuleMetadataRef) { - LLVMContext C; - Module M1("M1", C); - Module M2("M2", C); - GlobalVariable *newGV = - new GlobalVariable(M1, Type::getInt8Ty(C), false, - GlobalVariable::ExternalLinkage, nullptr, - "Some Global"); - - DIBuilder dbuilder(M2); - auto CU = dbuilder.createCompileUnit(dwarf::DW_LANG_Julia, "test.jl", ".", - "unittest", false, "", 0); - auto File = dbuilder.createFile("test.jl", "."); - auto Ty = dbuilder.createBasicType("Int8", 8, 8, dwarf::DW_ATE_signed); - dbuilder.createGlobalVariable(CU, "_SOME_GLOBAL", "_SOME_GLOBAL", File, 1, Ty, - false, newGV); - dbuilder.finalize(); - - std::string Error; - raw_string_ostream ErrorOS(Error); - EXPECT_TRUE(verifyModule(M2, &ErrorOS)); - EXPECT_TRUE(StringRef(ErrorOS.str()) - .startswith("Referencing global in another module!")); -} - TEST(VerifierTest, InvalidVariableLinkage) { LLVMContext C; Module M("M", C);