[llvm] r280700 - DebugInfo: use strongly typed enum for debug info flags
Leonid Kholodov via llvm-commits
llvm-commits at lists.llvm.org
Tue Sep 6 10:01:50 PDT 2016
Hi Mehdi,
Yes, I'll reformat it.
Best regards,
Leny Kholodov
On 9/6/16 19:08, Mehdi Amini wrote:
> Hi Leny,
>
> It is a good habit to mention in the commit message when it is a recommit of a patch that has been reverted.
>
> Also you should use clang-format (`git clang-format`) on patches, there are multiple issues with this commits, starting by breaking the 80 columns rules.
>
> Can you fix this please?
>
> Thanks,
>
> —
> Mehdi
>
>> On Sep 6, 2016, at 3:46 AM, Leny Kholodov via llvm-commits <llvm-commits at lists.llvm.org> wrote:
>>
>> Author: lkholodov
>> Date: Tue Sep 6 05:46:28 2016
>> New Revision: 280700
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=280700&view=rev
>> Log:
>> DebugInfo: use strongly typed enum for debug info flags
>>
>> Use ADT/BitmaskEnum for DINode::DIFlags for the following purposes:
>>
>> Get rid of unsigned int for flags to avoid problems on platforms with sizeof(int) < 4
>> Flags are now strongly typed
>> Patch by: Victor Leschuk <vleschuk at gmail.com>
>>
>> Differential Revision: https://reviews.llvm.org/D23766
>>
>>
>> Modified:
>> llvm/trunk/include/llvm/IR/DIBuilder.h
>> llvm/trunk/include/llvm/IR/DebugInfoFlags.def
>> llvm/trunk/include/llvm/IR/DebugInfoMetadata.h
>> llvm/trunk/lib/AsmParser/LLParser.cpp
>> llvm/trunk/lib/Bitcode/Reader/BitcodeReader.cpp
>> llvm/trunk/lib/IR/AsmWriter.cpp
>> llvm/trunk/lib/IR/DIBuilder.cpp
>> llvm/trunk/lib/IR/DebugInfoMetadata.cpp
>> llvm/trunk/unittests/IR/DebugInfoTest.cpp
>> llvm/trunk/unittests/IR/DebugTypeODRUniquingTest.cpp
>> llvm/trunk/unittests/IR/IRBuilderTest.cpp
>> llvm/trunk/unittests/IR/MetadataTest.cpp
>> llvm/trunk/unittests/Transforms/Utils/Cloning.cpp
>>
>> Modified: llvm/trunk/include/llvm/IR/DIBuilder.h
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/IR/DIBuilder.h?rev=280700&r1=280699&r2=280700&view=diff
>> ==============================================================================
>> --- llvm/trunk/include/llvm/IR/DIBuilder.h (original)
>> +++ llvm/trunk/include/llvm/IR/DIBuilder.h Tue Sep 6 05:46:28 2016
>> @@ -148,7 +148,7 @@ namespace llvm {
>> DIDerivedType *createMemberPointerType(DIType *PointeeTy, DIType *Class,
>> uint64_t SizeInBits,
>> uint64_t AlignInBits = 0,
>> - unsigned Flags = 0);
>> + DINode::DIFlags Flags = DINode::FlagZero);
>>
>> /// Create debugging information entry for a c++
>> /// style reference or rvalue reference type.
>> @@ -176,7 +176,8 @@ namespace llvm {
>> /// \param Flags Flags to describe inheritance attribute,
>> /// e.g. private
>> DIDerivedType *createInheritance(DIType *Ty, DIType *BaseTy,
>> - uint64_t BaseOffset, unsigned Flags);
>> + uint64_t BaseOffset,
>> + DINode::DIFlags Flags);
>>
>> /// Create debugging information entry for a member.
>> /// \param Scope Member scope.
>> @@ -191,7 +192,8 @@ namespace llvm {
>> DIDerivedType *createMemberType(DIScope *Scope, StringRef Name,
>> DIFile *File, unsigned LineNo,
>> uint64_t SizeInBits, uint64_t AlignInBits,
>> - uint64_t OffsetInBits, unsigned Flags,
>> + uint64_t OffsetInBits,
>> + DINode::DIFlags Flags,
>> DIType *Ty);
>>
>> /// Create debugging information entry for a bit field member.
>> @@ -208,7 +210,7 @@ namespace llvm {
>> DIDerivedType *createBitFieldMemberType(
>> DIScope *Scope, StringRef Name, DIFile *File, unsigned LineNo,
>> uint64_t SizeInBits, uint64_t AlignInBits, uint64_t OffsetInBits,
>> - uint64_t StorageOffsetInBits, unsigned Flags, DIType *Ty);
>> + uint64_t StorageOffsetInBits, DINode::DIFlags Flags, DIType *Ty);
>>
>> /// Create debugging information entry for a
>> /// C++ static data member.
>> @@ -221,7 +223,7 @@ namespace llvm {
>> /// \param Val Const initializer of the member.
>> DIDerivedType *createStaticMemberType(DIScope *Scope, StringRef Name,
>> DIFile *File, unsigned LineNo,
>> - DIType *Ty, unsigned Flags,
>> + DIType *Ty, DINode::DIFlags Flags,
>> llvm::Constant *Val);
>>
>> /// Create debugging information entry for Objective-C
>> @@ -237,7 +239,7 @@ namespace llvm {
>> /// \param PropertyNode Property associated with this ivar.
>> DIDerivedType *createObjCIVar(StringRef Name, DIFile *File, unsigned LineNo,
>> uint64_t SizeInBits, uint64_t AlignInBits,
>> - uint64_t OffsetInBits, unsigned Flags,
>> + uint64_t OffsetInBits, DINode::DIFlags Flags,
>> DIType *Ty, MDNode *PropertyNode);
>>
>> /// Create debugging information entry for Objective-C
>> @@ -274,7 +276,8 @@ namespace llvm {
>> DICompositeType *createClassType(DIScope *Scope, StringRef Name,
>> DIFile *File, unsigned LineNumber,
>> uint64_t SizeInBits, uint64_t AlignInBits,
>> - uint64_t OffsetInBits, unsigned Flags,
>> + uint64_t OffsetInBits,
>> + DINode::DIFlags Flags,
>> DIType *DerivedFrom, DINodeArray Elements,
>> DIType *VTableHolder = nullptr,
>> MDNode *TemplateParms = nullptr,
>> @@ -293,7 +296,7 @@ namespace llvm {
>> /// \param UniqueIdentifier A unique identifier for the struct.
>> DICompositeType *createStructType(
>> DIScope *Scope, StringRef Name, DIFile *File, unsigned LineNumber,
>> - uint64_t SizeInBits, uint64_t AlignInBits, unsigned Flags,
>> + uint64_t SizeInBits, uint64_t AlignInBits, DINode::DIFlags Flags,
>> DIType *DerivedFrom, DINodeArray Elements, unsigned RunTimeLang = 0,
>> DIType *VTableHolder = nullptr, StringRef UniqueIdentifier = "");
>>
>> @@ -311,7 +314,8 @@ namespace llvm {
>> DICompositeType *createUnionType(DIScope *Scope, StringRef Name,
>> DIFile *File, unsigned LineNumber,
>> uint64_t SizeInBits, uint64_t AlignInBits,
>> - unsigned Flags, DINodeArray Elements,
>> + DINode::DIFlags Flags,
>> + DINodeArray Elements,
>> unsigned RunTimeLang = 0,
>> StringRef UniqueIdentifier = "");
>>
>> @@ -393,7 +397,8 @@ namespace llvm {
>> /// These flags are used to emit dwarf attributes.
>> /// \param CC Calling convention, e.g. dwarf::DW_CC_normal
>> DISubroutineType *createSubroutineType(DITypeRefArray ParameterTypes,
>> - unsigned Flags = 0, unsigned CC = 0);
>> + DINode::DIFlags Flags = DINode::FlagZero,
>> + unsigned CC = 0);
>>
>> /// Create an external type reference.
>> /// \param Tag Dwarf TAG.
>> @@ -421,7 +426,7 @@ namespace llvm {
>> DICompositeType *createReplaceableCompositeType(
>> unsigned Tag, StringRef Name, DIScope *Scope, DIFile *F, unsigned Line,
>> unsigned RuntimeLang = 0, uint64_t SizeInBits = 0,
>> - uint64_t AlignInBits = 0, unsigned Flags = DINode::FlagFwdDecl,
>> + uint64_t AlignInBits = 0, DINode::DIFlags Flags = DINode::FlagFwdDecl,
>> StringRef UniqueIdentifier = "");
>>
>> /// Retain DIScope* in a module even if it is not referenced
>> @@ -480,7 +485,7 @@ namespace llvm {
>> DIFile *File, unsigned LineNo,
>> DIType *Ty,
>> bool AlwaysPreserve = false,
>> - unsigned Flags = 0);
>> + DINode::DIFlags Flags = DINode::FlagZero);
>>
>> /// Create a new descriptor for a parameter variable.
>> ///
>> @@ -497,7 +502,7 @@ namespace llvm {
>> unsigned ArgNo, DIFile *File,
>> unsigned LineNo, DIType *Ty,
>> bool AlwaysPreserve = false,
>> - unsigned Flags = 0);
>> + DINode::DIFlags Flags = DINode::FlagZero);
>>
>> /// Create a new descriptor for the specified
>> /// variable which has a complex address expression for its address.
>> @@ -532,7 +537,8 @@ namespace llvm {
>> StringRef LinkageName, DIFile *File,
>> unsigned LineNo, DISubroutineType *Ty,
>> bool isLocalToUnit, bool isDefinition,
>> - unsigned ScopeLine, unsigned Flags = 0,
>> + unsigned ScopeLine,
>> + DINode::DIFlags Flags = DINode::FlagZero,
>> bool isOptimized = false,
>> DITemplateParameterArray TParams = nullptr,
>> DISubprogram *Decl = nullptr);
>> @@ -542,7 +548,8 @@ namespace llvm {
>> DISubprogram *createTempFunctionFwdDecl(
>> DIScope *Scope, StringRef Name, StringRef LinkageName, DIFile *File,
>> unsigned LineNo, DISubroutineType *Ty, bool isLocalToUnit,
>> - bool isDefinition, unsigned ScopeLine, unsigned Flags = 0,
>> + bool isDefinition, unsigned ScopeLine,
>> + DINode::DIFlags Flags = DINode::FlagZero,
>> bool isOptimized = false, DITemplateParameterArray TParams = nullptr,
>> DISubprogram *Decl = nullptr);
>>
>> @@ -573,7 +580,8 @@ namespace llvm {
>> DIFile *File, unsigned LineNo, DISubroutineType *Ty,
>> bool isLocalToUnit, bool isDefinition, unsigned Virtuality = 0,
>> unsigned VTableIndex = 0, int ThisAdjustment = 0,
>> - DIType *VTableHolder = nullptr, unsigned Flags = 0,
>> + DIType *VTableHolder = nullptr,
>> + DINode::DIFlags Flags = DINode::FlagZero,
>> bool isOptimized = false,
>> DITemplateParameterArray TParams = nullptr);
>>
>>
>> Modified: llvm/trunk/include/llvm/IR/DebugInfoFlags.def
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/IR/DebugInfoFlags.def?rev=280700&r1=280699&r2=280700&view=diff
>> ==============================================================================
>> --- llvm/trunk/include/llvm/IR/DebugInfoFlags.def (original)
>> +++ llvm/trunk/include/llvm/IR/DebugInfoFlags.def Tue Sep 6 05:46:28 2016
>> @@ -16,6 +16,7 @@
>> #error "Missing macro definition of HANDLE_DI_FLAG"
>> #endif
>>
>> +HANDLE_DI_FLAG(0, Zero) // Use it as zero value. For example: void foo(DIFlags Flags = FlagZero).
>> HANDLE_DI_FLAG(1, Private)
>> HANDLE_DI_FLAG(2, Protected)
>> HANDLE_DI_FLAG(3, Public)
>> @@ -40,4 +41,11 @@ HANDLE_DI_FLAG((1 << 18), IntroducedVirt
>> HANDLE_DI_FLAG((1 << 19), BitField)
>> HANDLE_DI_FLAG((1 << 20), NoReturn)
>>
>> +#ifdef DI_FLAG_LARGEST_NEEDED
>> +// intended to be used with ADT/BitmaskEnum.h
>> +// NOTE: always must be equal to largest flag, check this when adding new flag
>> +HANDLE_DI_FLAG((1 << 20), Largest)
>> +#undef DI_FLAG_LARGEST_NEEDED
>> +#endif
>> +
>> #undef HANDLE_DI_FLAG
>>
>> Modified: llvm/trunk/include/llvm/IR/DebugInfoMetadata.h
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/IR/DebugInfoMetadata.h?rev=280700&r1=280699&r2=280700&view=diff
>> ==============================================================================
>> --- llvm/trunk/include/llvm/IR/DebugInfoMetadata.h (original)
>> +++ llvm/trunk/include/llvm/IR/DebugInfoMetadata.h Tue Sep 6 05:46:28 2016
>> @@ -16,6 +16,7 @@
>>
>> #include "llvm/IR/Metadata.h"
>> #include "llvm/Support/Dwarf.h"
>> +#include "llvm/ADT/BitmaskEnum.h"
>>
>> // Helper macros for defining get() overrides.
>> #define DEFINE_MDNODE_GET_UNPACK_IMPL(...) __VA_ARGS__
>> @@ -171,23 +172,25 @@ public:
>> ///
>> /// The three accessibility flags are mutually exclusive and rolled together
>> /// in the first two bits.
>> - enum DIFlags {
>> + enum DIFlags : uint32_t {
>> #define HANDLE_DI_FLAG(ID, NAME) Flag##NAME = ID,
>> +#define DI_FLAG_LARGEST_NEEDED
>> #include "llvm/IR/DebugInfoFlags.def"
>> FlagAccessibility = FlagPrivate | FlagProtected | FlagPublic,
>> FlagPtrToMemberRep = FlagSingleInheritance | FlagMultipleInheritance |
>> FlagVirtualInheritance,
>> + LLVM_MARK_AS_BITMASK_ENUM(FlagLargest)
>> };
>>
>> - static unsigned getFlag(StringRef Flag);
>> - static const char *getFlagString(unsigned Flag);
>> + static DIFlags getFlag(StringRef Flag);
>> + static const char *getFlagString(DIFlags Flag);
>>
>> /// \brief Split up a flags bitfield.
>> ///
>> /// Split \c Flags into \c SplitFlags, a vector of its components. Returns
>> /// any remaining (unrecognized) bits.
>> - static unsigned splitFlags(unsigned Flags,
>> - SmallVectorImpl<unsigned> &SplitFlags);
>> + static DIFlags splitFlags(DIFlags Flags,
>> + SmallVectorImpl<DIFlags> &SplitFlags);
>>
>> static bool classof(const Metadata *MD) {
>> switch (MD->getMetadataID()) {
>> @@ -508,7 +511,7 @@ StringRef DIScope::getDirectory() const
>> /// TODO: Split up flags.
>> class DIType : public DIScope {
>> unsigned Line;
>> - unsigned Flags;
>> + DIFlags Flags;
>> uint64_t SizeInBits;
>> uint64_t AlignInBits;
>> uint64_t OffsetInBits;
>> @@ -516,14 +519,14 @@ class DIType : public DIScope {
>> protected:
>> DIType(LLVMContext &C, unsigned ID, StorageType Storage, unsigned Tag,
>> unsigned Line, uint64_t SizeInBits, uint64_t AlignInBits,
>> - uint64_t OffsetInBits, unsigned Flags, ArrayRef<Metadata *> Ops)
>> + uint64_t OffsetInBits, DIFlags Flags, ArrayRef<Metadata *> Ops)
>> : DIScope(C, ID, Storage, Tag, Ops) {
>> init(Line, SizeInBits, AlignInBits, OffsetInBits, Flags);
>> }
>> ~DIType() = default;
>>
>> void init(unsigned Line, uint64_t SizeInBits, uint64_t AlignInBits,
>> - uint64_t OffsetInBits, unsigned Flags) {
>> + uint64_t OffsetInBits, DIFlags Flags) {
>> this->Line = Line;
>> this->Flags = Flags;
>> this->SizeInBits = SizeInBits;
>> @@ -533,7 +536,7 @@ protected:
>>
>> /// Change fields in place.
>> void mutate(unsigned Tag, unsigned Line, uint64_t SizeInBits,
>> - uint64_t AlignInBits, uint64_t OffsetInBits, unsigned Flags) {
>> + uint64_t AlignInBits, uint64_t OffsetInBits, DIFlags Flags) {
>> assert(isDistinct() && "Only distinct nodes can mutate");
>> setTag(Tag);
>> init(Line, SizeInBits, AlignInBits, OffsetInBits, Flags);
>> @@ -548,7 +551,7 @@ public:
>> uint64_t getSizeInBits() const { return SizeInBits; }
>> uint64_t getAlignInBits() const { return AlignInBits; }
>> uint64_t getOffsetInBits() const { return OffsetInBits; }
>> - unsigned getFlags() const { return Flags; }
>> + DIFlags getFlags() const { return Flags; }
>>
>> DIScopeRef getScope() const { return DIScopeRef(getRawScope()); }
>> StringRef getName() const { return getStringOperand(2); }
>> @@ -557,7 +560,7 @@ public:
>> Metadata *getRawScope() const { return getOperand(1); }
>> MDString *getRawName() const { return getOperandAs<MDString>(2); }
>>
>> - void setFlags(unsigned NewFlags) {
>> + void setFlags(DIFlags NewFlags) {
>> assert(!isUniqued() && "Cannot set flags on uniqued nodes");
>> Flags = NewFlags;
>> }
>> @@ -614,7 +617,7 @@ class DIBasicType : public DIType {
>> uint64_t SizeInBits, uint64_t AlignInBits, unsigned Encoding,
>> ArrayRef<Metadata *> Ops)
>> : DIType(C, DIBasicTypeKind, Storage, Tag, 0, SizeInBits, AlignInBits, 0,
>> - 0, Ops),
>> + FlagZero, Ops),
>> Encoding(Encoding) {}
>> ~DIBasicType() = default;
>>
>> @@ -668,7 +671,7 @@ class DIDerivedType : public DIType {
>>
>> DIDerivedType(LLVMContext &C, StorageType Storage, unsigned Tag,
>> unsigned Line, uint64_t SizeInBits, uint64_t AlignInBits,
>> - uint64_t OffsetInBits, unsigned Flags, ArrayRef<Metadata *> Ops)
>> + uint64_t OffsetInBits, DIFlags Flags, ArrayRef<Metadata *> Ops)
>> : DIType(C, DIDerivedTypeKind, Storage, Tag, Line, SizeInBits,
>> AlignInBits, OffsetInBits, Flags, Ops) {}
>> ~DIDerivedType() = default;
>> @@ -677,7 +680,7 @@ class DIDerivedType : public DIType {
>> StringRef Name, DIFile *File, unsigned Line,
>> DIScopeRef Scope, DITypeRef BaseType,
>> uint64_t SizeInBits, uint64_t AlignInBits,
>> - uint64_t OffsetInBits, unsigned Flags,
>> + uint64_t OffsetInBits, DIFlags Flags,
>> Metadata *ExtraData, StorageType Storage,
>> bool ShouldCreate = true) {
>> return getImpl(Context, Tag, getCanonicalMDString(Context, Name), File,
>> @@ -688,7 +691,7 @@ class DIDerivedType : public DIType {
>> MDString *Name, Metadata *File, unsigned Line,
>> Metadata *Scope, Metadata *BaseType,
>> uint64_t SizeInBits, uint64_t AlignInBits,
>> - uint64_t OffsetInBits, unsigned Flags,
>> + uint64_t OffsetInBits, DIFlags Flags,
>> Metadata *ExtraData, StorageType Storage,
>> bool ShouldCreate = true);
>>
>> @@ -704,7 +707,7 @@ public:
>> (unsigned Tag, MDString *Name, Metadata *File,
>> unsigned Line, Metadata *Scope, Metadata *BaseType,
>> uint64_t SizeInBits, uint64_t AlignInBits,
>> - uint64_t OffsetInBits, unsigned Flags,
>> + uint64_t OffsetInBits, DIFlags Flags,
>> Metadata *ExtraData = nullptr),
>> (Tag, Name, File, Line, Scope, BaseType, SizeInBits,
>> AlignInBits, OffsetInBits, Flags, ExtraData))
>> @@ -712,7 +715,7 @@ public:
>> (unsigned Tag, StringRef Name, DIFile *File, unsigned Line,
>> DIScopeRef Scope, DITypeRef BaseType, uint64_t SizeInBits,
>> uint64_t AlignInBits, uint64_t OffsetInBits,
>> - unsigned Flags, Metadata *ExtraData = nullptr),
>> + DIFlags Flags, Metadata *ExtraData = nullptr),
>> (Tag, Name, File, Line, Scope, BaseType, SizeInBits,
>> AlignInBits, OffsetInBits, Flags, ExtraData))
>>
>> @@ -772,7 +775,7 @@ class DICompositeType : public DIType {
>>
>> DICompositeType(LLVMContext &C, StorageType Storage, unsigned Tag,
>> unsigned Line, unsigned RuntimeLang, uint64_t SizeInBits,
>> - uint64_t AlignInBits, uint64_t OffsetInBits, unsigned Flags,
>> + uint64_t AlignInBits, uint64_t OffsetInBits, DIFlags Flags,
>> ArrayRef<Metadata *> Ops)
>> : DIType(C, DICompositeTypeKind, Storage, Tag, Line, SizeInBits,
>> AlignInBits, OffsetInBits, Flags, Ops),
>> @@ -782,7 +785,7 @@ class DICompositeType : public DIType {
>> /// Change fields in place.
>> void mutate(unsigned Tag, unsigned Line, unsigned RuntimeLang,
>> uint64_t SizeInBits, uint64_t AlignInBits, uint64_t OffsetInBits,
>> - unsigned Flags) {
>> + DIFlags Flags) {
>> assert(isDistinct() && "Only distinct nodes can mutate");
>> assert(getRawIdentifier() && "Only ODR-uniqued nodes should mutate");
>> this->RuntimeLang = RuntimeLang;
>> @@ -793,7 +796,7 @@ class DICompositeType : public DIType {
>> getImpl(LLVMContext &Context, unsigned Tag, StringRef Name, Metadata *File,
>> unsigned Line, DIScopeRef Scope, DITypeRef BaseType,
>> uint64_t SizeInBits, uint64_t AlignInBits, uint64_t OffsetInBits,
>> - uint64_t Flags, DINodeArray Elements, unsigned RuntimeLang,
>> + DIFlags Flags, DINodeArray Elements, unsigned RuntimeLang,
>> DITypeRef VTableHolder, DITemplateParameterArray TemplateParams,
>> StringRef Identifier, StorageType Storage, bool ShouldCreate = true) {
>> return getImpl(
>> @@ -806,7 +809,7 @@ class DICompositeType : public DIType {
>> getImpl(LLVMContext &Context, unsigned Tag, MDString *Name, Metadata *File,
>> unsigned Line, Metadata *Scope, Metadata *BaseType,
>> uint64_t SizeInBits, uint64_t AlignInBits, uint64_t OffsetInBits,
>> - unsigned Flags, Metadata *Elements, unsigned RuntimeLang,
>> + DIFlags Flags, Metadata *Elements, unsigned RuntimeLang,
>> Metadata *VTableHolder, Metadata *TemplateParams,
>> MDString *Identifier, StorageType Storage, bool ShouldCreate = true);
>>
>> @@ -823,7 +826,7 @@ public:
>> (unsigned Tag, StringRef Name, DIFile *File, unsigned Line,
>> DIScopeRef Scope, DITypeRef BaseType, uint64_t SizeInBits,
>> uint64_t AlignInBits, uint64_t OffsetInBits,
>> - unsigned Flags, DINodeArray Elements, unsigned RuntimeLang,
>> + DIFlags Flags, DINodeArray Elements, unsigned RuntimeLang,
>> DITypeRef VTableHolder,
>> DITemplateParameterArray TemplateParams = nullptr,
>> StringRef Identifier = ""),
>> @@ -834,7 +837,7 @@ public:
>> (unsigned Tag, MDString *Name, Metadata *File,
>> unsigned Line, Metadata *Scope, Metadata *BaseType,
>> uint64_t SizeInBits, uint64_t AlignInBits,
>> - uint64_t OffsetInBits, unsigned Flags, Metadata *Elements,
>> + uint64_t OffsetInBits, DIFlags Flags, Metadata *Elements,
>> unsigned RuntimeLang, Metadata *VTableHolder,
>> Metadata *TemplateParams = nullptr,
>> MDString *Identifier = nullptr),
>> @@ -855,7 +858,7 @@ public:
>> getODRType(LLVMContext &Context, MDString &Identifier, unsigned Tag,
>> MDString *Name, Metadata *File, unsigned Line, Metadata *Scope,
>> Metadata *BaseType, uint64_t SizeInBits, uint64_t AlignInBits,
>> - uint64_t OffsetInBits, unsigned Flags, Metadata *Elements,
>> + uint64_t OffsetInBits, DIFlags Flags, Metadata *Elements,
>> unsigned RuntimeLang, Metadata *VTableHolder,
>> Metadata *TemplateParams);
>> static DICompositeType *getODRTypeIfExists(LLVMContext &Context,
>> @@ -874,7 +877,7 @@ public:
>> buildODRType(LLVMContext &Context, MDString &Identifier, unsigned Tag,
>> MDString *Name, Metadata *File, unsigned Line, Metadata *Scope,
>> Metadata *BaseType, uint64_t SizeInBits, uint64_t AlignInBits,
>> - uint64_t OffsetInBits, unsigned Flags, Metadata *Elements,
>> + uint64_t OffsetInBits, DIFlags Flags, Metadata *Elements,
>> unsigned RuntimeLang, Metadata *VTableHolder,
>> Metadata *TemplateParams);
>>
>> @@ -933,20 +936,20 @@ class DISubroutineType : public DIType {
>> /// type dwarf::CallingConvention.
>> uint8_t CC;
>>
>> - DISubroutineType(LLVMContext &C, StorageType Storage, unsigned Flags,
>> + DISubroutineType(LLVMContext &C, StorageType Storage, DIFlags Flags,
>> uint8_t CC, ArrayRef<Metadata *> Ops)
>> : DIType(C, DISubroutineTypeKind, Storage, dwarf::DW_TAG_subroutine_type,
>> 0, 0, 0, 0, Flags, Ops),
>> CC(CC) {}
>> ~DISubroutineType() = default;
>>
>> - static DISubroutineType *getImpl(LLVMContext &Context, unsigned Flags,
>> + static DISubroutineType *getImpl(LLVMContext &Context, DIFlags Flags,
>> uint8_t CC, DITypeRefArray TypeArray,
>> StorageType Storage,
>> bool ShouldCreate = true) {
>> return getImpl(Context, Flags, CC, TypeArray.get(), Storage, ShouldCreate);
>> }
>> - static DISubroutineType *getImpl(LLVMContext &Context, unsigned Flags,
>> + static DISubroutineType *getImpl(LLVMContext &Context, DIFlags Flags,
>> uint8_t CC, Metadata *TypeArray,
>> StorageType Storage,
>> bool ShouldCreate = true);
>> @@ -957,10 +960,10 @@ class DISubroutineType : public DIType {
>>
>> public:
>> DEFINE_MDNODE_GET(DISubroutineType,
>> - (unsigned Flags, uint8_t CC, DITypeRefArray TypeArray),
>> + (DIFlags Flags, uint8_t CC, DITypeRefArray TypeArray),
>> (Flags, CC, TypeArray))
>> DEFINE_MDNODE_GET(DISubroutineType,
>> - (unsigned Flags, uint8_t CC, Metadata *TypeArray),
>> + (DIFlags Flags, uint8_t CC, Metadata *TypeArray),
>> (Flags, CC, TypeArray))
>>
>> TempDISubroutineType clone() const { return cloneImpl(); }
>> @@ -1299,8 +1302,6 @@ class DISubprogram : public DILocalScope
>> // in 2 bits (none/pure/pure_virtual).
>> unsigned Virtuality : 2;
>>
>> - unsigned Flags : 27;
>> -
>> // These are boolean flags so one bit is enough.
>> // MSVC starts a new container field every time the base
>> // type changes so we can't use 'bool' to ensure these bits
>> @@ -1309,19 +1310,22 @@ class DISubprogram : public DILocalScope
>> unsigned IsDefinition : 1;
>> unsigned IsOptimized : 1;
>>
>> + unsigned Padding : 3;
>> +
>> + DIFlags Flags;
>> +
>> DISubprogram(LLVMContext &C, StorageType Storage, unsigned Line,
>> unsigned ScopeLine, unsigned Virtuality, unsigned VirtualIndex,
>> - int ThisAdjustment, unsigned Flags, bool IsLocalToUnit,
>> + int ThisAdjustment, DIFlags Flags, bool IsLocalToUnit,
>> bool IsDefinition, bool IsOptimized, ArrayRef<Metadata *> Ops)
>> : DILocalScope(C, DISubprogramKind, Storage, dwarf::DW_TAG_subprogram,
>> Ops),
>> Line(Line), ScopeLine(ScopeLine), VirtualIndex(VirtualIndex),
>> - ThisAdjustment(ThisAdjustment), Virtuality(Virtuality), Flags(Flags),
>> + ThisAdjustment(ThisAdjustment), Virtuality(Virtuality),
>> IsLocalToUnit(IsLocalToUnit), IsDefinition(IsDefinition),
>> - IsOptimized(IsOptimized) {
>> + IsOptimized(IsOptimized), Flags(Flags) {
>> static_assert(dwarf::DW_VIRTUALITY_max < 4, "Virtuality out of range");
>> assert(Virtuality < 4 && "Virtuality out of range");
>> - assert((Flags < (1 << 27)) && "Flags out of range");
>> }
>> ~DISubprogram() = default;
>>
>> @@ -1330,7 +1334,7 @@ class DISubprogram : public DILocalScope
>> StringRef LinkageName, DIFile *File, unsigned Line,
>> DISubroutineType *Type, bool IsLocalToUnit, bool IsDefinition,
>> unsigned ScopeLine, DITypeRef ContainingType, unsigned Virtuality,
>> - unsigned VirtualIndex, int ThisAdjustment, unsigned Flags,
>> + unsigned VirtualIndex, int ThisAdjustment, DIFlags Flags,
>> bool IsOptimized, DICompileUnit *Unit,
>> DITemplateParameterArray TemplateParams, DISubprogram *Declaration,
>> DILocalVariableArray Variables, StorageType Storage,
>> @@ -1347,7 +1351,7 @@ class DISubprogram : public DILocalScope
>> MDString *LinkageName, Metadata *File, unsigned Line, Metadata *Type,
>> bool IsLocalToUnit, bool IsDefinition, unsigned ScopeLine,
>> Metadata *ContainingType, unsigned Virtuality, unsigned VirtualIndex,
>> - int ThisAdjustment, unsigned Flags, bool IsOptimized, Metadata *Unit,
>> + int ThisAdjustment, DIFlags Flags, bool IsOptimized, Metadata *Unit,
>> Metadata *TemplateParams, Metadata *Declaration, Metadata *Variables,
>> StorageType Storage, bool ShouldCreate = true);
>>
>> @@ -1366,7 +1370,7 @@ public:
>> DIFile *File, unsigned Line, DISubroutineType *Type,
>> bool IsLocalToUnit, bool IsDefinition, unsigned ScopeLine,
>> DITypeRef ContainingType, unsigned Virtuality,
>> - unsigned VirtualIndex, int ThisAdjustment, unsigned Flags,
>> + unsigned VirtualIndex, int ThisAdjustment, DIFlags Flags,
>> bool IsOptimized, DICompileUnit *Unit,
>> DITemplateParameterArray TemplateParams = nullptr,
>> DISubprogram *Declaration = nullptr,
>> @@ -1380,7 +1384,7 @@ public:
>> (Metadata * Scope, MDString *Name, MDString *LinkageName, Metadata *File,
>> unsigned Line, Metadata *Type, bool IsLocalToUnit, bool IsDefinition,
>> unsigned ScopeLine, Metadata *ContainingType, unsigned Virtuality,
>> - unsigned VirtualIndex, int ThisAdjustment, unsigned Flags,
>> + unsigned VirtualIndex, int ThisAdjustment, DIFlags Flags,
>> bool IsOptimized, Metadata *Unit, Metadata *TemplateParams = nullptr,
>> Metadata *Declaration = nullptr, Metadata *Variables = nullptr),
>> (Scope, Name, LinkageName, File, Line, Type, IsLocalToUnit, IsDefinition,
>> @@ -1395,12 +1399,12 @@ public:
>> unsigned getVirtualIndex() const { return VirtualIndex; }
>> int getThisAdjustment() const { return ThisAdjustment; }
>> unsigned getScopeLine() const { return ScopeLine; }
>> - unsigned getFlags() const { return Flags; }
>> + DIFlags getFlags() const { return Flags; }
>> bool isLocalToUnit() const { return IsLocalToUnit; }
>> bool isDefinition() const { return IsDefinition; }
>> bool isOptimized() const { return IsOptimized; }
>>
>> - unsigned isArtificial() const { return getFlags() & FlagArtificial; }
>> + bool isArtificial() const { return getFlags() & FlagArtificial; }
>> bool isPrivate() const {
>> return (getFlags() & FlagAccessibility) == FlagPrivate;
>> }
>> @@ -1417,7 +1421,7 @@ public:
>> ///
>> /// Return true if this subprogram is a C++11 reference-qualified non-static
>> /// member function (void foo() &).
>> - unsigned isLValueReference() const {
>> + bool isLValueReference() const {
>> return getFlags() & FlagLValueReference;
>> }
>>
>> @@ -1425,14 +1429,14 @@ public:
>> ///
>> /// Return true if this subprogram is a C++11 rvalue-reference-qualified
>> /// non-static member function (void foo() &&).
>> - unsigned isRValueReference() const {
>> + bool isRValueReference() const {
>> return getFlags() & FlagRValueReference;
>> }
>>
>> /// \brief Check if this is marked as noreturn.
>> ///
>> /// Return true if this subprogram is C++11 noreturn or C11 _Noreturn
>> - unsigned isNoReturn() const {
>> + bool isNoReturn() const {
>> return getFlags() & FlagNoReturn;
>> }
>>
>> @@ -1955,20 +1959,19 @@ class DILocalVariable : public DIVariabl
>> friend class MDNode;
>>
>> unsigned Arg : 16;
>> - unsigned Flags : 16;
>> + DIFlags Flags;
>>
>> DILocalVariable(LLVMContext &C, StorageType Storage, unsigned Line,
>> - unsigned Arg, unsigned Flags, ArrayRef<Metadata *> Ops)
>> + unsigned Arg, DIFlags Flags, ArrayRef<Metadata *> Ops)
>> : DIVariable(C, DILocalVariableKind, Storage, Line, Ops), Arg(Arg),
>> Flags(Flags) {
>> - assert(Flags < (1 << 16) && "DILocalVariable: Flags out of range");
>> assert(Arg < (1 << 16) && "DILocalVariable: Arg out of range");
>> }
>> ~DILocalVariable() = default;
>>
>> static DILocalVariable *getImpl(LLVMContext &Context, DIScope *Scope,
>> StringRef Name, DIFile *File, unsigned Line,
>> - DITypeRef Type, unsigned Arg, unsigned Flags,
>> + DITypeRef Type, unsigned Arg, DIFlags Flags,
>> StorageType Storage,
>> bool ShouldCreate = true) {
>> return getImpl(Context, Scope, getCanonicalMDString(Context, Name), File,
>> @@ -1976,7 +1979,7 @@ class DILocalVariable : public DIVariabl
>> }
>> static DILocalVariable *getImpl(LLVMContext &Context, Metadata *Scope,
>> MDString *Name, Metadata *File, unsigned Line,
>> - Metadata *Type, unsigned Arg, unsigned Flags,
>> + Metadata *Type, unsigned Arg, DIFlags Flags,
>> StorageType Storage,
>> bool ShouldCreate = true);
>>
>> @@ -1988,13 +1991,11 @@ class DILocalVariable : public DIVariabl
>> public:
>> DEFINE_MDNODE_GET(DILocalVariable,
>> (DILocalScope * Scope, StringRef Name, DIFile *File,
>> - unsigned Line, DITypeRef Type, unsigned Arg,
>> - unsigned Flags),
>> + unsigned Line, DITypeRef Type, unsigned Arg, DIFlags Flags),
>> (Scope, Name, File, Line, Type, Arg, Flags))
>> DEFINE_MDNODE_GET(DILocalVariable,
>> (Metadata * Scope, MDString *Name, Metadata *File,
>> - unsigned Line, Metadata *Type, unsigned Arg,
>> - unsigned Flags),
>> + unsigned Line, Metadata *Type, unsigned Arg, DIFlags Flags),
>> (Scope, Name, File, Line, Type, Arg, Flags))
>>
>> TempDILocalVariable clone() const { return cloneImpl(); }
>> @@ -2008,7 +2009,7 @@ public:
>>
>> bool isParameter() const { return Arg; }
>> unsigned getArg() const { return Arg; }
>> - unsigned getFlags() const { return Flags; }
>> + DIFlags getFlags() const { return Flags; }
>>
>> bool isArtificial() const { return getFlags() & FlagArtificial; }
>> bool isObjectPointer() const { return getFlags() & FlagObjectPointer; }
>>
>> Modified: llvm/trunk/lib/AsmParser/LLParser.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/AsmParser/LLParser.cpp?rev=280700&r1=280699&r2=280700&view=diff
>> ==============================================================================
>> --- llvm/trunk/lib/AsmParser/LLParser.cpp (original)
>> +++ llvm/trunk/lib/AsmParser/LLParser.cpp Tue Sep 6 05:46:28 2016
>> @@ -1271,7 +1271,7 @@ bool LLParser::ParseStringConstant(std::
>>
>> /// ParseUInt32
>> /// ::= uint32
>> -bool LLParser::ParseUInt32(unsigned &Val) {
>> +bool LLParser::ParseUInt32(uint32_t &Val) {
>> if (Lex.getKind() != lltok::APSInt || Lex.getAPSIntVal().isSigned())
>> return TokError("expected integer");
>> uint64_t Val64 = Lex.getAPSIntVal().getLimitedValue(0xFFFFFFFFULL+1);
>> @@ -3407,8 +3407,8 @@ struct EmissionKindField : public MDUnsi
>> EmissionKindField() : MDUnsignedField(0, DICompileUnit::LastEmissionKind) {}
>> };
>>
>> -struct DIFlagField : public MDUnsignedField {
>> - DIFlagField() : MDUnsignedField(0, UINT32_MAX) {}
>> +struct DIFlagField : public MDFieldImpl<DINode::DIFlags> {
>> + DIFlagField() : MDFieldImpl(DINode::FlagZero) {}
>> };
>>
>> struct MDSignedField : public MDFieldImpl<int64_t> {
>> @@ -3610,12 +3610,15 @@ bool LLParser::ParseMDField(LocTy Loc, S
>> /// ::= DIFlagVector '|' DIFlagFwdDecl '|' uint32 '|' DIFlagPublic
>> template <>
>> bool LLParser::ParseMDField(LocTy Loc, StringRef Name, DIFlagField &Result) {
>> - assert(Result.Max == UINT32_MAX && "Expected only 32-bits");
>>
>> // Parser for a single flag.
>> - auto parseFlag = [&](unsigned &Val) {
>> - if (Lex.getKind() == lltok::APSInt && !Lex.getAPSIntVal().isSigned())
>> - return ParseUInt32(Val);
>> + auto parseFlag = [&](DINode::DIFlags &Val) {
>> + if (Lex.getKind() == lltok::APSInt && !Lex.getAPSIntVal().isSigned()) {
>> + uint32_t TempVal = static_cast<uint32_t>(Val);
>> + bool Res = ParseUInt32(TempVal);
>> + Val = static_cast<DINode::DIFlags>(TempVal);
>> + return Res;
>> + }
>>
>> if (Lex.getKind() != lltok::DIFlag)
>> return TokError("expected debug info flag");
>> @@ -3629,9 +3632,9 @@ bool LLParser::ParseMDField(LocTy Loc, S
>> };
>>
>> // Parse the flags and combine them together.
>> - unsigned Combined = 0;
>> + DINode::DIFlags Combined = DINode::FlagZero;
>> do {
>> - unsigned Val;
>> + DINode::DIFlags Val;
>> if (parseFlag(Val))
>> return true;
>> Combined |= Val;
>>
>> Modified: llvm/trunk/lib/Bitcode/Reader/BitcodeReader.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Bitcode/Reader/BitcodeReader.cpp?rev=280700&r1=280699&r2=280700&view=diff
>> ==============================================================================
>> --- llvm/trunk/lib/Bitcode/Reader/BitcodeReader.cpp (original)
>> +++ llvm/trunk/lib/Bitcode/Reader/BitcodeReader.cpp Tue Sep 6 05:46:28 2016
>> @@ -2414,13 +2414,14 @@ std::error_code BitcodeReader::parseMeta
>> return error("Invalid record");
>>
>> IsDistinct = Record[0];
>> + DINode::DIFlags Flags = static_cast<DINode::DIFlags>(Record[10]);
>> MetadataList.assignValue(
>> GET_OR_DISTINCT(
>> DIDerivedType,
>> (Context, Record[1], getMDString(Record[2]),
>> getMDOrNull(Record[3]), Record[4], getDITypeRefOrNull(Record[5]),
>> getDITypeRefOrNull(Record[6]), Record[7], Record[8], Record[9],
>> - Record[10], getDITypeRefOrNull(Record[11]))),
>> + Flags, getDITypeRefOrNull(Record[11]))),
>> NextMetadataNo++);
>> break;
>> }
>> @@ -2441,7 +2442,7 @@ std::error_code BitcodeReader::parseMeta
>> uint64_t SizeInBits = Record[7];
>> uint64_t AlignInBits = Record[8];
>> uint64_t OffsetInBits = Record[9];
>> - unsigned Flags = Record[10];
>> + DINode::DIFlags Flags = static_cast<DINode::DIFlags>(Record[10]);
>> Metadata *Elements = getMDOrNull(Record[11]);
>> unsigned RuntimeLang = Record[12];
>> Metadata *VTableHolder = getDITypeRefOrNull(Record[13]);
>> @@ -2474,12 +2475,13 @@ std::error_code BitcodeReader::parseMeta
>> unsigned CC = (Record.size() > 3) ? Record[3] : 0;
>>
>> IsDistinct = Record[0] & 0x1;
>> + DINode::DIFlags Flags = static_cast<DINode::DIFlags>(Record[1]);
>> Metadata *Types = getMDOrNull(Record[2]);
>> if (LLVM_UNLIKELY(IsOldTypeRefArray))
>> Types = MetadataList.upgradeTypeRefArray(Types);
>>
>> MetadataList.assignValue(
>> - GET_OR_DISTINCT(DISubroutineType, (Context, Record[1], CC, Types)),
>> + GET_OR_DISTINCT(DISubroutineType, (Context, Flags, CC, Types)),
>> NextMetadataNo++);
>> break;
>> }
>> @@ -2564,7 +2566,9 @@ std::error_code BitcodeReader::parseMeta
>> Record[11], // virtuality
>> Record[12], // virtualIndex
>> HasThisAdj ? Record[19] : 0, // thisAdjustment
>> - Record[13], // flags
>> + static_cast<DINode::DIFlags>(
>> + Record[13] // flags
>> + ),
>> Record[14], // isOptimized
>> HasUnit ? CUorFn : nullptr, // unit
>> getMDOrNull(Record[15 + Offset]), // templateParams
>> @@ -2695,13 +2699,14 @@ std::error_code BitcodeReader::parseMeta
>> // DW_TAG_arg_variable.
>> IsDistinct = Record[0];
>> bool HasTag = Record.size() > 8;
>> + DINode::DIFlags Flags = static_cast<DINode::DIFlags>(Record[7 + HasTag]);
>> MetadataList.assignValue(
>> GET_OR_DISTINCT(DILocalVariable,
>> (Context, getMDOrNull(Record[1 + HasTag]),
>> getMDString(Record[2 + HasTag]),
>> getMDOrNull(Record[3 + HasTag]), Record[4 + HasTag],
>> getDITypeRefOrNull(Record[5 + HasTag]),
>> - Record[6 + HasTag], Record[7 + HasTag])),
>> + Record[6 + HasTag], Flags)),
>> NextMetadataNo++);
>> break;
>> }
>>
>> Modified: llvm/trunk/lib/IR/AsmWriter.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/AsmWriter.cpp?rev=280700&r1=280699&r2=280700&view=diff
>> ==============================================================================
>> --- llvm/trunk/lib/IR/AsmWriter.cpp (original)
>> +++ llvm/trunk/lib/IR/AsmWriter.cpp Tue Sep 6 05:46:28 2016
>> @@ -1408,7 +1408,7 @@ struct MDFieldPrinter {
>> template <class IntTy>
>> void printInt(StringRef Name, IntTy Int, bool ShouldSkipZero = true);
>> void printBool(StringRef Name, bool Value, Optional<bool> Default = None);
>> - void printDIFlags(StringRef Name, unsigned Flags);
>> + void printDIFlags(StringRef Name, DINode::DIFlags Flags);
>> template <class IntTy, class Stringifier>
>> void printDwarfEnum(StringRef Name, IntTy Value, Stringifier toString,
>> bool ShouldSkipZero = true);
>> @@ -1477,17 +1477,17 @@ void MDFieldPrinter::printBool(StringRef
>> Out << FS << Name << ": " << (Value ? "true" : "false");
>> }
>>
>> -void MDFieldPrinter::printDIFlags(StringRef Name, unsigned Flags) {
>> +void MDFieldPrinter::printDIFlags(StringRef Name, DINode::DIFlags Flags) {
>> if (!Flags)
>> return;
>>
>> Out << FS << Name << ": ";
>>
>> - SmallVector<unsigned, 8> SplitFlags;
>> - unsigned Extra = DINode::splitFlags(Flags, SplitFlags);
>> + SmallVector<DINode::DIFlags, 8> SplitFlags;
>> + auto Extra = DINode::splitFlags(Flags, SplitFlags);
>>
>> FieldSeparator FlagsFS(" | ");
>> - for (unsigned F : SplitFlags) {
>> + for (auto F : SplitFlags) {
>> const char *StringF = DINode::getFlagString(F);
>> assert(StringF && "Expected valid flag");
>> Out << FlagsFS << StringF;
>>
>> Modified: llvm/trunk/lib/IR/DIBuilder.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/DIBuilder.cpp?rev=280700&r1=280699&r2=280700&view=diff
>> ==============================================================================
>> --- llvm/trunk/lib/IR/DIBuilder.cpp (original)
>> +++ llvm/trunk/lib/IR/DIBuilder.cpp Tue Sep 6 05:46:28 2016
>> @@ -204,7 +204,7 @@ DIBasicType *DIBuilder::createBasicType(
>>
>> DIDerivedType *DIBuilder::createQualifiedType(unsigned Tag, DIType *FromTy) {
>> return DIDerivedType::get(VMContext, Tag, "", nullptr, 0, nullptr, FromTy, 0,
>> - 0, 0, 0);
>> + 0, 0, DINode::FlagZero);
>> }
>>
>> DIDerivedType *DIBuilder::createPointerType(DIType *PointeeTy,
>> @@ -214,14 +214,14 @@ DIDerivedType *DIBuilder::createPointerT
>> // FIXME: Why is there a name here?
>> return DIDerivedType::get(VMContext, dwarf::DW_TAG_pointer_type, Name,
>> nullptr, 0, nullptr, PointeeTy, SizeInBits,
>> - AlignInBits, 0, 0);
>> + AlignInBits, 0, DINode::FlagZero);
>> }
>>
>> DIDerivedType *DIBuilder::createMemberPointerType(DIType *PointeeTy,
>> DIType *Base,
>> uint64_t SizeInBits,
>> uint64_t AlignInBits,
>> - unsigned Flags) {
>> + DINode::DIFlags Flags) {
>> return DIDerivedType::get(VMContext, dwarf::DW_TAG_ptr_to_member_type, "",
>> nullptr, 0, nullptr, PointeeTy, SizeInBits,
>> AlignInBits, 0, Flags, Base);
>> @@ -232,7 +232,7 @@ DIDerivedType *DIBuilder::createReferenc
>> uint64_t AlignInBits) {
>> assert(RTy && "Unable to create reference type");
>> return DIDerivedType::get(VMContext, Tag, "", nullptr, 0, nullptr, RTy,
>> - SizeInBits, AlignInBits, 0, 0);
>> + SizeInBits, AlignInBits, 0, DINode::FlagZero);
>> }
>>
>> DIDerivedType *DIBuilder::createTypedef(DIType *Ty, StringRef Name,
>> @@ -240,19 +240,19 @@ DIDerivedType *DIBuilder::createTypedef(
>> DIScope *Context) {
>> return DIDerivedType::get(VMContext, dwarf::DW_TAG_typedef, Name, File,
>> LineNo, getNonCompileUnitScope(Context), Ty, 0, 0,
>> - 0, 0);
>> + 0, DINode::FlagZero);
>> }
>>
>> DIDerivedType *DIBuilder::createFriend(DIType *Ty, DIType *FriendTy) {
>> assert(Ty && "Invalid type!");
>> assert(FriendTy && "Invalid friend type!");
>> return DIDerivedType::get(VMContext, dwarf::DW_TAG_friend, "", nullptr, 0, Ty,
>> - FriendTy, 0, 0, 0, 0);
>> + FriendTy, 0, 0, 0, DINode::FlagZero);
>> }
>>
>> DIDerivedType *DIBuilder::createInheritance(DIType *Ty, DIType *BaseTy,
>> uint64_t BaseOffset,
>> - unsigned Flags) {
>> + DINode::DIFlags Flags) {
>> assert(Ty && "Unable to create inheritance");
>> return DIDerivedType::get(VMContext, dwarf::DW_TAG_inheritance, "", nullptr,
>> 0, Ty, BaseTy, 0, 0, BaseOffset, Flags);
>> @@ -263,7 +263,7 @@ DIDerivedType *DIBuilder::createMemberTy
>> uint64_t SizeInBits,
>> uint64_t AlignInBits,
>> uint64_t OffsetInBits,
>> - unsigned Flags, DIType *Ty) {
>> + DINode::DIFlags Flags, DIType *Ty) {
>> return DIDerivedType::get(VMContext, dwarf::DW_TAG_member, Name, File,
>> LineNumber, getNonCompileUnitScope(Scope), Ty,
>> SizeInBits, AlignInBits, OffsetInBits, Flags);
>> @@ -278,7 +278,7 @@ static ConstantAsMetadata *getConstantOr
>> DIDerivedType *DIBuilder::createBitFieldMemberType(
>> DIScope *Scope, StringRef Name, DIFile *File, unsigned LineNumber,
>> uint64_t SizeInBits, uint64_t AlignInBits, uint64_t OffsetInBits,
>> - uint64_t StorageOffsetInBits, unsigned Flags, DIType *Ty) {
>> + uint64_t StorageOffsetInBits, DINode::DIFlags Flags, DIType *Ty) {
>> Flags |= DINode::FlagBitField;
>> return DIDerivedType::get(
>> VMContext, dwarf::DW_TAG_member, Name, File, LineNumber,
>> @@ -290,7 +290,7 @@ DIDerivedType *DIBuilder::createBitField
>> DIDerivedType *DIBuilder::createStaticMemberType(DIScope *Scope, StringRef Name,
>> DIFile *File,
>> unsigned LineNumber,
>> - DIType *Ty, unsigned Flags,
>> + DIType *Ty, DINode::DIFlags Flags,
>> llvm::Constant *Val) {
>> Flags |= DINode::FlagStaticMember;
>> return DIDerivedType::get(VMContext, dwarf::DW_TAG_member, Name, File,
>> @@ -302,7 +302,7 @@ DIDerivedType *DIBuilder::createObjCIVar
>> unsigned LineNumber,
>> uint64_t SizeInBits,
>> uint64_t AlignInBits,
>> - uint64_t OffsetInBits, unsigned Flags,
>> + uint64_t OffsetInBits, DINode::DIFlags Flags,
>> DIType *Ty, MDNode *PropertyNode) {
>> return DIDerivedType::get(VMContext, dwarf::DW_TAG_member, Name, File,
>> LineNumber, getNonCompileUnitScope(File), Ty,
>> @@ -360,7 +360,7 @@ DIBuilder::createTemplateParameterPack(D
>> DICompositeType *DIBuilder::createClassType(
>> DIScope *Context, StringRef Name, DIFile *File, unsigned LineNumber,
>> uint64_t SizeInBits, uint64_t AlignInBits, uint64_t OffsetInBits,
>> - unsigned Flags, DIType *DerivedFrom, DINodeArray Elements,
>> + DINode::DIFlags Flags, DIType *DerivedFrom, DINodeArray Elements,
>> DIType *VTableHolder, MDNode *TemplateParams, StringRef UniqueIdentifier) {
>> assert((!Context || isa<DIScope>(Context)) &&
>> "createClassType should be called with a valid Context");
>> @@ -376,7 +376,7 @@ DICompositeType *DIBuilder::createClassT
>>
>> DICompositeType *DIBuilder::createStructType(
>> DIScope *Context, StringRef Name, DIFile *File, unsigned LineNumber,
>> - uint64_t SizeInBits, uint64_t AlignInBits, unsigned Flags,
>> + uint64_t SizeInBits, uint64_t AlignInBits, DINode::DIFlags Flags,
>> DIType *DerivedFrom, DINodeArray Elements, unsigned RunTimeLang,
>> DIType *VTableHolder, StringRef UniqueIdentifier) {
>> auto *R = DICompositeType::get(
>> @@ -389,7 +389,7 @@ DICompositeType *DIBuilder::createStruct
>>
>> DICompositeType *DIBuilder::createUnionType(
>> DIScope *Scope, StringRef Name, DIFile *File, unsigned LineNumber,
>> - uint64_t SizeInBits, uint64_t AlignInBits, unsigned Flags,
>> + uint64_t SizeInBits, uint64_t AlignInBits, DINode::DIFlags Flags,
>> DINodeArray Elements, unsigned RunTimeLang, StringRef UniqueIdentifier) {
>> auto *R = DICompositeType::get(
>> VMContext, dwarf::DW_TAG_union_type, Name, File, LineNumber,
>> @@ -400,7 +400,7 @@ DICompositeType *DIBuilder::createUnionT
>> }
>>
>> DISubroutineType *DIBuilder::createSubroutineType(DITypeRefArray ParameterTypes,
>> - unsigned Flags, unsigned CC) {
>> + DINode::DIFlags Flags, unsigned CC) {
>> return DISubroutineType::get(VMContext, Flags, CC, ParameterTypes);
>> }
>>
>> @@ -419,7 +419,7 @@ DICompositeType *DIBuilder::createEnumer
>> auto *CTy = DICompositeType::get(
>> VMContext, dwarf::DW_TAG_enumeration_type, Name, File, LineNumber,
>> getNonCompileUnitScope(Scope), UnderlyingType, SizeInBits, AlignInBits, 0,
>> - 0, Elements, 0, nullptr, nullptr, UniqueIdentifier);
>> + DINode::FlagZero, Elements, 0, nullptr, nullptr, UniqueIdentifier);
>> AllEnumTypes.push_back(CTy);
>> trackIfUnresolved(CTy);
>> return CTy;
>> @@ -430,7 +430,7 @@ DICompositeType *DIBuilder::createArrayT
>> DINodeArray Subscripts) {
>> auto *R = DICompositeType::get(VMContext, dwarf::DW_TAG_array_type, "",
>> nullptr, 0, nullptr, Ty, Size, AlignInBits, 0,
>> - 0, Subscripts, 0, nullptr);
>> + DINode::FlagZero, Subscripts, 0, nullptr);
>> trackIfUnresolved(R);
>> return R;
>> }
>> @@ -446,7 +446,7 @@ DICompositeType *DIBuilder::createVector
>> }
>>
>> static DIType *createTypeWithFlags(LLVMContext &Context, DIType *Ty,
>> - unsigned FlagsToSet) {
>> + DINode::DIFlags FlagsToSet) {
>> auto NewTy = Ty->clone();
>> NewTy->setFlags(NewTy->getFlags() | FlagsToSet);
>> return MDNode::replaceWithUniqued(std::move(NewTy));
>> @@ -463,7 +463,7 @@ DIType *DIBuilder::createObjectPointerTy
>> // FIXME: Restrict this to the nodes where it's valid.
>> if (Ty->isObjectPointer())
>> return Ty;
>> - unsigned Flags = DINode::FlagObjectPointer | DINode::FlagArtificial;
>> + DINode::DIFlags Flags = DINode::FlagObjectPointer | DINode::FlagArtificial;
>> return createTypeWithFlags(VMContext, Ty, Flags);
>> }
>>
>> @@ -495,7 +495,7 @@ DIBuilder::createForwardDecl(unsigned Ta
>> DICompositeType *DIBuilder::createReplaceableCompositeType(
>> unsigned Tag, StringRef Name, DIScope *Scope, DIFile *F, unsigned Line,
>> unsigned RuntimeLang, uint64_t SizeInBits, uint64_t AlignInBits,
>> - unsigned Flags, StringRef UniqueIdentifier) {
>> + DINode::DIFlags Flags, StringRef UniqueIdentifier) {
>> auto *RetTy =
>> DICompositeType::getTemporary(
>> VMContext, Tag, Name, F, Line, getNonCompileUnitScope(Scope), nullptr,
>> @@ -565,7 +565,7 @@ static DILocalVariable *createLocalVaria
>> LLVMContext &VMContext,
>> DenseMap<MDNode *, SmallVector<TrackingMDNodeRef, 1>> &PreservedVariables,
>> DIScope *Scope, StringRef Name, unsigned ArgNo, DIFile *File,
>> - unsigned LineNo, DIType *Ty, bool AlwaysPreserve, unsigned Flags) {
>> + unsigned LineNo, DIType *Ty, bool AlwaysPreserve, DINode::DIFlags Flags) {
>> // FIXME: Why getNonCompileUnitScope()?
>> // FIXME: Why is "!Context" okay here?
>> // FIXME: Why doesn't this check for a subprogram or lexical block (AFAICT
>> @@ -589,7 +589,7 @@ static DILocalVariable *createLocalVaria
>> DILocalVariable *DIBuilder::createAutoVariable(DIScope *Scope, StringRef Name,
>> DIFile *File, unsigned LineNo,
>> DIType *Ty, bool AlwaysPreserve,
>> - unsigned Flags) {
>> + DINode::DIFlags Flags) {
>> return createLocalVariable(VMContext, PreservedVariables, Scope, Name,
>> /* ArgNo */ 0, File, LineNo, Ty, AlwaysPreserve,
>> Flags);
>> @@ -597,7 +597,7 @@ DILocalVariable *DIBuilder::createAutoVa
>>
>> DILocalVariable *DIBuilder::createParameterVariable(
>> DIScope *Scope, StringRef Name, unsigned ArgNo, DIFile *File,
>> - unsigned LineNo, DIType *Ty, bool AlwaysPreserve, unsigned Flags) {
>> + unsigned LineNo, DIType *Ty, bool AlwaysPreserve, DINode::DIFlags Flags) {
>> assert(ArgNo && "Expected non-zero argument number for parameter");
>> return createLocalVariable(VMContext, PreservedVariables, Scope, Name, ArgNo,
>> File, LineNo, Ty, AlwaysPreserve, Flags);
>> @@ -629,7 +629,7 @@ static DISubprogram *getSubprogram(bool
>> DISubprogram *DIBuilder::createFunction(
>> DIScope *Context, StringRef Name, StringRef LinkageName, DIFile *File,
>> unsigned LineNo, DISubroutineType *Ty, bool isLocalToUnit,
>> - bool isDefinition, unsigned ScopeLine, unsigned Flags, bool isOptimized,
>> + bool isDefinition, unsigned ScopeLine, DINode::DIFlags Flags, bool isOptimized,
>> DITemplateParameterArray TParams, DISubprogram *Decl) {
>> auto *Node = getSubprogram(
>> /* IsDistinct = */ isDefinition, VMContext,
>> @@ -647,7 +647,7 @@ DISubprogram *DIBuilder::createFunction(
>> DISubprogram *DIBuilder::createTempFunctionFwdDecl(
>> DIScope *Context, StringRef Name, StringRef LinkageName, DIFile *File,
>> unsigned LineNo, DISubroutineType *Ty, bool isLocalToUnit,
>> - bool isDefinition, unsigned ScopeLine, unsigned Flags, bool isOptimized,
>> + bool isDefinition, unsigned ScopeLine, DINode::DIFlags Flags, bool isOptimized,
>> DITemplateParameterArray TParams, DISubprogram *Decl) {
>> return DISubprogram::getTemporary(
>> VMContext, getNonCompileUnitScope(Context), Name, LinkageName,
>> @@ -662,7 +662,7 @@ DIBuilder::createMethod(DIScope *Context
>> DIFile *F, unsigned LineNo, DISubroutineType *Ty,
>> bool isLocalToUnit, bool isDefinition, unsigned VK,
>> unsigned VIndex, int ThisAdjustment,
>> - DIType *VTableHolder, unsigned Flags, bool isOptimized,
>> + DIType *VTableHolder, DINode::DIFlags Flags, bool isOptimized,
>> DITemplateParameterArray TParams) {
>> assert(getNonCompileUnitScope(Context) &&
>> "Methods should have both a Context and a context that isn't "
>>
>> Modified: llvm/trunk/lib/IR/DebugInfoMetadata.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/DebugInfoMetadata.cpp?rev=280700&r1=280699&r2=280700&view=diff
>> ==============================================================================
>> --- llvm/trunk/lib/IR/DebugInfoMetadata.cpp (original)
>> +++ llvm/trunk/lib/IR/DebugInfoMetadata.cpp Tue Sep 6 05:46:28 2016
>> @@ -65,29 +65,28 @@ DILocation *DILocation::getImpl(LLVMCont
>> Storage, Context.pImpl->DILocations);
>> }
>>
>> -unsigned DINode::getFlag(StringRef Flag) {
>> - return StringSwitch<unsigned>(Flag)
>> +DINode::DIFlags DINode::getFlag(StringRef Flag) {
>> + return StringSwitch<DIFlags>(Flag)
>> #define HANDLE_DI_FLAG(ID, NAME) .Case("DIFlag" #NAME, Flag##NAME)
>> #include "llvm/IR/DebugInfoFlags.def"
>> - .Default(0);
>> + .Default(DINode::FlagZero);
>> }
>>
>> -const char *DINode::getFlagString(unsigned Flag) {
>> +const char *DINode::getFlagString(DIFlags Flag) {
>> switch (Flag) {
>> - default:
>> - return "";
>> #define HANDLE_DI_FLAG(ID, NAME) \
>> case Flag##NAME: \
>> return "DIFlag" #NAME;
>> #include "llvm/IR/DebugInfoFlags.def"
>> }
>> + return "";
>> }
>>
>> -unsigned DINode::splitFlags(unsigned Flags,
>> - SmallVectorImpl<unsigned> &SplitFlags) {
>> +DINode::DIFlags DINode::splitFlags(DIFlags Flags,
>> + SmallVectorImpl<DIFlags> &SplitFlags) {
>> // Accessibility and member pointer flags need to be specially handled, since
>> // they're packed together.
>> - if (unsigned A = Flags & FlagAccessibility) {
>> + if (DIFlags A = Flags & FlagAccessibility) {
>> if (A == FlagPrivate)
>> SplitFlags.push_back(FlagPrivate);
>> else if (A == FlagProtected)
>> @@ -96,7 +95,7 @@ unsigned DINode::splitFlags(unsigned Fla
>> SplitFlags.push_back(FlagPublic);
>> Flags &= ~A;
>> }
>> - if (unsigned R = Flags & FlagPtrToMemberRep) {
>> + if (DIFlags R = Flags & FlagPtrToMemberRep) {
>> if (R == FlagSingleInheritance)
>> SplitFlags.push_back(FlagSingleInheritance);
>> else if (R == FlagMultipleInheritance)
>> @@ -107,12 +106,11 @@ unsigned DINode::splitFlags(unsigned Fla
>> }
>>
>> #define HANDLE_DI_FLAG(ID, NAME) \
>> - if (unsigned Bit = Flags & ID) { \
>> + if (DIFlags Bit = Flags & Flag##NAME) { \
>> SplitFlags.push_back(Bit); \
>> Flags &= ~Bit; \
>> }
>> #include "llvm/IR/DebugInfoFlags.def"
>> -
>> return Flags;
>> }
>>
>> @@ -242,7 +240,7 @@ DIBasicType *DIBasicType::getImpl(LLVMCo
>> DIDerivedType *DIDerivedType::getImpl(
>> LLVMContext &Context, unsigned Tag, MDString *Name, Metadata *File,
>> unsigned Line, Metadata *Scope, Metadata *BaseType, uint64_t SizeInBits,
>> - uint64_t AlignInBits, uint64_t OffsetInBits, unsigned Flags,
>> + uint64_t AlignInBits, uint64_t OffsetInBits, DIFlags Flags,
>> Metadata *ExtraData, StorageType Storage, bool ShouldCreate) {
>> assert(isCanonical(Name) && "Expected canonical MDString");
>> DEFINE_GETIMPL_LOOKUP(DIDerivedType,
>> @@ -257,7 +255,7 @@ DIDerivedType *DIDerivedType::getImpl(
>> DICompositeType *DICompositeType::getImpl(
>> LLVMContext &Context, unsigned Tag, MDString *Name, Metadata *File,
>> unsigned Line, Metadata *Scope, Metadata *BaseType, uint64_t SizeInBits,
>> - uint64_t AlignInBits, uint64_t OffsetInBits, unsigned Flags,
>> + uint64_t AlignInBits, uint64_t OffsetInBits, DIFlags Flags,
>> Metadata *Elements, unsigned RuntimeLang, Metadata *VTableHolder,
>> Metadata *TemplateParams, MDString *Identifier, StorageType Storage,
>> bool ShouldCreate) {
>> @@ -279,7 +277,7 @@ DICompositeType *DICompositeType::buildO
>> LLVMContext &Context, MDString &Identifier, unsigned Tag, MDString *Name,
>> Metadata *File, unsigned Line, Metadata *Scope, Metadata *BaseType,
>> uint64_t SizeInBits, uint64_t AlignInBits, uint64_t OffsetInBits,
>> - unsigned Flags, Metadata *Elements, unsigned RuntimeLang,
>> + DIFlags Flags, Metadata *Elements, unsigned RuntimeLang,
>> Metadata *VTableHolder, Metadata *TemplateParams) {
>> assert(!Identifier.getString().empty() && "Expected valid identifier");
>> if (!Context.isODRUniquingDebugTypes())
>> @@ -313,7 +311,7 @@ DICompositeType *DICompositeType::getODR
>> LLVMContext &Context, MDString &Identifier, unsigned Tag, MDString *Name,
>> Metadata *File, unsigned Line, Metadata *Scope, Metadata *BaseType,
>> uint64_t SizeInBits, uint64_t AlignInBits, uint64_t OffsetInBits,
>> - unsigned Flags, Metadata *Elements, unsigned RuntimeLang,
>> + DIFlags Flags, Metadata *Elements, unsigned RuntimeLang,
>> Metadata *VTableHolder, Metadata *TemplateParams) {
>> assert(!Identifier.getString().empty() && "Expected valid identifier");
>> if (!Context.isODRUniquingDebugTypes())
>> @@ -336,7 +334,7 @@ DICompositeType *DICompositeType::getODR
>> }
>>
>> DISubroutineType *DISubroutineType::getImpl(LLVMContext &Context,
>> - unsigned Flags, uint8_t CC,
>> + DIFlags Flags, uint8_t CC,
>> Metadata *TypeArray,
>> StorageType Storage,
>> bool ShouldCreate) {
>> @@ -414,7 +412,7 @@ DISubprogram *DISubprogram::getImpl(
>> MDString *LinkageName, Metadata *File, unsigned Line, Metadata *Type,
>> bool IsLocalToUnit, bool IsDefinition, unsigned ScopeLine,
>> Metadata *ContainingType, unsigned Virtuality, unsigned VirtualIndex,
>> - int ThisAdjustment, unsigned Flags, bool IsOptimized, Metadata *Unit,
>> + int ThisAdjustment, DIFlags Flags, bool IsOptimized, Metadata *Unit,
>> Metadata *TemplateParams, Metadata *Declaration, Metadata *Variables,
>> StorageType Storage, bool ShouldCreate) {
>> assert(isCanonical(Name) && "Expected canonical MDString");
>> @@ -529,7 +527,7 @@ DIGlobalVariable::getImpl(LLVMContext &C
>> DILocalVariable *DILocalVariable::getImpl(LLVMContext &Context, Metadata *Scope,
>> MDString *Name, Metadata *File,
>> unsigned Line, Metadata *Type,
>> - unsigned Arg, unsigned Flags,
>> + unsigned Arg, DIFlags Flags,
>> StorageType Storage,
>> bool ShouldCreate) {
>> // 64K ought to be enough for any frontend.
>>
>> Modified: llvm/trunk/unittests/IR/DebugInfoTest.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/IR/DebugInfoTest.cpp?rev=280700&r1=280699&r2=280700&view=diff
>> ==============================================================================
>> --- llvm/trunk/unittests/IR/DebugInfoTest.cpp (original)
>> +++ llvm/trunk/unittests/IR/DebugInfoTest.cpp Tue Sep 6 05:46:28 2016
>> @@ -55,27 +55,26 @@ TEST(DINodeTest, getFlagString) {
>> DINode::getFlagString(DINode::FlagPublic | DINode::FlagVector));
>> EXPECT_EQ(StringRef(), DINode::getFlagString(DINode::FlagFwdDecl |
>> DINode::FlagArtificial));
>> - EXPECT_EQ(StringRef(), DINode::getFlagString(0xffff));
>> + EXPECT_EQ(StringRef(),
>> + DINode::getFlagString(static_cast<DINode::DIFlags>(0xffff)));
>> }
>>
>> TEST(DINodeTest, splitFlags) {
>> // Some valid flags.
>> #define CHECK_SPLIT(FLAGS, VECTOR, REMAINDER) \
>> { \
>> - SmallVector<unsigned, 8> V; \
>> + SmallVector<DINode::DIFlags, 8> V; \
>> EXPECT_EQ(REMAINDER, DINode::splitFlags(FLAGS, V)); \
>> EXPECT_TRUE(makeArrayRef(V).equals(VECTOR)); \
>> }
>> - CHECK_SPLIT(DINode::FlagPublic, {DINode::FlagPublic}, 0u);
>> - CHECK_SPLIT(DINode::FlagProtected, {DINode::FlagProtected}, 0u);
>> - CHECK_SPLIT(DINode::FlagPrivate, {DINode::FlagPrivate}, 0u);
>> - CHECK_SPLIT(DINode::FlagVector, {DINode::FlagVector}, 0u);
>> - CHECK_SPLIT(DINode::FlagRValueReference, {DINode::FlagRValueReference}, 0u);
>> - unsigned Flags[] = {DINode::FlagFwdDecl, DINode::FlagVector};
>> - CHECK_SPLIT(DINode::FlagFwdDecl | DINode::FlagVector, Flags, 0u);
>> - CHECK_SPLIT(0x200000u, {}, 0x200000u);
>> - CHECK_SPLIT(0x200000u | DINode::FlagVector, {DINode::FlagVector}, 0x200000u);
>> - CHECK_SPLIT(0x200000u | DINode::FlagNoReturn, {DINode::FlagNoReturn}, 0x200000u);
>> + CHECK_SPLIT(DINode::FlagPublic, {DINode::FlagPublic}, DINode::FlagZero);
>> + CHECK_SPLIT(DINode::FlagProtected, {DINode::FlagProtected}, DINode::FlagZero);
>> + CHECK_SPLIT(DINode::FlagPrivate, {DINode::FlagPrivate}, DINode::FlagZero);
>> + CHECK_SPLIT(DINode::FlagVector, {DINode::FlagVector}, DINode::FlagZero);
>> + CHECK_SPLIT(DINode::FlagRValueReference, {DINode::FlagRValueReference}, DINode::FlagZero);
>> + DINode::DIFlags Flags[] = {DINode::FlagFwdDecl, DINode::FlagVector};
>> + CHECK_SPLIT(DINode::FlagFwdDecl | DINode::FlagVector, Flags, DINode::FlagZero);
>> + CHECK_SPLIT(DINode::FlagZero, {}, DINode::FlagZero);
>> #undef CHECK_SPLIT
>> }
>>
>>
>> Modified: llvm/trunk/unittests/IR/DebugTypeODRUniquingTest.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/IR/DebugTypeODRUniquingTest.cpp?rev=280700&r1=280699&r2=280700&view=diff
>> ==============================================================================
>> --- llvm/trunk/unittests/IR/DebugTypeODRUniquingTest.cpp (original)
>> +++ llvm/trunk/unittests/IR/DebugTypeODRUniquingTest.cpp Tue Sep 6 05:46:28 2016
>> @@ -30,7 +30,7 @@ TEST(DebugTypeODRUniquingTest, getODRTyp
>> // Without a type map, this should return null.
>> EXPECT_FALSE(DICompositeType::getODRType(
>> Context, UUID, dwarf::DW_TAG_class_type, nullptr, nullptr, 0, nullptr,
>> - nullptr, 0, 0, 0, 0, nullptr, 0, nullptr, nullptr));
>> + nullptr, 0, 0, 0, DINode::FlagZero, nullptr, 0, nullptr, nullptr));
>>
>> // Enable the mapping. There still shouldn't be a type.
>> Context.enableDebugTypeODRUniquing();
>> @@ -39,7 +39,7 @@ TEST(DebugTypeODRUniquingTest, getODRTyp
>> // Create some ODR-uniqued type.
>> auto &CT = *DICompositeType::getODRType(
>> Context, UUID, dwarf::DW_TAG_class_type, nullptr, nullptr, 0, nullptr,
>> - nullptr, 0, 0, 0, 0, nullptr, 0, nullptr, nullptr);
>> + nullptr, 0, 0, 0, DINode::FlagZero, nullptr, 0, nullptr, nullptr);
>> EXPECT_EQ(UUID.getString(), CT.getIdentifier());
>>
>> // Check that we get it back, even if we change a field.
>> @@ -47,11 +47,13 @@ TEST(DebugTypeODRUniquingTest, getODRTyp
>> EXPECT_EQ(
>> &CT, DICompositeType::getODRType(Context, UUID, dwarf::DW_TAG_class_type,
>> nullptr, nullptr, 0, nullptr, nullptr, 0,
>> - 0, 0, 0, nullptr, 0, nullptr, nullptr));
>> + 0, 0, DINode::FlagZero, nullptr, 0,
>> + nullptr, nullptr));
>> EXPECT_EQ(&CT, DICompositeType::getODRType(
>> Context, UUID, dwarf::DW_TAG_class_type,
>> MDString::get(Context, "name"), nullptr, 0, nullptr,
>> - nullptr, 0, 0, 0, 0, nullptr, 0, nullptr, nullptr));
>> + nullptr, 0, 0, 0, DINode::FlagZero, nullptr, 0,
>> + nullptr, nullptr));
>>
>> // Check that it's discarded with the type map.
>> Context.disableDebugTypeODRUniquing();
>> @@ -83,7 +85,7 @@ TEST(DebugTypeODRUniquingTest, buildODRT
>> // Update with a definition. This time we should see a change.
>> EXPECT_EQ(&CT, DICompositeType::buildODRType(
>> Context, UUID, dwarf::DW_TAG_structure_type, nullptr, nullptr, 0, nullptr,
>> - nullptr, 0, 0, 0, 0, nullptr, 0, nullptr, nullptr));
>> + nullptr, 0, 0, 0, DINode::FlagZero, nullptr, 0, nullptr, nullptr));
>> EXPECT_EQ(dwarf::DW_TAG_structure_type, CT.getTag());
>>
>> // Further updates should be ignored.
>> @@ -93,7 +95,7 @@ TEST(DebugTypeODRUniquingTest, buildODRT
>> EXPECT_EQ(dwarf::DW_TAG_structure_type, CT.getTag());
>> EXPECT_EQ(&CT, DICompositeType::buildODRType(
>> Context, UUID, dwarf::DW_TAG_class_type, nullptr, nullptr, 0, nullptr,
>> - nullptr, 0, 0, 0, 0, nullptr, 0, nullptr, nullptr));
>> + nullptr, 0, 0, 0, DINode::FlagZero, nullptr, 0, nullptr, nullptr));
>> EXPECT_EQ(dwarf::DW_TAG_structure_type, CT.getTag());
>> }
>>
>>
>> Modified: llvm/trunk/unittests/IR/IRBuilderTest.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/IR/IRBuilderTest.cpp?rev=280700&r1=280699&r2=280700&view=diff
>> ==============================================================================
>> --- llvm/trunk/unittests/IR/IRBuilderTest.cpp (original)
>> +++ llvm/trunk/unittests/IR/IRBuilderTest.cpp Tue Sep 6 05:46:28 2016
>> @@ -344,11 +344,13 @@ TEST_F(IRBuilderTest, DIBuilder) {
>> "llvm-cobol74", true, "", 0);
>> auto Type = DIB.createSubroutineType(DIB.getOrCreateTypeArray(None));
>> auto SP =
>> - DIB.createFunction(CU, "foo", "", File, 1, Type, false, true, 1, 0, true);
>> + DIB.createFunction(CU, "foo", "", File, 1, Type, false, true, 1,
>> + DINode::FlagZero, true);
>> F->setSubprogram(SP);
>> AllocaInst *I = Builder.CreateAlloca(Builder.getInt8Ty());
>> auto BarSP =
>> - DIB.createFunction(CU, "bar", "", File, 1, Type, false, true, 1, 0, true);
>> + DIB.createFunction(CU, "bar", "", File, 1, Type, false, true, 1,
>> + DINode::FlagZero, true);
>> auto BadScope = DIB.createLexicalBlockFile(BarSP, File, 0);
>> I->setDebugLoc(DebugLoc::get(2, 0, BadScope));
>> DIB.finalize();
>>
>> Modified: llvm/trunk/unittests/IR/MetadataTest.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/IR/MetadataTest.cpp?rev=280700&r1=280699&r2=280700&view=diff
>> ==============================================================================
>> --- llvm/trunk/unittests/IR/MetadataTest.cpp (original)
>> +++ llvm/trunk/unittests/IR/MetadataTest.cpp Tue Sep 6 05:46:28 2016
>> @@ -80,12 +80,13 @@ protected:
>>
>> MDTuple *getTuple() { return MDTuple::getDistinct(Context, None); }
>> DISubroutineType *getSubroutineType() {
>> - return DISubroutineType::getDistinct(Context, 0, 0, getNode(nullptr));
>> + return DISubroutineType::getDistinct(Context, DINode::FlagZero,
>> + 0, getNode(nullptr));
>> }
>> DISubprogram *getSubprogram() {
>> return DISubprogram::getDistinct(Context, nullptr, "", "", nullptr, 0,
>> nullptr, false, false, 0, nullptr,
>> - 0, 0, 0, 0, false, nullptr);
>> + 0, 0, 0, DINode::FlagZero, false, nullptr);
>> }
>> DIFile *getFile() {
>> return DIFile::getDistinct(Context, "file.c", "/path/to/dir");
>> @@ -102,7 +103,8 @@ protected:
>> DIType *getDerivedType() {
>> return DIDerivedType::getDistinct(Context, dwarf::DW_TAG_pointer_type, "",
>> nullptr, 0, nullptr,
>> - getBasicType("basictype"), 1, 2, 0, 0);
>> + getBasicType("basictype"),
>> + 1, 2, 0, DINode::FlagZero);
>> }
>> Constant *getConstant() {
>> return ConstantInt::get(Type::getInt32Ty(Context), Counter++);
>> @@ -113,7 +115,7 @@ protected:
>> DIType *getCompositeType() {
>> return DICompositeType::getDistinct(
>> Context, dwarf::DW_TAG_structure_type, "", nullptr, 0, nullptr, nullptr,
>> - 32, 32, 0, 0, nullptr, 0, nullptr, nullptr, "");
>> + 32, 32, 0, DINode::FlagZero, nullptr, 0, nullptr, nullptr, "");
>> }
>> Function *getFunction(StringRef Name) {
>> return cast<Function>(M.getOrInsertFunction(
>> @@ -1028,19 +1030,21 @@ TEST_F(DITypeTest, setFlags) {
>> Metadata *TypesOps[] = {nullptr};
>> Metadata *Types = MDTuple::get(Context, TypesOps);
>>
>> - DIType *D = DISubroutineType::getDistinct(Context, 0u, 0, Types);
>> - EXPECT_EQ(0u, D->getFlags());
>> + DIType *D = DISubroutineType::getDistinct(Context, DINode::FlagZero,
>> + 0, Types);
>> + EXPECT_EQ(DINode::FlagZero, D->getFlags());
>> D->setFlags(DINode::FlagRValueReference);
>> EXPECT_EQ(DINode::FlagRValueReference, D->getFlags());
>> - D->setFlags(0u);
>> - EXPECT_EQ(0u, D->getFlags());
>> + D->setFlags(DINode::FlagZero);
>> + EXPECT_EQ(DINode::FlagZero, D->getFlags());
>>
>> - TempDIType T = DISubroutineType::getTemporary(Context, 0u, 0, Types);
>> - EXPECT_EQ(0u, T->getFlags());
>> + TempDIType T = DISubroutineType::getTemporary(Context, DINode::FlagZero,
>> + 0, Types);
>> + EXPECT_EQ(DINode::FlagZero, T->getFlags());
>> T->setFlags(DINode::FlagRValueReference);
>> EXPECT_EQ(DINode::FlagRValueReference, T->getFlags());
>> - T->setFlags(0u);
>> - EXPECT_EQ(0u, T->getFlags());
>> + T->setFlags(DINode::FlagZero);
>> + EXPECT_EQ(DINode::FlagZero, T->getFlags());
>> }
>>
>> typedef MetadataTest DIDerivedTypeTest;
>> @@ -1050,9 +1054,12 @@ TEST_F(DIDerivedTypeTest, get) {
>> DIScope *Scope = getSubprogram();
>> DIType *BaseType = getBasicType("basic");
>> MDTuple *ExtraData = getTuple();
>> + DINode::DIFlags Flags5 = static_cast<DINode::DIFlags>(5);
>> + DINode::DIFlags Flags4 = static_cast<DINode::DIFlags>(4);
>>
>> auto *N = DIDerivedType::get(Context, dwarf::DW_TAG_pointer_type, "something",
>> - File, 1, Scope, BaseType, 2, 3, 4, 5, ExtraData);
>> + File, 1, Scope, BaseType, 2, 3, 4,
>> + Flags5, ExtraData);
>> EXPECT_EQ(dwarf::DW_TAG_pointer_type, N->getTag());
>> EXPECT_EQ("something", N->getName());
>> EXPECT_EQ(File, N->getFile());
>> @@ -1066,41 +1073,41 @@ TEST_F(DIDerivedTypeTest, get) {
>> EXPECT_EQ(ExtraData, N->getExtraData());
>> EXPECT_EQ(N, DIDerivedType::get(Context, dwarf::DW_TAG_pointer_type,
>> "something", File, 1, Scope, BaseType, 2, 3,
>> - 4, 5, ExtraData));
>> + 4, Flags5, ExtraData));
>>
>> EXPECT_NE(N, DIDerivedType::get(Context, dwarf::DW_TAG_reference_type,
>> "something", File, 1, Scope, BaseType, 2, 3,
>> - 4, 5, ExtraData));
>> + 4, Flags5, ExtraData));
>> EXPECT_NE(N, DIDerivedType::get(Context, dwarf::DW_TAG_pointer_type, "else",
>> - File, 1, Scope, BaseType, 2, 3, 4, 5,
>> - ExtraData));
>> + File, 1, Scope, BaseType, 2, 3, 4,
>> + Flags5, ExtraData));
>> EXPECT_NE(N, DIDerivedType::get(Context, dwarf::DW_TAG_pointer_type,
>> "something", getFile(), 1, Scope, BaseType, 2,
>> - 3, 4, 5, ExtraData));
>> + 3, 4, Flags5, ExtraData));
>> EXPECT_NE(N, DIDerivedType::get(Context, dwarf::DW_TAG_pointer_type,
>> "something", File, 2, Scope, BaseType, 2, 3,
>> - 4, 5, ExtraData));
>> + 4, Flags5, ExtraData));
>> EXPECT_NE(N, DIDerivedType::get(Context, dwarf::DW_TAG_pointer_type,
>> "something", File, 1, getSubprogram(),
>> - BaseType, 2, 3, 4, 5, ExtraData));
>> + BaseType, 2, 3, 4, Flags5, ExtraData));
>> EXPECT_NE(N, DIDerivedType::get(
>> Context, dwarf::DW_TAG_pointer_type, "something", File, 1,
>> - Scope, getBasicType("basic2"), 2, 3, 4, 5, ExtraData));
>> + Scope, getBasicType("basic2"), 2, 3, 4, Flags5, ExtraData));
>> EXPECT_NE(N, DIDerivedType::get(Context, dwarf::DW_TAG_pointer_type,
>> "something", File, 1, Scope, BaseType, 3, 3,
>> - 4, 5, ExtraData));
>> + 4, Flags5, ExtraData));
>> EXPECT_NE(N, DIDerivedType::get(Context, dwarf::DW_TAG_pointer_type,
>> "something", File, 1, Scope, BaseType, 2, 2,
>> - 4, 5, ExtraData));
>> + 4, Flags5, ExtraData));
>> EXPECT_NE(N, DIDerivedType::get(Context, dwarf::DW_TAG_pointer_type,
>> "something", File, 1, Scope, BaseType, 2, 3,
>> - 5, 5, ExtraData));
>> + 5, Flags5, ExtraData));
>> EXPECT_NE(N, DIDerivedType::get(Context, dwarf::DW_TAG_pointer_type,
>> "something", File, 1, Scope, BaseType, 2, 3,
>> - 4, 4, ExtraData));
>> + 4, Flags4, ExtraData));
>> EXPECT_NE(N, DIDerivedType::get(Context, dwarf::DW_TAG_pointer_type,
>> "something", File, 1, Scope, BaseType, 2, 3,
>> - 4, 5, getTuple()));
>> + 4, Flags5, getTuple()));
>>
>> TempDIDerivedType Temp = N->clone();
>> EXPECT_EQ(N, MDNode::replaceWithUniqued(std::move(Temp)));
>> @@ -1111,10 +1118,11 @@ TEST_F(DIDerivedTypeTest, getWithLargeVa
>> DIScope *Scope = getSubprogram();
>> DIType *BaseType = getBasicType("basic");
>> MDTuple *ExtraData = getTuple();
>> + DINode::DIFlags Flags = static_cast<DINode::DIFlags>(5);
>>
>> auto *N = DIDerivedType::get(Context, dwarf::DW_TAG_pointer_type, "something",
>> File, 1, Scope, BaseType, UINT64_MAX,
>> - UINT64_MAX - 1, UINT64_MAX - 2, 5, ExtraData);
>> + UINT64_MAX - 1, UINT64_MAX - 2, Flags, ExtraData);
>> EXPECT_EQ(UINT64_MAX, N->getSizeInBits());
>> EXPECT_EQ(UINT64_MAX - 1, N->getAlignInBits());
>> EXPECT_EQ(UINT64_MAX - 2, N->getOffsetInBits());
>> @@ -1132,7 +1140,7 @@ TEST_F(DICompositeTypeTest, get) {
>> uint64_t SizeInBits = 2;
>> uint64_t AlignInBits = 3;
>> uint64_t OffsetInBits = 4;
>> - unsigned Flags = 5;
>> + DINode::DIFlags Flags = static_cast<DINode::DIFlags>(5);
>> MDTuple *Elements = getTuple();
>> unsigned RuntimeLang = 6;
>> DIType *VTableHolder = getCompositeType();
>> @@ -1200,9 +1208,10 @@ TEST_F(DICompositeTypeTest, get) {
>> Context, Tag, Name, File, Line, Scope, BaseType, SizeInBits,
>> AlignInBits, OffsetInBits + 1, Flags, Elements, RuntimeLang,
>> VTableHolder, TemplateParams, Identifier));
>> + DINode::DIFlags FlagsPOne = static_cast<DINode::DIFlags>(Flags + 1);
>> EXPECT_NE(N, DICompositeType::get(
>> Context, Tag, Name, File, Line, Scope, BaseType, SizeInBits,
>> - AlignInBits, OffsetInBits, Flags + 1, Elements, RuntimeLang,
>> + AlignInBits, OffsetInBits, FlagsPOne, Elements, RuntimeLang,
>> VTableHolder, TemplateParams, Identifier));
>> EXPECT_NE(N, DICompositeType::get(
>> Context, Tag, Name, File, Line, Scope, BaseType, SizeInBits,
>> @@ -1251,7 +1260,7 @@ TEST_F(DICompositeTypeTest, getWithLarge
>> uint64_t SizeInBits = UINT64_MAX;
>> uint64_t AlignInBits = UINT64_MAX - 1;
>> uint64_t OffsetInBits = UINT64_MAX - 2;
>> - unsigned Flags = 5;
>> + DINode::DIFlags Flags = static_cast<DINode::DIFlags>(5);
>> MDTuple *Elements = getTuple();
>> unsigned RuntimeLang = 6;
>> DIType *VTableHolder = getCompositeType();
>> @@ -1277,7 +1286,7 @@ TEST_F(DICompositeTypeTest, replaceOpera
>> uint64_t SizeInBits = 2;
>> uint64_t AlignInBits = 3;
>> uint64_t OffsetInBits = 4;
>> - unsigned Flags = 5;
>> + DINode::DIFlags Flags = static_cast<DINode::DIFlags>(5);
>> unsigned RuntimeLang = 6;
>> StringRef Identifier = "some id";
>>
>> @@ -1310,7 +1319,8 @@ TEST_F(DICompositeTypeTest, replaceOpera
>> typedef MetadataTest DISubroutineTypeTest;
>>
>> TEST_F(DISubroutineTypeTest, get) {
>> - unsigned Flags = 1;
>> + DINode::DIFlags Flags = static_cast<DINode::DIFlags>(1);
>> + DINode::DIFlags FlagsPOne = static_cast<DINode::DIFlags>(Flags + 1);
>> MDTuple *TypeArray = getTuple();
>>
>> auto *N = DISubroutineType::get(Context, Flags, 0, TypeArray);
>> @@ -1319,7 +1329,7 @@ TEST_F(DISubroutineTypeTest, get) {
>> EXPECT_EQ(TypeArray, N->getTypeArray().get());
>> EXPECT_EQ(N, DISubroutineType::get(Context, Flags, 0, TypeArray));
>>
>> - EXPECT_NE(N, DISubroutineType::get(Context, Flags + 1, 0, TypeArray));
>> + EXPECT_NE(N, DISubroutineType::get(Context, FlagsPOne, 0, TypeArray));
>> EXPECT_NE(N, DISubroutineType::get(Context, Flags, 0, getTuple()));
>>
>> // Test the hashing of calling conventions.
>> @@ -1481,8 +1491,7 @@ TEST_F(DISubprogramTest, get) {
>> unsigned Virtuality = 2;
>> unsigned VirtualIndex = 5;
>> int ThisAdjustment = -3;
>> - unsigned Flags = 6;
>> - unsigned NotFlags = (~Flags) & ((1 << 27) - 1);
>> + DINode::DIFlags Flags = static_cast<DINode::DIFlags>(6);
>> bool IsOptimized = false;
>> MDTuple *TemplateParams = getTuple();
>> DISubprogram *Declaration = getSubprogram();
>> @@ -1585,11 +1594,6 @@ TEST_F(DISubprogramTest, get) {
>> EXPECT_NE(N, DISubprogram::get(Context, Scope, Name, LinkageName, File, Line,
>> Type, IsLocalToUnit, IsDefinition, ScopeLine,
>> ContainingType, Virtuality, VirtualIndex,
>> - ThisAdjustment, NotFlags, IsOptimized, Unit,
>> - TemplateParams, Declaration, Variables));
>> - EXPECT_NE(N, DISubprogram::get(Context, Scope, Name, LinkageName, File, Line,
>> - Type, IsLocalToUnit, IsDefinition, ScopeLine,
>> - ContainingType, Virtuality, VirtualIndex,
>> ThisAdjustment, Flags, !IsOptimized, Unit,
>> TemplateParams, Declaration, Variables));
>> EXPECT_NE(N, DISubprogram::get(Context, Scope, Name, LinkageName, File, Line,
>> @@ -1889,8 +1893,7 @@ TEST_F(DILocalVariableTest, get) {
>> unsigned Line = 5;
>> DIType *Type = getDerivedType();
>> unsigned Arg = 6;
>> - unsigned Flags = 7;
>> - unsigned NotFlags = (~Flags) & ((1 << 16) - 1);
>> + DINode::DIFlags Flags = static_cast<DINode::DIFlags>(7);
>>
>> auto *N =
>> DILocalVariable::get(Context, Scope, Name, File, Line, Type, Arg, Flags);
>> @@ -1920,8 +1923,6 @@ TEST_F(DILocalVariableTest, get) {
>> getDerivedType(), Arg, Flags));
>> EXPECT_NE(N, DILocalVariable::get(Context, Scope, Name, File, Line, Type,
>> Arg + 1, Flags));
>> - EXPECT_NE(N, DILocalVariable::get(Context, Scope, Name, File, Line, Type, Arg,
>> - NotFlags));
>>
>> TempDILocalVariable Temp = N->clone();
>> EXPECT_EQ(N, MDNode::replaceWithUniqued(std::move(Temp)));
>> @@ -1929,17 +1930,17 @@ TEST_F(DILocalVariableTest, get) {
>>
>> TEST_F(DILocalVariableTest, getArg256) {
>> EXPECT_EQ(255u, DILocalVariable::get(Context, getSubprogram(), "", getFile(),
>> - 0, nullptr, 255, 0)
>> + 0, nullptr, 255, DINode::FlagZero)
>> ->getArg());
>> EXPECT_EQ(256u, DILocalVariable::get(Context, getSubprogram(), "", getFile(),
>> - 0, nullptr, 256, 0)
>> + 0, nullptr, 256, DINode::FlagZero)
>> ->getArg());
>> EXPECT_EQ(257u, DILocalVariable::get(Context, getSubprogram(), "", getFile(),
>> - 0, nullptr, 257, 0)
>> + 0, nullptr, 257, DINode::FlagZero)
>> ->getArg());
>> unsigned Max = UINT16_MAX;
>> EXPECT_EQ(Max, DILocalVariable::get(Context, getSubprogram(), "", getFile(),
>> - 0, nullptr, Max, 0)
>> + 0, nullptr, Max, DINode::FlagZero)
>> ->getArg());
>> }
>>
>>
>> Modified: llvm/trunk/unittests/Transforms/Utils/Cloning.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/Transforms/Utils/Cloning.cpp?rev=280700&r1=280699&r2=280700&view=diff
>> ==============================================================================
>> --- llvm/trunk/unittests/Transforms/Utils/Cloning.cpp (original)
>> +++ llvm/trunk/unittests/Transforms/Utils/Cloning.cpp Tue Sep 6 05:46:28 2016
>> @@ -236,7 +236,7 @@ protected:
>> "/file/dir", "CloneFunc", false, "", 0);
>>
>> auto *Subprogram = DBuilder.createFunction(
>> - CU, "f", "f", File, 4, FuncType, true, true, 3, 0, false);
>> + CU, "f", "f", File, 4, FuncType, true, true, 3, DINode::FlagZero, false);
>> OldFunc->setSubprogram(Subprogram);
>>
>> // Function body
>> @@ -422,7 +422,8 @@ protected:
>> "/file/dir", "CloneModule", false, "", 0);
>> // Function DI
>> auto *Subprogram = DBuilder.createFunction(CU, "f", "f", File, 4, DFuncType,
>> - true, true, 3, 0, false);
>> + true, true, 3, DINode::FlagZero,
>> + false);
>> F->setSubprogram(Subprogram);
>>
>> auto *Entry = BasicBlock::Create(C, "", F);
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
More information about the llvm-commits
mailing list