diff options
author | David Tenty <daltenty@ibm.com> | 2022-04-20 19:06:48 -0400 |
---|---|---|
committer | David Tenty <daltenty@ibm.com> | 2022-04-20 19:14:37 -0400 |
commit | 98d911e01f3ac62a9f78850b4209effcf2f54c91 (patch) | |
tree | 2cf7ce3385c6dbce5897f2c9bd448df8f0c94006 /clang/lib/Basic/Builtins.cpp | |
parent | de6ddaeef3aaa8a9ae3663c12cdb57d9afc0f906 (diff) | |
download | llvm-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.cpp | 36 |
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)); } |