llvm-project/clang/lib/AST
George Burgess IV bdb5b2687a Make __builtin_object_size always answer correctly
__builtin_object_size would return incorrect answers for many uses where
type=3. This fixes the inaccuracy by making us emit 0 instead of LLVM's
objectsize intrinsic.

Additionally, there are many cases where we would emit suboptimal (but
correct) answers, such as when arrays are involved. This patch fixes
some of these cases (please see new tests in test/CodeGen/object-size.c
for specifics on which cases are improved)

Resubmit of r245323 with PR24493 fixed.
Patch mostly by Richard Smith.
Differential Revision: http://reviews.llvm.org/D12000
This fixes PR15212.

llvm-svn: 245403
2015-08-19 02:19:07 +00:00
..
APValue.cpp Simplify creation of a bunch of ArrayRefs by using None, makeArrayRef or just letting them be implicitly created. 2014-08-27 06:28:36 +00:00
ASTConsumer.cpp Introduce a PCHContainerOperations interface (NFC). 2015-06-20 18:53:08 +00:00
ASTContext.cpp [ASTContext] Call APValue destructors for MaterializedTemporaryValues 2015-08-14 14:43:50 +00:00
ASTDiagnostic.cpp Remove and forbid raw_svector_ostream::flush() calls. 2015-08-13 18:12:56 +00:00
ASTDumper.cpp Implement variance for Objective-C type parameters. 2015-07-07 03:58:54 +00:00
ASTImporter.cpp [AST] ArrayRefize template argument packs. No functionality change intended. 2015-08-05 09:40:22 +00:00
ASTTypeTraits.cpp Fix bug in DynTypedMatcher::constructVariadic() that would cause false negatives. 2014-10-06 13:14:30 +00:00
AttrImpl.cpp Devirtualize Attr and all subclasses. 2015-03-19 16:06:49 +00:00
CMakeLists.txt MS ABI: Don't use the Itanium scheme for numbering lambdas 2014-08-22 04:22:50 +00:00
CXXABI.h Revert r240270 ("Fixed/added namespace ending comments using clang-tidy"). 2015-06-22 23:07:51 +00:00
CXXInheritance.cpp unique_ptrify CXXBasePaths::DeclsFound & remove the then-unnecessary user-defined dtor 2015-08-18 23:56:00 +00:00
Comment.cpp Use llvm::makeArrayRef instead of explicitly calling ArrayRef constructor and mentioning the type. This works now that we have a conversion from ArrayRef<T*> to ArrayRef<const T*>. 2014-08-30 16:55:39 +00:00
CommentBriefParser.cpp Some refactoring in my patch on document 2013-03-02 02:39:57 +00:00
CommentCommandTraits.cpp Fix for PR21254 - Assertion in comment parser 2014-10-15 16:18:20 +00:00
CommentLexer.cpp Comment parsing: fix an assertion failure on a verbatim block terminated with "**/" 2015-04-15 23:45:43 +00:00
CommentParser.cpp [C++11] Use 'nullptr'. AST edition. 2014-05-12 05:36:57 +00:00
CommentSema.cpp [C++11] Use 'nullptr'. AST edition. 2014-05-12 05:36:57 +00:00
Decl.cpp Convert a few classes over to use the new TrailingObjects helper. 2015-08-06 20:26:32 +00:00
DeclBase.cpp function_ref-ize ExternalASTSource::FindExternalLexicalDecl and remove its 2015-08-05 22:41:45 +00:00
DeclCXX.cpp [AST] Turn the callbacks of lookupInBases and forallBases into a function_ref 2015-07-25 15:07:25 +00:00
DeclFriend.cpp [C++11] Use 'nullptr'. AST edition. 2014-05-12 05:36:57 +00:00
DeclGroup.cpp Replace custom alignment enforcement with LLVM_ALIGNAS. 2015-04-02 12:25:07 +00:00
DeclObjC.cpp DeclObjC: Move computing the type of self into a separate function (NFC). 2015-07-08 22:15:59 +00:00
DeclOpenMP.cpp [C++11] Use 'nullptr'. AST edition. 2014-05-12 05:36:57 +00:00
DeclPrinter.cpp Implement variance for Objective-C type parameters. 2015-07-07 03:58:54 +00:00
DeclTemplate.cpp Convert a few classes over to use the new TrailingObjects helper. 2015-08-06 20:26:32 +00:00
DeclarationName.cpp [C++11] Use 'nullptr'. AST edition. 2014-05-12 05:36:57 +00:00
Expr.cpp Remove and forbid raw_svector_ostream::flush() calls. 2015-08-13 18:12:56 +00:00
ExprCXX.cpp [AST] ArrayRefize template argument packs. No functionality change intended. 2015-08-05 09:40:22 +00:00
ExprClassification.cpp Implementing C99 partial re-initialization behavior (DR-253) 2015-06-10 00:27:52 +00:00
ExprConstant.cpp Make __builtin_object_size always answer correctly 2015-08-19 02:19:07 +00:00
ExternalASTSource.cpp function_ref-ize ExternalASTSource::FindExternalLexicalDecl and remove its 2015-08-05 22:41:45 +00:00
InheritViz.cpp InheritViz: Hide implementation details 2015-03-09 15:03:20 +00:00
ItaniumCXXABI.cpp Revert r240270 ("Fixed/added namespace ending comments using clang-tidy"). 2015-06-22 23:07:51 +00:00
ItaniumMangle.cpp Remove and forbid raw_svector_ostream::flush() calls. 2015-08-13 18:12:56 +00:00
Makefile
Mangle.cpp Remove and forbid raw_svector_ostream::flush() calls. 2015-08-13 18:12:56 +00:00
MicrosoftCXXABI.cpp Revert r240270 ("Fixed/added namespace ending comments using clang-tidy"). 2015-06-22 23:07:51 +00:00
MicrosoftMangle.cpp Remove and forbid raw_svector_ostream::flush() calls. 2015-08-13 18:12:56 +00:00
NSAPI.cpp [ObjC] Circular containers: add support of subclasses 2015-08-06 04:51:14 +00:00
NestedNameSpecifier.cpp [UB] Fix the two ways that we would try to memcpy from a null buffer in 2015-08-04 03:52:56 +00:00
ParentMap.cpp Switch users of the 'for (StmtRange range = stmt->children(); range; ++range)‘ pattern to range for loops. 2015-07-02 21:03:14 +00:00
RawCommentList.cpp Allow any comment to be a trailing comment when -fparse-all-comments is on. 2015-07-15 19:13:39 +00:00
RecordLayout.cpp CXXInfo memory should be released after calling the destructor 2014-05-24 07:19:25 +00:00
RecordLayoutBuilder.cpp [dllimport] A non-imported class with an imported key can't have a key 2015-08-10 19:39:01 +00:00
SelectorLocationsKind.cpp
Stmt.cpp [OPENMP 4.1] Allow variables with reference types in private clauses. 2015-08-18 06:47:21 +00:00
StmtIterator.cpp StmtIterator: Put stmt and decl group pointer into a union. 2015-07-03 15:12:36 +00:00
StmtPrinter.cpp This patch commits OpenMP 4 target device clauses 2015-08-07 16:16:36 +00:00
StmtProfile.cpp [OPENMP 4.1] Allow variables with reference types in private clauses. 2015-08-18 06:47:21 +00:00
StmtViz.cpp
TemplateBase.cpp [AST] ArrayRefize template argument packs. No functionality change intended. 2015-08-05 09:40:22 +00:00
TemplateName.cpp [AST] ArrayRefize template argument packs. No functionality change intended. 2015-08-05 09:40:22 +00:00
Type.cpp [AST] ArrayRefize template argument packs. No functionality change intended. 2015-08-05 09:40:22 +00:00
TypeLoc.cpp C++ support for Objective-C lightweight generics. 2015-07-07 03:58:14 +00:00
TypePrinter.cpp Implement the Objective-C __kindof type qualifier. 2015-07-07 03:58:42 +00:00
VTTBuilder.cpp Update for LLVM API change to make Small(Ptr)Set::insert return pair<iterator, bool> as per the C++ standard's associative container concept. 2014-11-19 07:49:47 +00:00
VTableBuilder.cpp [VTableBuilder] Use range-based for loops. No functional change intended 2015-07-25 17:10:49 +00:00