diff options
author | Vitaly Buka <vitalybuka@google.com> | 2022-04-16 00:18:48 -0700 |
---|---|---|
committer | Vitaly Buka <vitalybuka@google.com> | 2022-04-16 00:27:51 -0700 |
commit | e75d8b70370435b0ad10388afba0df45fcf9bfcc (patch) | |
tree | 5a0fd5f08c473f85aa87e4b38e83a9418d993eea /clang/lib/Basic/Builtins.cpp | |
parent | 709868707ca76002f3dc858e2300d3ca13eaf409 (diff) | |
download | llvm-e75d8b70370435b0ad10388afba0df45fcf9bfcc.zip llvm-e75d8b70370435b0ad10388afba0df45fcf9bfcc.tar.gz llvm-e75d8b70370435b0ad10388afba0df45fcf9bfcc.tar.bz2 |
Revert "Treat `std::move`, `forward`, and `move_if_noexcept` as builtins."
Revert "Extend support for std::move etc to also cover std::as_const and"
Revert "Update test to handle opaque pointers flag flip."
It crashes on libcxx tests https://lab.llvm.org/buildbot/#/builders/85/builds/8174
This reverts commit fc3090109643af8d2da9822d0f99c84742b9c877.
This reverts commit a571f82a50416b767fd3cce0fb5027bb5dfec58c.
This reverts commit 64c045e25b8471bbb572bd29159c294a82a86a25.
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)); } |