summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen/CGCall.cpp
diff options
context:
space:
mode:
authorVlad Tsyrklevich <vtsyrklevich@google.com>2019-10-28 15:21:38 -0700
committerVlad Tsyrklevich <vtsyrklevich@google.com>2019-10-28 15:21:59 -0700
commitad531fff81a2a266ffed1d7da3333778cb59c983 (patch)
tree0d4bc00852b8aa9fcb99bab359dc8d73a8e2d4fc /clang/lib/CodeGen/CGCall.cpp
parent2513250be336ad92af47da2c225e7b7b69b9922f (diff)
downloadbcm5719-llvm-ad531fff81a2a266ffed1d7da3333778cb59c983.tar.gz
bcm5719-llvm-ad531fff81a2a266ffed1d7da3333778cb59c983.zip
Revert "[clang] Add no_builtin attribute"
This reverts commit bd87916109483d33455cbf20da2309197b983cdd. It was causing ASan/MSan failures on the sanitizer buildbots.
Diffstat (limited to 'clang/lib/CodeGen/CGCall.cpp')
-rw-r--r--clang/lib/CodeGen/CGCall.cpp24
1 files changed, 4 insertions, 20 deletions
diff --git a/clang/lib/CodeGen/CGCall.cpp b/clang/lib/CodeGen/CGCall.cpp
index 62e8fa03701..b74f6f94242 100644
--- a/clang/lib/CodeGen/CGCall.cpp
+++ b/clang/lib/CodeGen/CGCall.cpp
@@ -1853,27 +1853,11 @@ void CodeGenModule::ConstructAttributeList(
if (const FunctionDecl *Fn = dyn_cast<FunctionDecl>(TargetDecl)) {
AddAttributesFromFunctionProtoType(
getContext(), FuncAttrs, Fn->getType()->getAs<FunctionProtoType>());
+ // Don't use [[noreturn]] or _Noreturn for a call to a virtual function.
+ // These attributes are not inherited by overloads.
const CXXMethodDecl *MD = dyn_cast<CXXMethodDecl>(Fn);
- const bool IsVirtualCall = MD && MD->isVirtual();
- // Don't use [[noreturn]], _Noreturn or [[no_builtin]] for a call to a
- // virtual function. These attributes are not inherited by overloads.
- if (!(AttrOnCallSite && IsVirtualCall)) {
- if (Fn->isNoReturn())
- FuncAttrs.addAttribute(llvm::Attribute::NoReturn);
-
- if (const auto *NBA = TargetDecl->getAttr<NoBuiltinAttr>()) {
- bool HasWildcard = llvm::is_contained(NBA->builtinNames(), "*");
- if (HasWildcard)
- FuncAttrs.addAttribute("no-builtins");
- else
- for (StringRef BuiltinName : NBA->builtinNames()) {
- SmallString<32> AttributeName;
- AttributeName += "no-builtin-";
- AttributeName += BuiltinName;
- FuncAttrs.addAttribute(AttributeName);
- }
- }
- }
+ if (Fn->isNoReturn() && !(AttrOnCallSite && MD && MD->isVirtual()))
+ FuncAttrs.addAttribute(llvm::Attribute::NoReturn);
}
// 'const', 'pure' and 'noalias' attributed functions are also nounwind.
OpenPOWER on IntegriCloud