diff options
author | Erik Pilkington <erik.pilkington@gmail.com> | 2019-03-19 20:44:18 +0000 |
---|---|---|
committer | Erik Pilkington <erik.pilkington@gmail.com> | 2019-03-19 20:44:18 +0000 |
commit | 02d5fb1a6efb96706ca781c6a50624d0e0d7b842 (patch) | |
tree | 99c184fa2a4e468d05d7bb77864d19d14b2a07c4 /clang/lib/Sema/SemaDecl.cpp | |
parent | 1663c9466f37ae123dad66dc863791d14bdf09dc (diff) | |
download | bcm5719-llvm-02d5fb1a6efb96706ca781c6a50624d0e0d7b842.tar.gz bcm5719-llvm-02d5fb1a6efb96706ca781c6a50624d0e0d7b842.zip |
Add a spelling of pass_object_size that uses __builtin_dynamic_object_size
The attribute pass_dynamic_object_size(n) behaves exactly like
pass_object_size(n), but instead of evaluating __builtin_object_size on calls,
it evaluates __builtin_dynamic_object_size, which has the potential to produce
runtime code when the object size can't be determined statically.
Differential revision: https://reviews.llvm.org/D58757
llvm-svn: 356515
Diffstat (limited to 'clang/lib/Sema/SemaDecl.cpp')
-rw-r--r-- | clang/lib/Sema/SemaDecl.cpp | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp index 9fa7f48d8d2..2f8295aa977 100644 --- a/clang/lib/Sema/SemaDecl.cpp +++ b/clang/lib/Sema/SemaDecl.cpp @@ -2935,7 +2935,8 @@ static bool hasIdenticalPassObjectSizeAttrs(const FunctionDecl *A, const auto *AttrB = B->getAttr<PassObjectSizeAttr>(); if (AttrA == AttrB) return true; - return AttrA && AttrB && AttrA->getType() == AttrB->getType(); + return AttrA && AttrB && AttrA->getType() == AttrB->getType() && + AttrA->isDynamic() == AttrB->isDynamic(); }; return std::equal(A->param_begin(), A->param_end(), B->param_begin(), AttrEq); |