summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaDecl.cpp
diff options
context:
space:
mode:
authorErik Pilkington <erik.pilkington@gmail.com>2019-03-19 20:44:18 +0000
committerErik Pilkington <erik.pilkington@gmail.com>2019-03-19 20:44:18 +0000
commit02d5fb1a6efb96706ca781c6a50624d0e0d7b842 (patch)
tree99c184fa2a4e468d05d7bb77864d19d14b2a07c4 /clang/lib/Sema/SemaDecl.cpp
parent1663c9466f37ae123dad66dc863791d14bdf09dc (diff)
downloadbcm5719-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.cpp3
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);
OpenPOWER on IntegriCloud