Add a spelling of pass_object_size that uses __builtin_dynamic_object_size
authorErik Pilkington <erik.pilkington@gmail.com>
Tue, 19 Mar 2019 20:44:18 +0000 (20:44 +0000)
committerErik Pilkington <erik.pilkington@gmail.com>
Tue, 19 Mar 2019 20:44:18 +0000 (20:44 +0000)
commit02d5fb1a6efb96706ca781c6a50624d0e0d7b842
tree99c184fa2a4e468d05d7bb77864d19d14b2a07c4
parent1663c9466f37ae123dad66dc863791d14bdf09dc
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
clang/include/clang/Basic/Attr.td
clang/include/clang/Basic/AttrDocs.td
clang/lib/AST/ItaniumMangle.cpp
clang/lib/AST/MicrosoftMangle.cpp
clang/lib/CodeGen/CGCall.cpp
clang/lib/Sema/SemaDecl.cpp
clang/test/CodeGen/pass-object-size.c
clang/test/CodeGenCXX/mangle-ms.cpp
clang/test/Sema/pass-object-size.c