summaryrefslogtreecommitdiffstats
path: root/clang/test/SemaTemplate/default-arguments-cxx0x.cpp
diff options
context:
space:
mode:
authorManman Ren <manman.ren@gmail.com>2016-02-24 23:05:43 +0000
committerManman Ren <manman.ren@gmail.com>2016-02-24 23:05:43 +0000
commitc445d387769d05753f678f6fb88403e2e1b18710 (patch)
treea2cf407c24229324b4b455e042729ef1eaaefd86 /clang/test/SemaTemplate/default-arguments-cxx0x.cpp
parent1c576054cbfb9dfcacd2ee9d209792ccc95327cc (diff)
downloadbcm5719-llvm-c445d387769d05753f678f6fb88403e2e1b18710.tar.gz
bcm5719-llvm-c445d387769d05753f678f6fb88403e2e1b18710.zip
Fix assertion failure on MaybeODRUseExprs.
In VisitNonTypeTemplateParamDecl, before SubstExpr with the default argument, we should create a ConstantEvaluated ExpressionEvaluationContext. Without this, it is possible to use a PotentiallyEvaluated ExpressionEvaluationContext; and MaybeODRUseExprs will not be cleared when popping the context, causing assertion failure. This is similar to how we handle the context before SubstExpr with the default argument, in SubstDefaultTemplateArgument. Part of PR13986. rdar://24480205 Differential Revision: http://reviews.llvm.org/D17576 llvm-svn: 261803
Diffstat (limited to 'clang/test/SemaTemplate/default-arguments-cxx0x.cpp')
-rw-r--r--clang/test/SemaTemplate/default-arguments-cxx0x.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/clang/test/SemaTemplate/default-arguments-cxx0x.cpp b/clang/test/SemaTemplate/default-arguments-cxx0x.cpp
index 0c97c2056b7..c52899a8e6d 100644
--- a/clang/test/SemaTemplate/default-arguments-cxx0x.cpp
+++ b/clang/test/SemaTemplate/default-arguments-cxx0x.cpp
@@ -75,3 +75,13 @@ namespace rdar23810407 {
g<int>();
}
}
+
+// rdar://problem/24480205
+namespace PR13986 {
+ constexpr unsigned Dynamic = 0;
+ template <unsigned> class A { template <unsigned = Dynamic> void m_fn1(); };
+ class Test {
+ ~Test() {}
+ A<1> m_target;
+ };
+}
OpenPOWER on IntegriCloud