[llvm] r313041 - Statically assert that enum items don't overflow storage.
Adrian Prantl via llvm-commits
llvm-commits at lists.llvm.org
Tue Sep 12 09:10:24 PDT 2017
Author: adrian
Date: Tue Sep 12 09:10:24 2017
New Revision: 313041
URL: http://llvm.org/viewvc/llvm-project?rev=313041&view=rev
Log:
Statically assert that enum items don't overflow storage.
Modified:
llvm/trunk/include/llvm/DebugInfo/DIContext.h
Modified: llvm/trunk/include/llvm/DebugInfo/DIContext.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/DIContext.h?rev=313041&r1=313040&r2=313041&view=diff
==============================================================================
--- llvm/trunk/include/llvm/DebugInfo/DIContext.h (original)
+++ llvm/trunk/include/llvm/DebugInfo/DIContext.h Tue Sep 12 09:10:24 2017
@@ -112,7 +112,6 @@ struct DILineInfoSpecifier {
: FLIKind(FLIKind), FNKind(FNKind) {}
};
-namespace {
/// This is just a helper to programmatically construct DIDumpType.
enum DIDumpTypeCounter {
DIDT_ID_Null = 0,
@@ -120,15 +119,16 @@ enum DIDumpTypeCounter {
DIDT_ID##ENUM_NAME,
#include "llvm/BinaryFormat/Dwarf.def"
#undef HANDLE_DWARF_SECTION
+ DIDT_ID_Count,
};
-}
+ static_assert(DIDT_ID_Count <= 64, "section types overflow storage");
/// Selects which debug sections get dumped.
enum DIDumpType : uint64_t {
DIDT_Null,
DIDT_All = ~0ULL,
#define HANDLE_DWARF_SECTION(ENUM_NAME, ELF_NAME, CMDLINE_NAME) \
- DIDT_##ENUM_NAME = 1 << DIDT_ID##ENUM_NAME,
+ DIDT_##ENUM_NAME = 1 << (DIDT_ID##ENUM_NAME - 1),
#include "llvm/BinaryFormat/Dwarf.def"
#undef HANDLE_DWARF_SECTION
};
More information about the llvm-commits
mailing list