- Jan 07, 2009
-
-
Ted Kremenek authored
recent discussions with Thomas Clement and Ken Ferry concerning the "fundamental rule" for Cocoa memory management (http://developer.apple.com/documentation/Cocoa/Conceptual/MemoryMgmt/Tasks/MemoryManagementRules.html). Here is the revised behavior of the checker concerning tracking retain/release counts for objects returned from message expressions involving instance methods: 1) Track the returned object if the return type of the message expression is id<..>, id, or a pointer to *any* object that subclasses NSObject. Such objects are assumed to have a retain count. Previously the checker only tracked objects when the receiver of the message expression was part of the standard Cocoa API (i.e., had class names prefixed with 'NS'). This should significantly expand the amount of checking performed. 2) Consider the object owned if the selector of the message expression contains "alloc", "new", or "copy". Previously we also considered "create", but this doesn't follow from the fundamental rule (discussions with the Cocoa folks confirms this). llvm-svn: 61837
-
Daniel Dunbar authored
llvm-svn: 61833
-
Douglas Gregor authored
nested in the translation unit. This fixes <rdar://problem/6476070>. llvm-svn: 61832
-
- Jan 06, 2009
-
-
Ted Kremenek authored
- Big Idea: Source files are now mmaped when ContentCache::getBuffer() is first called. While this doesn't change the functionality when lexing regular source files, it can result in source files not being paged in when using PTH. - Performance change: - No observable difference (-fsyntax-only/-Eonly) on Cocoa.h when doing regular source lexing. - No observable time difference (-fsyntax-only/-Eonly) on Cocoa.h when using PTH. We do observe, however, a reduction of 279K in memory mapped source code (3% reduction). The majority of pages from Cocoa.h (and friends) are still being pulled in, however, because any literal will cause Preprocessor::getSpelling() to be called (causing the source for the file to get pulled in). The next possible optimization is to cache literal strings in the PTH file to avoid the need for the original header sources entirely. - Right now there is a preprocessor directive to toggle between "lazy" and "eager" creation of MemBuffers. This is not permanent, and is there in the short term to just test additional optimizations. llvm-svn: 61827
-
Ted Kremenek authored
Remove redunant (and incorrect) call to SourceManager::PrintStats(). This would be called after a SourceManager was 'cleared', so it printed bogus results. Moreover, these stats are already printed earlier in the code path. llvm-svn: 61825
-
-
Ted Kremenek authored
Add whitespace to silence the following warning in a Release build: warning: suggest a space before ';' or explicit braces around empty body in 'while' statement llvm-svn: 61820
-
Ted Kremenek authored
Return UnknownVal in RegionStoreManager::getSizeInElements() for unsupported regions. This silences a warning when compiling Release-Asserts builds. llvm-svn: 61818
-
Fariborz Jahanian authored
to track down, easy to fix. This is on going. llvm-svn: 61817
-
rdar://problem/5956221Steve Naroff authored
Fix <rdar://problem/5956221> clang ObjC rewriter: Microsoft-specific __fastcall keyword unrecognized. This fix is C++ specific. llvm-svn: 61816
-
Cedric Venet authored
llvm-svn: 61815
-
Chris Lattner authored
- Simplify ParseDeclCXX to use early exit on error instead of nesting. - Change ParseDeclCXX to using the 'skip on error' form of ExpectAndConsume. - If we don't see the ; in a using directive, still call the action, for hopefully better error recovery. llvm-svn: 61801
-
Chris Lattner authored
llvm-svn: 61800
-
Chris Lattner authored
llvm-svn: 61799
-
Douglas Gregor authored
llvm-svn: 61798
-
Chris Lattner authored
llvm-svn: 61797
-
Chris Lattner authored
MaybeParseTypeSpecifier -> ParseOptionalTypeSpecifier. llvm-svn: 61796
-
Chris Lattner authored
llvm-svn: 61795
-
Daniel Dunbar authored
llvm-svn: 61794
-
Daniel Dunbar authored
driver to lookup this way instead of manually scanning arguments in multiple places. llvm-svn: 61793
-
Chris Lattner authored
llvm-svn: 61792
-
Chris Lattner authored
llvm-svn: 61791
-
Douglas Gregor authored
llvm-svn: 61790
-
Douglas Gregor authored
information for declarations that were referenced via a qualified-id, e.g., N::C::value. We keep track of the location of the start of the nested-name-specifier. Note that the difference between QualifiedDeclRefExpr and DeclRefExpr does have an effect on the semantics of function calls in two ways: 1) The use of a qualified-id instead of an unqualified-id suppresses argument-dependent lookup 2) If the name refers to a virtual function, the qualified-id version will call the function determined statically while the unqualified-id version will call the function determined dynamically (by looking up the appropriate function in the vtable). Neither of these features is implemented yet, but we do print out qualified names for QualifiedDeclRefExprs as part of the AST printing. llvm-svn: 61789
-
Chris Lattner authored
shorter and more accurate. The type name might not be qualified. llvm-svn: 61788
-
Chris Lattner authored
llvm-svn: 61787
-
Chris Lattner authored
llvm-svn: 61786
-
Daniel Dunbar authored
InputArg and UnknownArg. - Every argument now always corresponds to some option, which simplifies other code. llvm-svn: 61783
-
Ted Kremenek authored
- 'Buffer' is now private and must be accessed via 'getBuffer()'. This paves the way for lazily mapping in source files on demand. - Added 'getSize()' (which gets the size of the content without necessarily accessing the MemBuffer) and 'getSizeBytesMapped()'. - Modifed SourceManager to use these new methods. This reduces the number of places that actually access the MemBuffer object for a file to those that actually look at the character data. These changes result in no performance change for -fsyntax-only on Cocoa.h. llvm-svn: 61782
-
Daniel Dunbar authored
llvm-svn: 61780
-
Chris Lattner authored
llvm-svn: 61770
-
Chris Lattner authored
avoid the version of Preprocessor::getSpelling that returns an std::string. llvm-svn: 61769
-
- Jan 05, 2009
-
-
Daniel Dunbar authored
Improve ext vector test case. llvm-svn: 61766
-
Daniel Dunbar authored
llvm-svn: 61764
-
Daniel Dunbar authored
llvm-svn: 61763
-
Daniel Dunbar authored
- I'm not sure this is appropriate, but it seems reasonable to be able to call getFloatingRank on anything which isFloatingType(). llvm-svn: 61758
-
Sebastian Redl authored
llvm-svn: 61747
-
Sebastian Redl authored
Make C++ classes track the POD property (C++ [class]p4) Track the existence of a copy assignment operator. Implicitly declare the copy assignment operator if none is provided. Implement most of the parsing job for the G++ type traits extension. Fully implement the low-hanging fruit of the type traits: __is_pod: Whether a type is a POD. __is_class: Whether a type is a (non-union) class. __is_union: Whether a type is a union. __is_enum: Whether a type is an enum. __is_polymorphic: Whether a type is polymorphic (C++ [class.virtual]p1). llvm-svn: 61746
-
Daniel Dunbar authored
- Entry point is tools/ccc/xcc until we are a functional replacement for ccc. This is highly experimental (FIXME/LOC ratio of 3.4%), quite crufty, and barely usable (and then only on my specific Darwin). However, many of the right ideas are present, and it already fixes a number of things gcc gets wrong. The major missing component is argument translation for tools (translating driver arguments into cc1/ld/as/etc. arguments). This is a large part of the driver functionality and will probably double the LOC, but my hope is that the current architecture is relatively stable. Documentation & motivation to follow soon... llvm-svn: 61739
-
Douglas Gregor authored
llvm-svn: 61737
-