From b1ce7c8c01d1ad84075ac3b84db4064da6da0629 Mon Sep 17 00:00:00 2001 From: Paul Robinson Date: Tue, 8 Jan 2019 16:28:11 +0000 Subject: [PATCH] Don't emit DW_AT_enum_class unless it's actually an 'enum class'. Finishes off the functional part of PR36168. Differential Revision: https://reviews.llvm.org/D56393 llvm-svn: 350636 --- clang/lib/CodeGen/CGDebugInfo.cpp | 2 +- clang/test/CodeGenCXX/debug-info-enum-class.cpp | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/clang/lib/CodeGen/CGDebugInfo.cpp b/clang/lib/CodeGen/CGDebugInfo.cpp index f3a07a3..7ebbfbe 100644 --- a/clang/lib/CodeGen/CGDebugInfo.cpp +++ b/clang/lib/CodeGen/CGDebugInfo.cpp @@ -2711,7 +2711,7 @@ llvm::DIType *CGDebugInfo::CreateTypeDefinition(const EnumType *Ty) { llvm::DIType *ClassTy = getOrCreateType(ED->getIntegerType(), DefUnit); return DBuilder.createEnumerationType(EnumContext, ED->getName(), DefUnit, Line, Size, Align, EltArray, ClassTy, - Identifier, ED->isFixed()); + Identifier, ED->isScoped()); } llvm::DIMacro *CGDebugInfo::CreateMacro(llvm::DIMacroFile *Parent, diff --git a/clang/test/CodeGenCXX/debug-info-enum-class.cpp b/clang/test/CodeGenCXX/debug-info-enum-class.cpp index e857bb1..664fbb7 100644 --- a/clang/test/CodeGenCXX/debug-info-enum-class.cpp +++ b/clang/test/CodeGenCXX/debug-info-enum-class.cpp @@ -52,6 +52,7 @@ namespace test2 { // FIXME: this should just be a declaration under -fno-standalone-debug // CHECK: !DICompositeType(tag: DW_TAG_enumeration_type, name: "E" // CHECK-SAME: scope: [[TEST2:![0-9]+]] +// CHECK-NOT: DIFlagFixedEnum // CHECK-SAME: elements: [[TEST_ENUMS:![0-9]+]] // CHECK-SAME: identifier: "_ZTSN5test21EE" // CHECK: [[TEST2]] = !DINamespace(name: "test2" @@ -67,6 +68,7 @@ namespace test3 { // FIXME: this should just be a declaration under -fno-standalone-debug // CHECK: !DICompositeType(tag: DW_TAG_enumeration_type, name: "E" // CHECK-SAME: scope: [[TEST3:![0-9]+]] +// CHECK-NOT: DIFlagFixedEnum // CHECK-SAME: elements: [[TEST_ENUMS]] // CHECK-SAME: identifier: "_ZTSN5test31EE" // CHECK: [[TEST3]] = !DINamespace(name: "test3" @@ -78,6 +80,7 @@ void func(E *) { namespace test4 { // CHECK: !DICompositeType(tag: DW_TAG_enumeration_type, name: "E" // CHECK-SAME: scope: [[TEST4:![0-9]+]] +// CHECK-NOT: DIFlagFixedEnum // CHECK-SAME: elements: [[TEST_ENUMS]] // CHECK-SAME: identifier: "_ZTSN5test41EE" // CHECK: [[TEST4]] = !DINamespace(name: "test4" -- 2.7.4