- Apr 25, 2009
-
-
Chris Lattner authored
llvm-svn: 70080
-
Chris Lattner authored
The real fix for this whole mess is to require the operand of the alias to be a *GlobalValue* (not a general constant, including constant exprs) but allow the operand and the alias type to be unrelated. This fixes PR4066 llvm-svn: 70079
-
Douglas Gregor authored
identifier's ID. In this case, we know where the identifier's entry is located in the hash table (it starts right before the identifier string itself), so skip the hash table lookup and read the entry directly. The performance improvement here is, gain, hard to quantify, but it's the right thing to do. llvm-svn: 70078
-
Chris Lattner authored
new stuff. PR3924. llvm-svn: 70077
-
Bill Wendling authored
llvm-svn: 70076
-
Douglas Gregor authored
"interesting" identifiers (e.g., those where the IdentifierInfo has some useful information) from "uninteresting" identifiers (where the IdentifierInfo is just a name). This makes the hash table smaller (so searching in it should be faster) and, when loading "uninteresting" identifiers, we skip the lookup in the hash table. PCH file size is slightly smaller than before (since we don't emit the contents of the uninteresting IdentifierInfo structures). The Cocoa.h-prefixed "Hello, World" doesn't show any speedup, although we're getting to the point where system noise is a bit issue. llvm-svn: 70075
-
Mon P Wang authored
llvm-svn: 70072
-
Douglas Gregor authored
identifiers. They don't yet work, but will inhibit future optimizations. llvm-svn: 70071
-
Douglas Gregor authored
allocating IdentifierInfos with a pointer into the string data stored in the PCH file rather than having an entry in the identifier table's string map. However, we don't actually get these savings at the moment, because we go through the IdentifierTable when loading identifiers from the on-disk hash table. This commit is for record-keeping purposes only. I'll be reverting this change (and the PCH layout tweak that preceded it) because it appears that implementing this optimization will collide with another, future optimization to reduce the size of the on-disk hash table for identifiers. That optimization is likely to provide more benefit (with less voodoo). llvm-svn: 70070
-
Evan Cheng authored
llvm-svn: 70069
-
Chris Lattner authored
Patch by John McCall! llvm-svn: 70068
-
Chris Lattner authored
llvm-svn: 70067
-
Douglas Gregor authored
Tweak the data layout for the on-disk hash table of identifiers in the PCH file so that the key layout matches that of the PTH key layout llvm-svn: 70066
-
Ted Kremenek authored
llvm-svn: 70065
-
Chris Lattner authored
llvm-svn: 70064
-
Douglas Gregor authored
that the PCH reader does not have to decode the VBR encoding at PCH load time. Also, reduce the size of the identifier offsets from 64 bits down to 32 bits. The identifier table itself isn't going to grow to more than 4GB :) Overall, this results in a 13% speedup in the Cocoa-prefixed "Hello, World" benchmark. llvm-svn: 70063
-
Chris Lattner authored
llvm-svn: 70062
-
Chris Lattner authored
support -pg, we never instrument :) llvm-svn: 70061
-
Chris Lattner authored
is no longer needed: a function type and a function declarator are always known to line up. llvm-svn: 70060
-
Douglas Gregor authored
blobs, so that we don't need to do any work to get these arrays into memory at PCH load time. This gives another 19% performance improvement to the Cocoa-prefixed "Hello, World!". llvm-svn: 70059
-
Chris Lattner authored
patch by Jeff Yasskin! llvm-svn: 70058
-
Chris Lattner authored
Nicolas Capens! llvm-svn: 70057
-
Dan Gohman authored
using EXTRACT_ELEMENT into a utility function. llvm-svn: 70056
-
Douglas Gregor authored
This results in a 10% speedup on the Cocoa-prefixed "Hello, World!", all of which is (not surprisingly) user time. There was a tiny reduction in the size of the PCH file for Cocoa.h, because certain selectors aren't being written twice. I'm using two new tricks here that I'd like to replicate elsewhere: (1) The selectors not used in the global method pool are packed into the blob after the global method pool's on-disk hash table and stored as keys, so that all selectors are in the same blob. (2) We record the offsets of each selector key when we write it into the global method pool (or after it, in the same blob). The offset table is written as a blob, so that we don't need to pack/unpack a SmallVector with its contents. llvm-svn: 70055
-
Dan Gohman authored
llvm-svn: 70054
-
Dan Gohman authored
into unsigned ones when the operands are known to have the same sign bit value. llvm-svn: 70053
-
Dan Gohman authored
llvm-svn: 70052
-
Dan Gohman authored
common, but indvars shouldn't crash on them. This fixes PR4054. llvm-svn: 70051
-
Steve Naroff authored
llvm-svn: 70046
-
Steve Naroff authored
llvm-svn: 70044
-
Steve Naroff authored
llvm-svn: 70040
-
Steve Naroff authored
Also simplify some syntax in PCHWriter::WritePreprocessor(), suggested by Chris. llvm-svn: 70039
-
Torok Edwin authored
Path.cpp:59: warning: case label value exceeds maximum value for type magic[0] is a (signed) char, but some case values are unsigned (e.g. 0xde). When magic[0] was 0xde, the switch has taken the default branch instead of case 0xde branch. Apparently this was the behaviour with older versions of gcc too, but not with g++. Now g++-4.4 behaves as gcc, and ignores unsigned case values out of range signed range. llvm-svn: 70038
-
Evan Cheng authored
Do not share a single unknown val# for all the live ranges merged into a physical sub-register live interval. When coalescer is merging in clobbered virtaul register live interval into a physical register live interval, give each virtual register val# a separate val# in the physical register live interval. Otherwise, the coalescer would have lost track of the definitions information it needs to make correct coalescing decisions. llvm-svn: 70026
-
Chris Lattner authored
always return a non-null QualType + error bit. This fixes a bunch of cases that didn't check for null result (and could thus crash) and eliminates some crappy code scattered throughout sema. This also improves the diagnostics in the recursive struct case to eliminate a bogus second error. It also cleans up the case added to function.c by forming a proper function type even though the declarator is erroneous, allowing the parameter to be added to the function. Before: t.c:2:1: error: unknown type name 'unknown_type' unknown_type f(void*P) ^ t.c:4:3: error: use of undeclared identifier 'P' P+1; ^ After: t.c:2:1: error: unknown type name 'unknown_type' unknown_type f(void*P) ^ llvm-svn: 70023
-
Chris Lattner authored
llvm-svn: 70022
-
Chris Lattner authored
llvm-svn: 70021
-
Chris Lattner authored
This gets rid of a bunch of random InvalidDecl bools in sema, changing us to use the following approach: 1. When analyzing a declspec or declarator, if an error is found, we set a bit in Declarator saying that it is invalid. 2. Once the Decl is created by sema, we immediately set the isInvalid bit on it from what is in the declarator. From this point on, sema consistently looks at and sets the bit on the decl. This gives a very clear separation of concerns and simplifies a bunch of code. In addition to this, this patch makes these changes: 1. it renames DeclSpec::getInvalidType() -> isInvalidType(). 2. various "merge" functions no longer return bools: they just set the invalid bit on the dest decl if invalid. 3. The ActOnTypedefDeclarator/ActOnFunctionDeclarator/ActOnVariableDeclarator methods now set invalid on the decl returned instead of returning an invalid bit byref. 4. In SemaType, refering to a typedef that was invalid now propagates the bit into the resultant type. Stuff declared with the invalid typedef will now be marked invalid. 5. Various methods like CheckVariableDeclaration now return void and set the invalid bit on the decl they check. There are a few minor changes to tests with this, but the only major bad result is test/SemaCXX/constructor-recovery.cpp. I'll take a look at this next. llvm-svn: 70020
-
Sanjiv Gupta authored
llvm-svn: 70019
-
Douglas Gregor authored
llvm-svn: 70018
-