aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Basic/Builtins.cpp
diff options
context:
space:
mode:
authorVitaly Buka <vitalybuka@google.com>2022-04-16 00:18:48 -0700
committerVitaly Buka <vitalybuka@google.com>2022-04-16 00:27:51 -0700
commite75d8b70370435b0ad10388afba0df45fcf9bfcc (patch)
tree5a0fd5f08c473f85aa87e4b38e83a9418d993eea /clang/lib/Basic/Builtins.cpp
parent709868707ca76002f3dc858e2300d3ca13eaf409 (diff)
downloadllvm-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.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));
}