summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDevang Patel <dpatel@apple.com>2011-02-02 22:36:18 +0000
committerDevang Patel <dpatel@apple.com>2011-02-02 22:36:18 +0000
commit84ffdd9ba3039a23e5c034b7a43dcf5e5d84d5cf (patch)
treedfa1108b84d3d48aeddfae8bf59ee4b780e7e31c
parentbe933b470a4b8189608bdcb0a79e89de65833131 (diff)
downloadbcm5719-llvm-84ffdd9ba3039a23e5c034b7a43dcf5e5d84d5cf.tar.gz
bcm5719-llvm-84ffdd9ba3039a23e5c034b7a43dcf5e5d84d5cf.zip
Emit debug info for template value parameters.
llvm-svn: 124756
-rw-r--r--clang/lib/CodeGen/CGDebugInfo.cpp7
-rw-r--r--clang/test/CodeGenCXX/debug-info-template.cpp9
2 files changed, 16 insertions, 0 deletions
diff --git a/clang/lib/CodeGen/CGDebugInfo.cpp b/clang/lib/CodeGen/CGDebugInfo.cpp
index c4a6d570f26..7a67192379a 100644
--- a/clang/lib/CodeGen/CGDebugInfo.cpp
+++ b/clang/lib/CodeGen/CGDebugInfo.cpp
@@ -967,6 +967,13 @@ llvm::DIType CGDebugInfo::CreateType(const RecordType *Ty) {
llvm::DITemplateTypeParameter TTP =
DBuilder.CreateTemplateTypeParameter(TheCU, TTy.getName(), TTy);
TemplateParams.push_back(TTP);
+ } else if (TA.getKind() == TemplateArgument::Integral) {
+ llvm::DIType TTy = getOrCreateType(TA.getIntegralType(), Unit);
+ // FIXME: Get parameter name, instead of parameter type name.
+ llvm::DITemplateValueParameter TVP =
+ DBuilder.CreateTemplateValueParameter(TheCU, TTy.getName(), TTy,
+ TA.getAsIntegral()->getZExtValue());
+ TemplateParams.push_back(TVP);
}
}
}
diff --git a/clang/test/CodeGenCXX/debug-info-template.cpp b/clang/test/CodeGenCXX/debug-info-template.cpp
index 3fbfebf915f..0ddfc242b10 100644
--- a/clang/test/CodeGenCXX/debug-info-template.cpp
+++ b/clang/test/CodeGenCXX/debug-info-template.cpp
@@ -11,3 +11,12 @@ public:
};
TC<int> tci;
+
+//CHECK: TU<2>
+//CHECK: DW_TAG_template_value_parameter
+template<unsigned >
+class TU {
+ int b;
+};
+
+TU<2> u2;
OpenPOWER on IntegriCloud