diff options
| author | Vlad Tsyrklevich <vtsyrklevich@google.com> | 2019-10-28 15:21:38 -0700 |
|---|---|---|
| committer | Vlad Tsyrklevich <vtsyrklevich@google.com> | 2019-10-28 15:21:59 -0700 |
| commit | ad531fff81a2a266ffed1d7da3333778cb59c983 (patch) | |
| tree | 0d4bc00852b8aa9fcb99bab359dc8d73a8e2d4fc /clang/lib/CodeGen/CGCall.cpp | |
| parent | 2513250be336ad92af47da2c225e7b7b69b9922f (diff) | |
| download | bcm5719-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.cpp | 24 |
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. |

