History log of /external/clang/test/Modules/Inputs/cxx-templates-b.h
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
651f13cea278ec967336033dd032faef0e9fc2ec 24-Apr-2014 Stephen Hines <srhines@google.com> Updated to Clang 3.5a.

Change-Id: I8127eb568f674c2e72635b639a3295381fe8af82
/external/clang/test/Modules/Inputs/cxx-templates-b.h
7a3dfcdfb32c08f2f6f4a90a097bb240fdc1a94c 16-Oct-2013 Richard Smith <richard-llvm@metafoo.co.uk> Test that we can merge together explicit and partial specializations from
merged declarations of a class template.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@192746 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/Modules/Inputs/cxx-templates-b.h
d692a84e18fb48e6442bee83364f1d301f5b8404 16-Oct-2013 Richard Smith <richard-llvm@metafoo.co.uk> C++ modules: merging for enumerations and enumerators with multiple definitions
(eg through template instantiations in multiple modules).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@192740 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/Modules/Inputs/cxx-templates-b.h
8bfc1e118169229960b90a4ef8761ee0eb296755 14-Oct-2013 Richard Smith <richard-llvm@metafoo.co.uk> Merge common pointers for redeclarations of the same template across modules.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@192560 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/Modules/Inputs/cxx-templates-b.h
b60fae50d38a0291e1c5731b2fb22849d26ca342 09-Sep-2013 Richard Smith <richard-llvm@metafoo.co.uk> C++ modules: if a class is defined in multiple modules (for instance, because
it is an implicit instantiation of a class template specialization), pick the
first-loaded definition to be the canonical definition, and merge all other
definitions into it.

This is still rather incomplete -- we need to extend every form of declaration
that can appear within a CXXRecordDecl to be redeclarable if it came from an
AST file (this includes fields, enumerators, ...).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@190315 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/Modules/Inputs/cxx-templates-b.h
1888b910a5512262228e785cc9caf90296c06a45 02-Aug-2013 Richard Smith <richard-llvm@metafoo.co.uk> When merging redeclaration chains across modules, if a declaration is visible
in one module but is only declared as a friend in another module, keep it
visible in the result of the merge.

This is incomplete on two axes:

1) Our handling of local extern declarations is basically broken (we put them
in the wrong decl context, and don't find them in redeclaration lookup, unless
they've previously been declared), and this results in them making friends
visible after a merge.

2) Eventually we'll need to mark that this has happened, and more carefully
check whether a declaration should be visible if it was only visible in some
of the modules in which it was declared. Fortunately it's rare for the
identifier namespace of a declaration to change along its redeclaration chain.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187639 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/Modules/Inputs/cxx-templates-b.h
b775100fea6d8955149897dae1adca50ca471d17 26-Jul-2013 Richard Smith <richard-llvm@metafoo.co.uk> When we perform dependent name lookup during template instantiation, it's not
sufficient to only consider names visible at the point of instantiation,
because that may not include names that were visible when the template was
defined. More generally, if the instantiation backtrace goes through a module
M, then every declaration visible within M should be available to the
instantiation. Any of those declarations might be part of the interface that M
intended to export to a template that it instantiates.

The fix here has two parts:

1) If we find a non-visible declaration during name lookup during template
instantiation, check whether the declaration was visible from the defining
module of all entities on the active template instantiation stack. The defining
module is not the owning module in all cases: we look at the module in which a
template was defined, not the module in which it was first instantiated.

2) Perform pending instantiations at the end of a module, not at the end of the
translation unit. This is general goodness, since it significantly cuts down
the amount of redundant work that is performed in every TU importing a module,
and also implicitly adds the module containing the point of instantiation to
the set of modules checked for declarations in a lookup within a template
instantiation.

There's a known issue here with template instantiations performed while
building a module, if additional imports are added later on. I'll fix that
in a subsequent commit.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187167 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/Modules/Inputs/cxx-templates-b.h
9db7f57c1e3db8a2d06a833a4e0341f0fe310640 25-Jun-2013 Richard Smith <richard-llvm@metafoo.co.uk> Fix deserializing of class template partial specializations. Assign sequence
numbers as we deserialize class template partial specializations. We can't
assume that the old sequence numbers will work.

The sequence numbers are still deterministic, but are now a lot less
predictable for class template partial specializations in modules/PCH.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184811 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/Modules/Inputs/cxx-templates-b.h
98f0723ca24c604d72a10047b10b60743ac71f27 25-Jun-2013 Richard Smith <richard-llvm@metafoo.co.uk> Check for matching template-parameter-lists when merging template declarations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184791 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/Modules/Inputs/cxx-templates-b.h
acd954bd8f28383e7538c4d0fd989763744f5e99 24-Jun-2013 Richard Smith <richard-llvm@metafoo.co.uk> Slightly improve cross-module merging for function templates.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184689 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/Modules/Inputs/cxx-templates-b.h