summaryrefslogtreecommitdiffstats
path: root/clang
Commit message (Collapse)AuthorAgeFilesLines
* Temporarily disable PTH stat caching as it appears to be failing on some ↵Ted Kremenek2009-02-121-1/+2
| | | | | | machines. llvm-svn: 64354
* PTH: Cache stat information for files in the PTH file. Hook up FileManagerTed Kremenek2009-02-125-18/+138
| | | | | | | | | | | | | 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
* FileManager:Ted Kremenek2009-02-122-11/+19
| | | | | | | | | - 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
* Add tags; this is documented to work, just need the wiring to enable it.Mike Stump2009-02-121-0/+3
| | | | llvm-svn: 64350
* for now, disable all debug info generation at -O1 and above. This mirrorsChris Lattner2009-02-121-0/+7
| | | | | | similar logic in llvm-gcc and will hopefully be fixed soon. llvm-svn: 64349
* search and replaceo? Chris Lattner2009-02-121-1/+1
| | | | llvm-svn: 64348
* Add test for overloading with _Complex in CDouglas Gregor2009-02-121-0/+50
| | | | llvm-svn: 64347
* Add support for generating block call expressions.Anders Carlsson2009-02-124-1/+144
| | | | llvm-svn: 64346
* Add lightweight shim "clang::StatSysCallCache" that caches 'stat' system callsTed Kremenek2009-02-122-9/+27
| | | | | | | | | | 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
* Expand the definition of a complex promotion to include complex ->Douglas Gregor2009-02-122-4/+15
| | | | | | | | 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
* Introduce _Complex conversions into the function overloadingDouglas Gregor2009-02-126-1/+108
| | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Last @encode'ing fix for objc2's nonfragile abi.Fariborz Jahanian2009-02-111-3/+6
| | | | | | All relevant dejagnu enocding tests pass in this mode. llvm-svn: 64341
* PTH: Have meta data be at the beginning of the PTH file, not the end.Ted Kremenek2009-02-113-15/+13
| | | | llvm-svn: 64338
* Fix comment.Mike Stump2009-02-111-1/+1
| | | | llvm-svn: 64337
* Initial implementation of function overloading in C.Douglas Gregor2009-02-1111-41/+160
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Patch to fix encoding in 64bit abi. With this patchFariborz Jahanian2009-02-111-2/+8
| | | | | | | all but one dejagnu encoding tests for darwin pass in nonfragile abi mode. llvm-svn: 64334
* Use EmitVAListRef instead of EmitLValue directly to handle array decayDaniel Dunbar2009-02-114-4/+3
| | | | | | case on x86_64. llvm-svn: 64333
* Remove some non-ascii characters. Thanks Gabor.Steve Naroff2009-02-112-2/+2
| | | | llvm-svn: 64330
* PTH: Replace string identifier to persistent ID lookup with a hashtable. This isTed Kremenek2009-02-114-151/+206
| | | | | | | 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
* Support IRgen of va_arg of structure as l-value.Daniel Dunbar2009-02-112-2/+12
| | | | llvm-svn: 64325
* ir-gen for objc's @selector expression in nonfragile abi mode.Fariborz Jahanian2009-02-111-1/+26
| | | | llvm-svn: 64323
* Appease the language lawyersDouglas Gregor2009-02-111-1/+1
| | | | llvm-svn: 64321
* Fix <rdar://problem/6505139> [clang on growl]: need to allow unnamed ↵Steve Naroff2009-02-112-1/+10
| | | | | | selectors as the first argument llvm-svn: 64320
* Fix <rdar://problem/6243503> [sema] @throw; accepted outside catch block.Steve Naroff2009-02-118-10/+31
| | | | llvm-svn: 64318
* Finished semantic analysis of non-type template arguments, to checkDouglas Gregor2009-02-114-21/+197
| | | | | | | | | | | for non-external names whose address becomes the template argument. This completes C++ [temp.arg.nontype]p1. Note that our interpretation of C++ [temp.arg.nontype]p1b3 differs from EDG's interpretation (we're stricter, and GCC agrees with us). They're opening a core issue about the matter. llvm-svn: 64317
* Avoid bogus warning.Mike Stump2009-02-111-1/+2
| | | | llvm-svn: 64313
* Reverted r64307. Moved hasSameType and hasSameUnqualifiedType fromDouglas Gregor2009-02-113-24/+18
| | | | | | Sema to ASTContext. llvm-svn: 64312
* Allow the use of default template arguments when forming a classDouglas Gregor2009-02-116-3/+49
| | | | | | | | | | | | | | template specialization (e.g., std::vector<int> would now be well-formed, since it relies on a default argument for the Allocator template parameter). This is much less interesting than one might expect, since (1) we're not actually using the default arguments for anything important, such as naming an actual Decl, and (2) we'll often need to instantiate the default arguments to check their well-formedness. The real fun will come later. llvm-svn: 64310
* Fix <rdar://problem/6206858> [sema] type check @throw statements.Steve Naroff2009-02-114-4/+25
| | | | | | Added a FIXME to handle 'rethrow' check. llvm-svn: 64308
* Rename Sema::hasSameType to QualType::isSameAsDouglas Gregor2009-02-114-22/+24
| | | | | | Rename Sema::hasSameUnqualifiedType to QualType::isSameIgnoringQalifiers llvm-svn: 64307
* Silence a warning about an unused variable in -Asserts buildsDouglas Gregor2009-02-111-1/+1
| | | | llvm-svn: 64306
* Implement semantic checking for template arguments that correspond toDouglas Gregor2009-02-115-16/+51
| | | | | | | | pointer-to-member-data non-type template parameters. Also, get consistent about what it means to returned a bool from CheckTemplateArgument. llvm-svn: 64305
* PTH: Don't emit the PTH offset of the IdentifierInfo string data as that data isTed Kremenek2009-02-113-25/+15
| | | | | | referenced by other tables. llvm-svn: 64304
* Update checker build.Ted Kremenek2009-02-111-1/+1
| | | | llvm-svn: 64297
* Fix rdar://6518463, increment of a bool is always true, due toChris Lattner2009-02-111-0/+7
| | | | | | | subtle and non-obvious promotion rules. We already handle += and +1 correctly. llvm-svn: 64296
* finish off codegen support for sub of pointer to functions, Chris Lattner2009-02-112-2/+14
| | | | | | finishing off rdar://6520707 llvm-svn: 64295
* Per PR 3187, disable the missing -dealloc check for classes that subclass ↵Ted Kremenek2009-02-111-3/+15
| | | | | | SenTestCase. llvm-svn: 64292
* Add pmmintrin.h header.Anders Carlsson2009-02-111-0/+108
| | | | llvm-svn: 64291
* Fix some mistakes I made when I tried to decipher the Intel documentation of ↵Anders Carlsson2009-02-111-7/+12
| | | | | | the MXCSR register llvm-svn: 64290
* testcase for rdar://6096412 which already works.Chris Lattner2009-02-111-0/+8
| | | | llvm-svn: 64289
* CHAR_BIT == 8Douglas Gregor2009-02-112-4/+3
| | | | llvm-svn: 64286
* Add semantic checking for template arguments that correspond toDouglas Gregor2009-02-113-73/+132
| | | | | | | | | | | | | | non-type template parameters that are references to functions or pointers to member functions. Did a little bit of refactoring so that these two cases, along with the handling of non-type template parameters that are pointers to functions, are handled by the same path. Also, tweaked FixOverloadedFunctionReference to cope with member function pointers. This is a necessary step for getting all of the fun member pointer conversions working outside of template arguments, too. llvm-svn: 64277
* One more tweak to account for gluing together llvm and clang into one.Mike Stump2009-02-111-0/+1
| | | | llvm-svn: 64276
* More version experimentation.Mike Stump2009-02-111-1/+4
| | | | llvm-svn: 64271
* Semantic checking for template arguments that correspond to non-typeDouglas Gregor2009-02-113-3/+57
| | | | | | | template parameters that have reference type. Effectively, we're doing a very limited form of reference binding here. llvm-svn: 64270
* Run a little experiment with version numbers.Mike Stump2009-02-111-1/+1
| | | | llvm-svn: 64268
* Add partial semantic checking of template arguments that are meant forDouglas Gregor2009-02-114-4/+100
| | | | | | | | | | | | | | | | | | | non-type template parameters of pointer-to-object and pointer-to-function type. The most fun part of this is the use of overload resolution to pick a function from the set of overloaded functions that comes in as a template argument. Also, fixed two minor bugs in this area: - We were allowing non-type template parameters of type pointer to void. - We weren't patching up an expression that refers to an overloaded function set via "&f" properly. We're still not performing complete checking of the expression to be sure that it is referring to an object or function with external linkage (C++ [temp.arg.nontype]p1). llvm-svn: 64266
* BugReporter: Use llvm::raw_string_stream instead of std::ostringstream.Ted Kremenek2009-02-101-29/+25
| | | | llvm-svn: 64259
* Add private extern to pretty printer(s).Mike Stump2009-02-102-10/+12
| | | | llvm-svn: 64258
* Add another test case for the MissingDealloc checker.Ted Kremenek2009-02-101-0/+20
| | | | llvm-svn: 64257
OpenPOWER on IntegriCloud