summaryrefslogtreecommitdiffstats
path: root/clang/lib
Commit message (Collapse)AuthorAgeFilesLines
...
* Convert expressions over to Sebastian's spiffy ASTContext::new() operator.Steve Naroff2009-01-211-113/+106
| | | | | | No functionality change. llvm-svn: 62640
* Fix: <rdar://problem/6510344> [pth] PTH slows down regular lexer ↵Ted Kremenek2009-01-202-15/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | considerably (when it has substantial work) Changes to IdentifierTable: - High-level summary: StringMap never owns IdentifierInfos. It just references them. - The string map now has StringMapEntry<IdentifierInfo*> instead of StringMapEntry<IdentifierInfo>. The IdentifierInfo object is allocated using the same bump pointer allocator as used by the StringMap. Changes to IdentifierInfo: - Added an extra pointer to point to the StringMapEntry<IdentifierInfo*> in the string map. This pointer will be null if the IdentifierInfo* is *only* used by the PTHLexer (that is it isn't in the StringMap). Algorithmic changes: - Non-PTH case: IdentifierInfo::get() will always consult the StringMap first to see if we have an IdentifierInfo object. If that StringMapEntry references a null pointer, we allocate a new one from the BumpPtrAllocator and update the reference in the StringMapEntry. - PTH case: We do the same lookup as with the non-PTH case, but if we don't get a hit in the StringMap we do a secondary lookup in the PTHManager for the IdentifierInfo. If we don't find an IdentifierInfo we create a new one as in the non-PTH case. If we do find and IdentifierInfo in the PTHManager, we update the StringMapEntry to refer to it so that the IdentifierInfo will be found on the next StringMap lookup. This way we only do a binary search in the PTH file at most once for a given IdentifierInfo. This greatly speeds things up for source files containing a non-trivial amount of code. Performance impact: While these changes do add some extra indirection in IdentifierTable to access an IdentifierInfo*, I saw speedups even in the non-PTH case as well. Non-PTH: For -fsyntax-only on Cocoa.h, we see a 6% speedup. PTH (with Cocoa.h in token cache): 11% speedup. I also did an experiment where we did -fsyntax-only on a source file including a large header and Cocoa.h, but the token cache did not contain the larger header. For this file, we were seeing a performance *regression* when using PTH of 3% over non-PTH. Now we are seeing a performance improvement of 9%! Tests: The serialization tests are now failing. I looked at this extensively, and I my belief is that this change is unmasking a bug rather than introducing a new one. I have disabled the serialization tests for now. llvm-svn: 62636
* Provide a placement new taking an ASTContext argument.Sebastian Redl2009-01-201-8/+6
| | | | | | | This allows more concise syntax when allocating an object using the ASTContext's allocator. Convert a few allocations to this operator to for test purposes. llvm-svn: 62623
* Fix some errors I noticedAnders Carlsson2009-01-201-4/+4
| | | | llvm-svn: 62620
* Fix a crash Anders' was seeing due to free'ing an invalid pointerChris Lattner2009-01-201-12/+2
| | | | | | caused by my previous commit. llvm-svn: 62613
* Convert more exprs to use ASTContext's Allocator.Steve Naroff2009-01-201-11/+18
| | | | | | | | When using a BumpPtrAllocator, this reduces malloc overhead from 2.2->1.9% (for Cocoa.h). At this point, malloc() has dropped the fourth most expensive routine (behind Preprocessor::HandleIdentifier()). llvm-svn: 62612
* Use the ASTContext's allocator for FunctionTypeNoProto and TypeOfExprDouglas Gregor2009-01-201-2/+4
| | | | llvm-svn: 62611
* Improvements to Sema of asm statements. Fixes <rdar://problem/6156893>Anders Carlsson2009-01-201-7/+16
| | | | llvm-svn: 62609
* Detailed documentation for encoding of properties and a test Fariborz Jahanian2009-01-201-1/+22
| | | | | | case. llvm-svn: 62607
* Allocate expresssions through ASTContext (still more work to do).Steve Naroff2009-01-202-23/+65
| | | | | | Add debug hook to DeclContext. llvm-svn: 62605
* Improving on encoding of objective-c's property types. More to come.Fariborz Jahanian2009-01-201-10/+36
| | | | llvm-svn: 62601
* Optimize Declarator to avoid malloc/free traffic for the argument list of aChris Lattner2009-01-204-5/+44
| | | | | | | | | | | | | | | | function DeclaratorChunk in common cases. This uses a fixed array in Declarator when it is small enough for the first function declarator chunk in a declarator. This eliminates all malloc/free traffic from DeclaratorChunk::getFunction when running on Cocoa.h except for five functions: signal/bsd_signal/sigset, which have multiple Function DeclChunk's, and CFUUIDCreateWithBytes/CFUUIDGetConstantUUIDWithBytes, which take more than 16 arguments. This patch was pair programmed with Steve. llvm-svn: 62599
* Slight cleanup, and fix for va_arg on architectures where va_list is a Eli Friedman2009-01-204-15/+16
| | | | | | struct. llvm-svn: 62585
* Do codegen correctly for va_start/end/copy on architectures where Eli Friedman2009-01-201-4/+14
| | | | | | | | | va_list is a struct, like x86-64. If anyone has a better idea for how to do the check in the if statements, suggestions are welcome. llvm-svn: 62582
* Rename DeclContext::insert to DeclContext::makeDeclVisibleInContext and ↵Douglas Gregor2009-01-202-9/+9
| | | | | | document both it and DeclContext::addDecl properly llvm-svn: 62581
* Fix for PR3350: add special-casing for "references" to va_lists in Eli Friedman2009-01-202-5/+18
| | | | | | | | builtins. Also, a minor tweak to va_copy for consistency. llvm-svn: 62574
* Remove the TopLevelDecls from TranslationUnit, since all of those decls are ↵Douglas Gregor2009-01-204-114/+10
| | | | | | owned by the ASTContext's TranslationUnitDecl. There are definitely some leaking Decls now that I'll tackle tomorrow llvm-svn: 62568
* Remove ScopedDecl, collapsing all of its functionality into Decl, soDouglas Gregor2009-01-2027-450/+305
| | | | | | | | | | | | | | | | that every declaration lives inside a DeclContext. Moved several things that don't have names but were ScopedDecls (and, therefore, NamedDecls) to inherit from Decl rather than NamedDecl, including ObjCImplementationDecl and LinkageSpecDecl. Now, we don't store empty DeclarationNames for these things, nor do we try to insert them into DeclContext's lookup structure. The serialization tests are temporarily disabled. We'll re-enable them once we've sorted out the remaining ownership/serialiazation issues between DeclContexts and TranslationUnion, DeclGroups, etc. llvm-svn: 62562
* Update for new SourceLocation API.Daniel Dunbar2009-01-201-0/+1
| | | | llvm-svn: 62556
* Dead stores checker: Fix <rdar://problem/6506065> by being more selective ↵Ted Kremenek2009-01-202-13/+44
| | | | | | when say that a store is dead even though the computed value is used in the enclosing expression. llvm-svn: 62552
* PTH: Emitted tokens now consist of 12 bytes that are loaded used 3 32-bit ↵Ted Kremenek2009-01-191-5/+8
| | | | | | loads. This reduces user time but increases system time because of the slightly larger PTH file. Although there is no performance win on Cocoa.h and -Eonly, overall this seems like a good step. llvm-svn: 62542
* Make sure all types are allocated with 8-byte alignment.Steve Naroff2009-01-191-21/+21
| | | | | | The QualType smart pointer assumes we have 3 flag bits available. llvm-svn: 62540
* Convert more expression actions to smart pointers.Sebastian Redl2009-01-194-98/+110
| | | | llvm-svn: 62537
* Allocate Types using ASTContext's 'Allocator' object.Ted Kremenek2009-01-192-42/+75
| | | | llvm-svn: 62530
* Type of property and its ivar is more restrictiveFariborz Jahanian2009-01-191-0/+15
| | | | | | that rules for assignment. llvm-svn: 62524
* Centralize error reporting of improper uses of incomplete types in theDouglas Gregor2009-01-197-53/+138
| | | | | | | | | | new DiagnoseIncompleteType. It provides additional information about struct/class/union/enum types when possible, either by pointing to the forward declaration of that type or by pointing to the definition (if we're in the process of defining that type). Fixes <rdar://problem/6500531>. llvm-svn: 62521
* Patch to allow @dynamic synthesis of property in a category,Fariborz Jahanian2009-01-191-2/+11
| | | | | | with @synthesize being illegal. llvm-svn: 62515
* do not use SourceManager::getFileCharacteristic(FileID), it is notChris Lattner2009-01-191-6/+7
| | | | | | | safe because a #line can change the file characteristic on a per-loc basis. llvm-svn: 62502
* do not use SourceManager::getFileCharacteristic(FileID), it is notChris Lattner2009-01-191-1/+1
| | | | | | | safe because a #line can change the file characteristic on a per-loc basis. llvm-svn: 62501
* Rename SourceManager::getCanonicalFileID -> getFileID. There isChris Lattner2009-01-197-31/+23
| | | | | | no longer such thing as a non-canonical FileID. llvm-svn: 62499
* Run destructors of MacroInfo objects to free memory they allocate. This ↵Ted Kremenek2009-01-191-1/+3
| | | | | | addresses <rdar://problem/6506035>. llvm-svn: 62498
* remove the public SourceManager::getContentCacheForLoc method.Chris Lattner2009-01-191-1/+4
| | | | llvm-svn: 62497
* remove the SourceManager:: and FullSourceLoc::getFileEntryForLoc methods.Chris Lattner2009-01-192-6/+1
| | | | llvm-svn: 62496
* SourceManager::getBufferData(SourceLocation) is dead, delete it.Chris Lattner2009-01-191-8/+2
| | | | llvm-svn: 62495
* some minor cleanups to SourceManager, and eliminate the Chris Lattner2009-01-192-2/+2
| | | | | | SourceManager::getBuffer(SourceLocation) method. llvm-svn: 62494
* Make some enums in SourceLocation private, remove a useless assertion from ↵Chris Lattner2009-01-191-3/+0
| | | | | | ScratchBuffer. llvm-svn: 62492
* Make SourceLocation::getFileLoc private to reduce the API exposure of Chris Lattner2009-01-193-13/+23
| | | | | | | SourceLocation. This requires making some cleanups to token pasting and _Pragma expansion. llvm-svn: 62490
* Convert more expression actions to smart pointers.Sebastian Redl2009-01-196-256/+294
| | | | | | Fix type of logical negation for C++. llvm-svn: 62475
* fix rdar://6505352 - Bogus warning with -WUndef, a caseChris Lattner2009-01-181-1/+2
| | | | | | Anders noticed. llvm-svn: 62472
* fix deallocation of FunctionDecl::ParamInfoNuno Lopes2009-01-181-5/+3
| | | | llvm-svn: 62469
* Convert a few expression actions to smart pointers.Sebastian Redl2009-01-186-148/+152
| | | | | | These actions are extremely widely used (identifier expressions and literals); still no performance regression. llvm-svn: 62468
* Rename move_convert to move_arg and move_res. The new names are less ↵Sebastian Redl2009-01-186-53/+47
| | | | | | misleading (and shorter). llvm-svn: 62466
* Convert ObjC statement actions to smart pointers.Sebastian Redl2009-01-183-56/+55
| | | | llvm-svn: 62465
* Convert asm statement action to smart pointers.Sebastian Redl2009-01-183-83/+77
| | | | llvm-svn: 62464
* Convert more statement actions to smart pointers.Sebastian Redl2009-01-183-70/+69
| | | | llvm-svn: 62463
* Switch MinimalAction from new/delete'ing its TypeNameInfo to Chris Lattner2009-01-181-37/+56
| | | | | | | | allocating them from a recycling bump pointer allocator. This reduces malloc/free traffic of parse-noop (but no other mode), which makes sharking -parse-noop more meaningful. llvm-svn: 62460
* Vector codegen improvementsNate Begeman2009-01-185-46/+87
| | | | llvm-svn: 62458
* Support evaluation of vector constant expressions, and codegen of same.Nate Begeman2009-01-185-10/+92
| | | | llvm-svn: 62455
* rearrange GetIdentifierInfo so that the fast path can be partially inlined ↵Chris Lattner2009-01-181-10/+4
| | | | | | into PTHLexer::Lex. This speeds up the user time of PTH -Eonly by another 2ms (4.4%) llvm-svn: 62454
* rename some variables, only set a tokens identifierinfo if non-null.Chris Lattner2009-01-181-10/+11
| | | | llvm-svn: 62450
OpenPOWER on IntegriCloud