aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Basic/Builtins.cpp
diff options
context:
space:
mode:
authorDavid Tenty <daltenty@ibm.com>2022-04-20 19:06:48 -0400
committerDavid Tenty <daltenty@ibm.com>2022-04-20 19:14:37 -0400
commit98d911e01f3ac62a9f78850b4209effcf2f54c91 (patch)
tree2cf7ce3385c6dbce5897f2c9bd448df8f0c94006 /clang/lib/Basic/Builtins.cpp
parentde6ddaeef3aaa8a9ae3663c12cdb57d9afc0f906 (diff)
downloadllvm-98d911e01f3ac62a9f78850b4209effcf2f54c91.zip
llvm-98d911e01f3ac62a9f78850b4209effcf2f54c91.tar.gz
llvm-98d911e01f3ac62a9f78850b4209effcf2f54c91.tar.bz2
Revert "Treat `std::move`, `forward`, etc. as builtins."
This reverts commit b27430f9f46b88bcd54d992debc8d72e131e1bd0 as the parent https://reviews.llvm.org/D123345 breaks the AIX CI: https://lab.llvm.org/buildbot/#/builders/214/builds/819
Diffstat (limited to 'clang/lib/Basic/Builtins.cpp')
-rw-r--r--clang/lib/Basic/Builtins.cpp36
1 files changed, 10 insertions, 26 deletions
diff --git a/clang/lib/Basic/Builtins.cpp b/clang/lib/Basic/Builtins.cpp
index ef8bb56..6d278e9 100644
--- a/clang/lib/Basic/Builtins.cpp
+++ b/clang/lib/Basic/Builtins.cpp
@@ -48,22 +48,18 @@ void Builtin::Context::InitializeTarget(const TargetInfo &Target,
}
bool Builtin::Context::isBuiltinFunc(llvm::StringRef FuncName) {
- bool InStdNamespace = FuncName.consume_front("std-");
- for (unsigned i = Builtin::NotBuiltin + 1; i != Builtin::FirstTSBuiltin;
- ++i) {
- if (FuncName.equals(BuiltinInfo[i].Name) &&
- (bool)strchr(BuiltinInfo[i].Attributes, 'z') == InStdNamespace)
+ for (unsigned i = Builtin::NotBuiltin + 1; i != Builtin::FirstTSBuiltin; ++i)
+ if (FuncName.equals(BuiltinInfo[i].Name))
return strchr(BuiltinInfo[i].Attributes, 'f') != nullptr;
- }
return false;
}
-/// Is this builtin supported according to the given language options?
-static bool builtinIsSupported(const Builtin::Info &BuiltinInfo,
- const LangOptions &LangOpts) {
+bool Builtin::Context::builtinIsSupported(const Builtin::Info &BuiltinInfo,
+ const LangOptions &LangOpts) {
bool BuiltinsUnsupported =
- LangOpts.NoBuiltin && strchr(BuiltinInfo.Attributes, 'f') != nullptr;
+ (LangOpts.NoBuiltin || LangOpts.isNoBuiltinFunc(BuiltinInfo.Name)) &&
+ strchr(BuiltinInfo.Attributes, 'f');
bool CorBuiltinsUnsupported =
!LangOpts.Coroutines && (BuiltinInfo.Langs & COR_LANG);
bool MathBuiltinsUnsupported =
@@ -115,19 +111,6 @@ void Builtin::Context::initializeBuiltins(IdentifierTable &Table,
for (unsigned i = 0, e = AuxTSRecords.size(); i != e; ++i)
Table.get(AuxTSRecords[i].Name)
.setBuiltinID(i + Builtin::FirstTSBuiltin + TSRecords.size());
-
- // Step #4: Unregister any builtins specified by -fno-builtin-foo.
- for (llvm::StringRef Name : LangOpts.NoBuiltinFuncs) {
- bool InStdNamespace = Name.consume_front("std-");
- auto NameIt = Table.find(Name);
- if (NameIt != Table.end()) {
- unsigned ID = NameIt->second->getBuiltinID();
- if (ID != Builtin::NotBuiltin && isPredefinedLibFunction(ID) &&
- isInStdNamespace(ID) == InStdNamespace) {
- Table.get(Name).setBuiltinID(Builtin::NotBuiltin);
- }
- }
- }
}
unsigned Builtin::Context::getRequiredVectorWidth(unsigned ID) const {
@@ -207,7 +190,8 @@ bool Builtin::Context::performsCallback(unsigned ID,
}
bool Builtin::Context::canBeRedeclared(unsigned ID) const {
- return ID == Builtin::NotBuiltin || ID == Builtin::BI__va_start ||
- (!hasReferenceArgsOrResult(ID) && !hasCustomTypechecking(ID)) ||
- isInStdNamespace(ID);
+ return ID == Builtin::NotBuiltin ||
+ ID == Builtin::BI__va_start ||
+ (!hasReferenceArgsOrResult(ID) &&
+ !hasCustomTypechecking(ID));
}