diff options
author | Eric Christopher <echristo@apple.com> | 2012-05-23 00:09:20 +0000 |
---|---|---|
committer | Eric Christopher <echristo@apple.com> | 2012-05-23 00:09:20 +0000 |
commit | bb0f6eac1f2d04e485607f0726c31a84ce9b8ced (patch) | |
tree | 288d3478d446323afa96f336f7ef0a81ad4a741c /lib | |
parent | 2f0a7484527ddf4ac5f9d24231bcce90d02323e2 (diff) | |
download | llvm-bb0f6eac1f2d04e485607f0726c31a84ce9b8ced.tar.gz llvm-bb0f6eac1f2d04e485607f0726c31a84ce9b8ced.tar.bz2 llvm-bb0f6eac1f2d04e485607f0726c31a84ce9b8ced.tar.xz |
Add support for C++11 enum classes in llvm.
Part of rdar://11496790
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157303 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Analysis/DIBuilder.cpp | 5 | ||||
-rw-r--r-- | lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp | 5 |
2 files changed, 8 insertions, 2 deletions
diff --git a/lib/Analysis/DIBuilder.cpp b/lib/Analysis/DIBuilder.cpp index 0e7d540100..d6c6147f13 100644 --- a/lib/Analysis/DIBuilder.cpp +++ b/lib/Analysis/DIBuilder.cpp @@ -548,7 +548,8 @@ DIType DIBuilder::createEnumerationType(DIDescriptor Scope, StringRef Name, DIFile File, unsigned LineNumber, uint64_t SizeInBits, uint64_t AlignInBits, - DIArray Elements) { + DIArray Elements, + DIType ClassType) { // TAG_enumeration_type is encoded in DICompositeType format. Value *Elts[] = { GetTagConstant(VMContext, dwarf::DW_TAG_enumeration_type), @@ -560,7 +561,7 @@ DIType DIBuilder::createEnumerationType(DIDescriptor Scope, StringRef Name, ConstantInt::get(Type::getInt64Ty(VMContext), AlignInBits), ConstantInt::get(Type::getInt32Ty(VMContext), 0), ConstantInt::get(Type::getInt32Ty(VMContext), 0), - NULL, + ClassType, Elements, ConstantInt::get(Type::getInt32Ty(VMContext), 0), llvm::Constant::getNullValue(Type::getInt32Ty(VMContext)), diff --git a/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp b/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp index 615b46f049..a5d9b12034 100644 --- a/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp +++ b/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp @@ -776,6 +776,11 @@ void CompileUnit::constructTypeDIE(DIE &Buffer, DICompositeType CTy) { Buffer.addChild(ElemDie); } } + DIType DTy = CTy.getTypeDerivedFrom(); + if (DTy.Verify()) { + addType(&Buffer, DTy); + addUInt(&Buffer, dwarf::DW_AT_enum_class, dwarf::DW_FORM_flag, 1); + } } break; case dwarf::DW_TAG_subroutine_type: { |