<div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Apr 1, 2020 at 1:21 PM David Blaikie via cfe-commits <<a href="mailto:cfe-commits@lists.llvm.org">cfe-commits@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><br>
Author: David Blaikie<br>
Date: 2020-04-01T13:21:13-07:00<br>
New Revision: db92719c1d17f5052e7cd1309b0e1e92240f47be<br>
<br>
URL: <a href="https://github.com/llvm/llvm-project/commit/db92719c1d17f5052e7cd1309b0e1e92240f47be" rel="noreferrer" target="_blank">https://github.com/llvm/llvm-project/commit/db92719c1d17f5052e7cd1309b0e1e92240f47be</a><br>
DIFF: <a href="https://github.com/llvm/llvm-project/commit/db92719c1d17f5052e7cd1309b0e1e92240f47be.diff" rel="noreferrer" target="_blank">https://github.com/llvm/llvm-project/commit/db92719c1d17f5052e7cd1309b0e1e92240f47be.diff</a><br>
<br>
LOG: DebugInfo: Defaulted non-type template parameters of bool type<br>
<br>
Caused an assertion due to mismatched bit widths - this seems like the<br>
right API to use for a possibly width-varying equality test. Though<br>
certainly open to some post-commit review feedback if there's a more<br>
suitable way to do this comparison/test.<br>
<br>
Added: <br>
<br>
<br>
Modified: <br>
    clang/lib/CodeGen/CGDebugInfo.cpp<br>
    clang/test/CodeGenCXX/debug-info-template-parameter.cpp<br>
<br>
Removed: <br>
<br>
<br>
<br>
################################################################################<br>
diff  --git a/clang/lib/CodeGen/CGDebugInfo.cpp b/clang/lib/CodeGen/CGDebugInfo.cpp<br>
index 49c57e9860a6..6d3c2ad66cdc 100644<br>
--- a/clang/lib/CodeGen/CGDebugInfo.cpp<br>
+++ b/clang/lib/CodeGen/CGDebugInfo.cpp<br>
@@ -1817,9 +1817,10 @@ CGDebugInfo::CollectTemplateParams(const TemplateParameterList *TPList,<br>
         if (auto *templateType =<br>
                 dyn_cast_or_null<NonTypeTemplateParmDecl>(TPList->getParam(i)))<br>
           if (templateType->hasDefaultArgument())<br>
-            defaultParameter =<br>
+            defaultParameter = llvm::APSInt::isSameValue(<br>
                 templateType->getDefaultArgument()->EvaluateKnownConstInt(<br>
-                    CGM.getContext()) == TA.getAsIntegral();<br>
+                    CGM.getContext()),<br>
+                TA.getAsIntegral());<br></blockquote><div><br>Hey Richard - is this the best way to do this? Are there other ways to test if a default argument is the same as the actual template parameter we could/should be doing here?<br> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
       TemplateParams.push_back(DBuilder.createTemplateValueParameter(<br>
           TheCU, Name, TTy, defaultParameter,<br>
<br>
diff  --git a/clang/test/CodeGenCXX/debug-info-template-parameter.cpp b/clang/test/CodeGenCXX/debug-info-template-parameter.cpp<br>
index 95e7a187fe10..c38c535d8b06 100644<br>
--- a/clang/test/CodeGenCXX/debug-info-template-parameter.cpp<br>
+++ b/clang/test/CodeGenCXX/debug-info-template-parameter.cpp<br>
@@ -8,22 +8,24 @@<br>
<br>
 // CHECK: DILocalVariable(name: "f1", {{.*}}, type: ![[TEMPLATE_TYPE:[0-9]+]]<br>
 // CHECK: [[TEMPLATE_TYPE]] = {{.*}}!DICompositeType({{.*}}, templateParams: ![[F1_TYPE:[0-9]+]]<br>
-// CHECK: [[F1_TYPE]] = !{![[FIRST:[0-9]+]], ![[SECOND:[0-9]+]]}<br>
+// CHECK: [[F1_TYPE]] = !{![[FIRST:[0-9]+]], ![[SECOND:[0-9]+]], ![[THIRD:[0-9]+]]}<br>
 // CHECK: [[FIRST]] = !DITemplateTypeParameter(name: "T", type: !{{[0-9]*}})<br>
 // CHECK: [[SECOND]] = !DITemplateValueParameter(name: "i", type: !{{[0-9]*}}, value: i32 6)<br>
+// CHECK: [[THIRD]] = !DITemplateValueParameter(name: "b", type: !{{[0-9]*}}, value: i8 0)<br>
<br>
 // CHECK: DILocalVariable(name: "f2", {{.*}}, type: ![[TEMPLATE_TYPE:[0-9]+]]<br>
 // CHECK: [[TEMPLATE_TYPE]] = {{.*}}!DICompositeType({{.*}}, templateParams: ![[F2_TYPE:[0-9]+]]<br>
-// CHECK: [[F2_TYPE]] = !{![[FIRST:[0-9]+]], ![[SECOND:[0-9]+]]}<br>
+// CHECK: [[F2_TYPE]] = !{![[FIRST:[0-9]+]], ![[SECOND:[0-9]+]], ![[THIRD:[0-9]+]]}<br>
 // CHECK: [[FIRST]] = !DITemplateTypeParameter(name: "T", type: !{{[0-9]*}}, defaulted: true)<br>
 // CHECK: [[SECOND]] = !DITemplateValueParameter(name: "i", type: !{{[0-9]*}}, defaulted: true, value: i32 3)<br>
+// CHECK: [[THIRD]] = !DITemplateValueParameter(name: "b", type: !{{[0-9]*}}, defaulted: true, value: i8 1)<br>
<br>
-template <typename T = char, int i = 3><br>
+template <typename T = char, int i = 3, bool b = true><br>
 class foo {<br>
 };<br>
<br>
 int main() {<br>
-  foo<int, 6> f1;<br>
+  foo<int, 6, false> f1;<br>
   foo<> f2;<br>
   return 0;<br>
 }<br>
<br>
<br>
<br>
_______________________________________________<br>
cfe-commits mailing list<br>
<a href="mailto:cfe-commits@lists.llvm.org" target="_blank">cfe-commits@lists.llvm.org</a><br>
<a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits" rel="noreferrer" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits</a><br>
</blockquote></div></div>