rsmith added inline comments.
================
Comment at: lib/Sema/SemaLookup.cpp:1546-1548
@@ -1545,5 +1549,5 @@
// definition of it, because parameters aren't "within" the definition.
if ((D->isTemplateParameter() || isa<ParmVarDecl>(D))
? isVisible(SemaRef, cast<NamedDecl>(DC))
: SemaRef.hasVisibleDefinition(cast<NamedDecl>(DC))) {
if (SemaRef.ActiveTemplateInstantiations.empty() &&
----------------
This check should already do the right thing for the case of a function-scope
declaration.
================
Comment at: test/Modules/Inputs/PR28794/Subdir/LibBHeader.h:6-10
@@ +5,7 @@
+
+template <typename T, size_t SlabSize, size_t SizeThreshold>
+void *operator new(size_t, BumpPtrAllocatorImpl<T, SlabSize, SizeThreshold> &)
{
+ struct S {};
+ return (void*)0xdead;
+}
+
----------------
We should not be instantiating this template in the first place: the template
definition should not be visible within pr28794.cpp because the LibBHeader.h
submodule is never imported. I would guess the bug is that we're missing a
visibility check for the template definition when we trigger the instantiation
here.
Repository:
rL LLVM
https://reviews.llvm.org/D23492
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits