- Feb 12, 2009
-
-
Chris Lattner authored
llvm-svn: 64361
-
Ted Kremenek authored
Add method 'isSingleton()' to ImmutableSet. This returns true if the set contains exactly one element. llvm-svn: 64359
-
Ted Kremenek authored
llvm-svn: 64356
-
Ted Kremenek authored
llvm-svn: 64355
-
Ted Kremenek authored
llvm-svn: 64354
-
Ted Kremenek authored
to use this stat information in the PTH file using a 'StatSysCallCache' object. Performance impact (Cocoa.h, PTH): - number of stat calls reduces from 1230 to 425 - fsyntax-only: time improves by 4.2% We can reduce the number of stat calls to almost zero by caching negative stat calls and directory stat calls in the PTH file as well. llvm-svn: 64353
-
Nick Lewycky authored
llvm-svn: 64352
-
Ted Kremenek authored
- set the 'StatSysCallCache' object using a setter method instead of FileManager's constructor. This allows the cache to be installed after the FileManager object is created. - Add 'file mode' to FileEntry (useful for stat caching) llvm-svn: 64351
-
Mike Stump authored
llvm-svn: 64350
-
Chris Lattner authored
similar logic in llvm-gcc and will hopefully be fixed soon. llvm-svn: 64349
-
Chris Lattner authored
llvm-svn: 64348
-
Douglas Gregor authored
llvm-svn: 64347
-
Anders Carlsson authored
llvm-svn: 64346
-
Ted Kremenek authored
for use by FileManager. FileManager now takes a StatSysCallCache* in its constructor (which defaults to NULL). This will be used for evaluating whether or not caching 'stat' system calls in PTH is a performance win. This shim adds no observable performance impact in the case where the 'StatSysCallCache*' is null. llvm-svn: 64345
-
Douglas Gregor authored
complex conversions where the conversion between the real types is an integral promotion. This is how G++ handles complex promotions for its complex integer extension. llvm-svn: 64344
-
Douglas Gregor authored
system. Since C99 doesn't have overloading and C++ doesn't have _Complex, there is no specification for this. Here's what I think makes sense. Complex conversions come in several flavors: - Complex promotions: a complex -> complex conversion where the underlying real-type conversion is a floating-point promotion. GCC seems to call this a promotion, EDG does something else. This is given "promotion" rank for determining the best viable function. - Complex conversions: a complex -> complex conversion that is not a complex promotion. This is given "conversion" rank for determining the best viable function. - Complex-real conversions: a real -> complex or complex -> real conversion. This is given "conversion" rank for determining the best viable function. These rules are the same for C99 (when using the "overloadable" attribute) and C++. However, there is one difference in the handling of floating-point promotions: in C99, float -> long double and double -> long double are considered promotions (so we give them "promotion" rank), while C++ considers these conversions ("conversion" rank). llvm-svn: 64343
-
Bill Wendling authored
llvm-svn: 64342
-
Fariborz Jahanian authored
All relevant dejagnu enocding tests pass in this mode. llvm-svn: 64341
-
Evan Cheng authored
llvm-svn: 64340
-
Evan Cheng authored
Remove a bogus assertion. It's possible a live-in available value is used by a previous instruction. llvm-svn: 64339
-
Ted Kremenek authored
llvm-svn: 64338
-
Mike Stump authored
llvm-svn: 64337
-
Douglas Gregor authored
This commit adds a new attribute, "overloadable", that enables C++ function overloading in C. The attribute can only be added to function declarations, e.g., int *f(int) __attribute__((overloadable)); If the "overloadable" attribute exists on a function with a given name, *all* functions with that name (and in that scope) must have the "overloadable" attribute. Sets of overloaded functions with the "overloadable" attribute then follow the normal C++ rules for overloaded functions, e.g., overloads must have different parameter-type-lists from each other. When calling an overloaded function in C, we follow the same overloading rules as C++, with three extensions to the set of standard conversions: - A value of a given struct or union type T can be converted to the type T. This is just the identity conversion. (In C++, this would go through a copy constructor). - A value of pointer type T* can be converted to a value of type U* if T and U are compatible types. This conversion has Conversion rank (it's considered a pointer conversion in C). - A value of type T can be converted to a value of type U if T and U are compatible (and are not both pointer types). This conversion has Conversion rank (it's considered to be a new kind of conversion unique to C, a "compatible" conversion). Known defects (and, therefore, next steps): 1) The standard-conversion handling does not understand conversions involving _Complex or vector extensions, so it is likely to get these wrong. We need to add these conversions. 2) All overloadable functions with the same name will have the same linkage name, which means we'll get a collision in the linker (if not sooner). We'll need to mangle the names of these functions. llvm-svn: 64336
-
- Feb 11, 2009
-
-
Nate Begeman authored
the two non-mask arguments to a shufflevector must be the same width, but they do not have to be the same width as the result value. llvm-svn: 64335
-
Fariborz Jahanian authored
all but one dejagnu encoding tests for darwin pass in nonfragile abi mode. llvm-svn: 64334
-
Daniel Dunbar authored
case on x86_64. llvm-svn: 64333
-
Dale Johannesen authored
reflect reality. Acknowledgements to John Clements for prodding me into this. llvm-svn: 64332
-
Gabor Greif authored
add efficient versions of op_begin and op_end. Up to now always those from User have been called, which in most cases follow an indirection (OperandList) even if the exact Instruction type is known. llvm-svn: 64331
-
Steve Naroff authored
llvm-svn: 64330
-
Bill Wendling authored
llvm-svn: 64329
-
Dan Gohman authored
llvm-svn: 64328
-
Dan Gohman authored
unless they actually have data successors, and likewise for nodes with no data successors unless they actually have data precessors. llvm-svn: 64327
-
Ted Kremenek authored
actually *slightly* slower than the binary search. Since this is algorithmically better, further performance tuning should be able to make this faster. llvm-svn: 64326
-
Daniel Dunbar authored
llvm-svn: 64325
-
Ted Kremenek authored
llvm-svn: 64324
-
Fariborz Jahanian authored
llvm-svn: 64323
-
Daniel Dunbar authored
llvm-svn: 64322
-
Douglas Gregor authored
llvm-svn: 64321
-
rdar://problem/6505139Steve Naroff authored
Fix <rdar://problem/6505139> [clang on growl]: need to allow unnamed selectors as the first argument llvm-svn: 64320
-
Dan Gohman authored
is determined by whether the node has a Flag operand. However, if the node does have a Flag operand, it will be glued to its register's def, so the heuristic would end up spuriously applying to whatever node is the def. llvm-svn: 64319
-