Author: Michael Buch Date: 2022-12-14T22:31:45Z New Revision: 5996ce17fb265e461b5d580c1873cb8e3ff8d62d
URL: https://github.com/llvm/llvm-project/commit/5996ce17fb265e461b5d580c1873cb8e3ff8d62d DIFF: https://github.com/llvm/llvm-project/commit/5996ce17fb265e461b5d580c1873cb8e3ff8d62d.diff LOG: [clang][DebugInfo] Attach DW_AT_default_value to template arg metadata regardless of DwarfVersion **Summary** Starting with DWARFv5, DW_AT_default_value can be used to indicate that a template argument has a default value. With this patch Clang will attach the attribute to the debug metadata regardless of version. In a follow-up patch we will change llvm to emit this attribute in earlier versions of DWARF, unless compiling with -gstrict-dwarf. **Details** * Previously the DwarfVersion check in CGDebugInfo was inconsistent: For non-type template arguments we attached the attribute to the debug metadata in DWARFv5 only. Whereas for type template arguments we didn't have such a version restriction. With this patch we attach the attribute regardless of DWARF version (and instead offload the check to the AsmPrinter in a future patch). Added: Modified: clang/lib/CodeGen/CGDebugInfo.cpp clang/test/CodeGenCXX/debug-info-template-parameter.cpp Removed: ################################################################################ diff --git a/clang/lib/CodeGen/CGDebugInfo.cpp b/clang/lib/CodeGen/CGDebugInfo.cpp index 3e370fb17b1d..9e2e1842e5e9 100644 --- a/clang/lib/CodeGen/CGDebugInfo.cpp +++ b/clang/lib/CodeGen/CGDebugInfo.cpp @@ -2018,7 +2018,7 @@ CGDebugInfo::CollectTemplateParams(Optional<TemplateArgs> OArgs, } break; case TemplateArgument::Integral: { llvm::DIType *TTy = getOrCreateType(TA.getIntegralType(), Unit); - if (Args.TList && CGM.getCodeGenOpts().DwarfVersion >= 5) + if (Args.TList) if (auto *templateType = dyn_cast_or_null<NonTypeTemplateParmDecl>( Args.TList->getParam(i))) if (templateType->hasDefaultArgument() && diff --git a/clang/test/CodeGenCXX/debug-info-template-parameter.cpp b/clang/test/CodeGenCXX/debug-info-template-parameter.cpp index dac7871803c5..46ef45197460 100644 --- a/clang/test/CodeGenCXX/debug-info-template-parameter.cpp +++ b/clang/test/CodeGenCXX/debug-info-template-parameter.cpp @@ -3,6 +3,7 @@ // RUN: %clang_cc1 -emit-llvm %std_cxx11-14 -dwarf-version=5 -triple x86_64 %s -O0 -disable-llvm-passes -debug-info-kind=standalone -o - | FileCheck %s --check-prefixes=CHECK,PRE17 // RUN: %clang_cc1 -emit-llvm %std_cxx17- -dwarf-version=5 -triple x86_64 %s -O0 -disable-llvm-passes -debug-info-kind=standalone -o - | FileCheck %s --check-prefixes=CHECK,CXX17 +// RUN: %clang_cc1 -emit-llvm %std_cxx17- -dwarf-version=4 -triple x86_64 %s -O0 -disable-llvm-passes -debug-info-kind=standalone -o - | FileCheck %s --check-prefixes=CHECK,CXX17 // CHECK: DILocalVariable(name: "f1", {{.*}}, type: ![[TEMPLATE_TYPE:[0-9]+]] // CHECK: [[TEMPLATE_TYPE]] = {{.*}}!DICompositeType({{.*}}, templateParams: ![[F1_TYPE:[0-9]+]] _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits