[PATCH] D126559: [MSVC] Fix pragma alloc_text failing for C files
Stephen Long via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Tue Jun 21 10:58:53 PDT 2022
steplong added a comment.
I tried the following:
FunctionDecl *FD = ND->getAsFunction();
DeclContext *DC = ND->getDeclContext();
DEBUG_WITH_TYPE("foo", llvm::dbgs() << "[FOO] DC->isExternCContext() : " << DC->isExternCContext() << "\n");
DEBUG_WITH_TYPE("foo", llvm::dbgs() << "[FOO] FD->isExternC() : " << FD->isExternC() << "\n");
DEBUG_WITH_TYPE("foo", llvm::dbgs() << "[FOO] FD->isInExternCContext() : " << FD->isInExternCContext() << "\n");
llvm::dbgs() << "[FOO] "; ND->dump();
if (getLangOpts().CPlusPlus && !DC->isExternCContext()) {
Diag(Loc, diag::err_pragma_alloc_text_c_linkage);
return;
}
and I'm getting the following output:
[FOO] DC->isExternCContext() : 0
[FOO] FD->isExternC() : 0
[FOO] FD->isInExternCContext() : 0
[FOO] FunctionDecl 0x10ec0250 prev 0x10ec0148 <foo.cpp:4:1, col:17> col:13 foo 'void ()' static
The C file is:
1 extern "C" {
2 static void foo();
3 }
4 static void foo();
5 #pragma alloc_text("s", foo)
6 static void foo() {}
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D126559/new/
https://reviews.llvm.org/D126559
More information about the cfe-commits
mailing list