[all-commits] [llvm/llvm-project] a08876: [dllexport] Instantiate default ctor default args ...

Hans via All-commits all-commits at lists.llvm.org
Thu Nov 12 04:35:51 PST 2020


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: a088766508aa1a5b6e655a239546f1a64e96eb11
      https://github.com/llvm/llvm-project/commit/a088766508aa1a5b6e655a239546f1a64e96eb11
  Author: Hans Wennborg <hans at chromium.org>
  Date:   2020-11-12 (Thu, 12 Nov 2020)

  Changed paths:
    M clang/include/clang/Sema/Sema.h
    M clang/lib/CodeGen/MicrosoftCXXABI.cpp
    M clang/lib/Sema/SemaDecl.cpp
    M clang/lib/Sema/SemaTemplateInstantiateDecl.cpp
    M clang/test/CodeGenCXX/dllexport-ctor-closure.cpp
    M clang/test/SemaCXX/dllexport.cpp

  Log Message:
  -----------
  [dllexport] Instantiate default ctor default args for explicit specializations (PR45811)

For dllexported default constructors with default arguments, we export
default constructor closures which pass in the default args. (See D8331
for a good explanation.)

For templates, that means those default args must be instantiated even
if the function isn't called. That is done by the
InstantiateDefaultCtorDefaultArgs() function, but it wasn't done for
explicit specializations, causing asserts (see bug).

Differential revision: https://reviews.llvm.org/D91089




More information about the All-commits mailing list