Skip to content
Snippets Groups Projects
Commit 82b8b985 authored by Vassil Vassilev's avatar Vassil Vassilev
Browse files

[modules] Allow emission of update records for predefined __va_list_tag.

Handles the cases where old __va_list_tag is coming from a module and the new
is not, needing an update record.

Fixes https://llvm.org/bugs/show_bug.cgi?id=27890

Patch by Cristina Cristescu, Richard Smith and me.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@273159 91177308-0d34-0410-b5e6-96231b3b80d8
parent 0bb1494d
No related branches found
No related tags found
No related merge requests found
......@@ -5654,10 +5654,6 @@ static bool isImportedDeclContext(ASTReader *Chain, const Decl *D) {
if (D->isFromASTFile())
return true;
// If we've not loaded any modules, this can't be imported.
if (!Chain || !Chain->getModuleManager().size())
return false;
// The predefined __va_list_tag struct is imported if we imported any decls.
// FIXME: This is a gross hack.
return D == D->getASTContext().getVaListTagDecl();
......
template <class DataType> DataType values(DataType) { __builtin_va_list ValueArgs; return DataType(); }
template <class DataType>
class opt {
public:
template <class Mods>
opt(Mods) {}
};
module A { header "a.h" export * }
// RUN: rm -rf %t
// RUN: %clang_cc1 -std=c++11 -I%S/Inputs/PR27890 -verify %s
// RUN: %clang_cc1 -std=c++11 -fmodules -fmodule-map-file=%S/Inputs/PR27890/module.modulemap -fmodules-cache-path=%t -I%S/Inputs/PR27890 -verify %s
#include "a.h"
enum ActionType {};
opt<ActionType> a(values(""));
// expected-no-diagnostics
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment