summaryrefslogtreecommitdiffstats
path: root/clang
Commit message (Collapse)AuthorAgeFilesLines
* -Warc-repeated-use-of-weak: look through explicit casts on assigned values.Jordan Rose2012-10-102-1/+12
| | | | | | | Reading from a weak property, casting the result, and assigning to a strong pointer should still be considered safe. llvm-svn: 165629
* Move Sema::PropertyIfSetterOrGetter to ObjCMethodDecl::findPropertyDecl.Jordan Rose2012-10-108-120/+97
| | | | | | | | Then, switch users of PropertyIfSetterOrGetter and LookupPropertyDecl (the latter by name) over to findPropertyDecl. This actually makes -Wreceiver-is-weak a bit stronger than it was before. llvm-svn: 165628
* Change Sema::PropertyIfSetterOrGetter to make use of isPropertyAccessor.Jordan Rose2012-10-103-36/+50
| | | | | | | | | | | | | | | | | | | | | | | | Old algorithm: 1. See if the name looks like a getter or setter. 2. Use the name to look up a property in the current ObjCContainer and all its protocols. 3. If the current container is an interface, also look in all categories and superclasses (and superclass categories, and so on). New algorithm: 1. See if the method is marked as a property accessor. If so, look through all properties in the current container and find one that has a matching selector. 2. Find all overrides of the method using ObjCMethodDecl's getOverriddenMethods. This collects methods in superclasses and protocols (as well as superclass categories, which isn't really necessary), and checks if THEY are accessors. This part is not done recursively, since getOverriddenMethods is already recursive. This lets us handle getters and setters that do not match the property names. llvm-svn: 165627
* Rename ObjCMethodDecl::isSynthesized to isPropertyAccessor.Jordan Rose2012-10-1013-44/+43
| | | | | | | | | | | | | This more accurately reflects its use: this flag is set when a method matches the getter or setter name for a property in the same class, and does not actually specify whether or not the definition of the method will be synthesized (either implicitly or explicitly with @synthesize). This renames the setter and backing field as well, and changes the (soon-to-be-obsolete?) XML dump format to use 'property_accessor' instead of 'synthesized'. llvm-svn: 165626
* Fix stack overflow when trying to create an implicit movingArgyrios Kyrtzidis2012-10-102-1/+39
| | | | | | | | constructor with invalid code. rdar://12240916 llvm-svn: 165623
* [CMake] clang/tools/extra may be included by ↵NAKAMURA Takumi2012-10-101-4/+2
| | | | | | | | LLVM_EXTERNAL_CLANG_TOOLS_EXTRA_SOURCE_DIR. LLVM_EXTERNAL_CLANG_TOOLS_EXTRA_SOURCE_DIR=/path/to/llvm-srcroot/tools/clang/tools/extra, by default. llvm-svn: 165620
* Apply the same fundamental fix for PR14048 as was applied for PR11905.Chandler Carruth2012-10-102-2/+32
| | | | | | | | | | | | | | | | | | The issue arises when coercing to/from types of different sizes. We need to be certain that the allocation on either end has sufficient room for the coerced type. When it doesn't, we need to make room, copy across, and then proceed. PR11905 handled the case of storing function arguments back into allocas in the function prolog, this patch handles the case of setting up the function arguments in a call expression. This is actually significantly simpler than the fix for PR11905. It ends up being a trivial change to create a temporary alloca when the source is too small and memcpy across. This should preserve the compile-time fast-isel benefits of doing gep+load sequences and avoiding FCAs. Reviewed by Benjamin and Evgeniy (who fixed PR11905). llvm-svn: 165615
* Remove the final bits of Attributes being declared in the AttributeBill Wendling2012-10-106-58/+82
| | | | | | | namespace. Use the attribute's enum value instead. No functionality change intended. llvm-svn: 165611
* Fix PR 11709: Change the definition of va_list to meet AAPCS requirementLogan Chien2012-10-105-5/+137
| | | | | | | | | | | | | AAPCS ABI Section 7.1.4 [1] specifies that va_list should be defined as struct __va_list { void *__ap;}; And in C++, it is defined in namespace std. [1] http://infocenter.arm.com/help/topic /com.arm.doc.ihi0042d/IHI0042D_aapcs.pdf Patch by Weiming Zhao. llvm-svn: 165609
* Place temporary LTO files into their own subdirectory.Bill Wendling2012-10-101-1/+1
| | | | llvm-svn: 165600
* Have 'addFnAttr' take the attribute enum value. Then have it build the ↵Bill Wendling2012-10-106-21/+22
| | | | | | attribute object and add it appropriately. No functionality change. llvm-svn: 165596
* Disable the preprocessing record when indexing a source fileArgyrios Kyrtzidis2012-10-101-0/+3
| | | | | | and modules are not enabled. llvm-svn: 165593
* When indexing a module file, for the ppIncludedFile callback giveArgyrios Kyrtzidis2012-10-105-22/+46
| | | | | | | an invalid location if the location points to the synthetic buffer for the module input. llvm-svn: 165592
* [modules] Consistently construct a buffer as input to build the module.Argyrios Kyrtzidis2012-10-103-83/+47
| | | | | | This means the main file for modules will always be a virtual one. llvm-svn: 165591
* Tidy up formatting.Richard Smith2012-10-101-2/+1
| | | | llvm-svn: 165584
* -fcatch-undefined-behavior: catch a VLA bound which evalutes to a ↵Richard Smith2012-10-102-1/+29
| | | | | | non-positive value. llvm-svn: 165583
* Fix test broken by r165572.Richard Smith2012-10-101-4/+2
| | | | llvm-svn: 165581
* Revert "Use a special path to place the .o files in."Bob Wilson2012-10-091-2/+1
| | | | | | This reverts commit 165429 in an attempt to get our buildbots going. llvm-svn: 165573
* -fcatch-undefined-behavior: store the type name directly at the end of a ↵Richard Smith2012-10-091-5/+5
| | | | | | type descriptor. 5% binary size reduction due to fewer relocations. llvm-svn: 165572
* Add extra vim swap file patternMichael Liao2012-10-091-0/+1
| | | | llvm-svn: 165570
* Rework the (de-)serialization of macros, as stored inDouglas Gregor2012-10-0926-89/+474
| | | | | | | | | | | | | | | | MacroInfo*. Instead of simply dumping an offset into the current file, give each macro definition a proper ID with all of the standard modules-remapping facilities. Additionally, when a macro is modified in a subsequent AST file (e.g., #undef'ing a macro loaded from another module or from a precompiled header), provide a macro update record rather than rewriting the entire macro definition. This gives us greater consistency with the way we handle declarations, and ties together macro definitions much more cleanly. Note that we're still not actually deserializing macro history (we never were), but it's far easy to do properly now. llvm-svn: 165560
* People put pragmas in crazy places; add more handling. PR14046.Eli Friedman2012-10-092-0/+29
| | | | | | | I think our general framework for parser pragmas needs a bit more work, but I'm not planning on working on it at the moment. llvm-svn: 165558
* Initialize the end loc in ObjCInterfaceTypeLoc.Benjamin Kramer2012-10-091-0/+1
| | | | | | Found by valgrind. llvm-svn: 165546
* The clang driver has a fairly fancy support for executing gcc instead ofRafael Espindola2012-10-0924-104/+50
| | | | | | | | | | | | | | clang itself. This dates back to clang's early days and while it looks like some of it is still used (for kext for example), other parts are probably dead. Remove the -ccc-clang-archs option and associated code. I don't think there is any remaining setup where clang doesn't support an architecture but it can expect an working gcc cross compiler to be available. A nice side effect is that tests no longer need to differentiate architectures that are included in production builds of clang and those that are not. llvm-svn: 165545
* Simplify the code using SmallVector::append(), as suggested by Benjamin Kramer.Argyrios Kyrtzidis2012-10-091-10/+3
| | | | llvm-svn: 165538
* [driver] Remove redundant cases due to overlapping commits between Ted ↵Chad Rosier2012-10-091-2/+0
| | | | | | | | (r165531, 165532) and I (r165534), but leave the test case in place. llvm-svn: 165537
* -fcatch-undefined-behavior: emit calls to the runtime library whenever one ↵Richard Smith2012-10-0913-63/+376
| | | | | | of the checks fails. llvm-svn: 165536
* [driver] Remove the -W[no-][int-conversion|constant-conversion|enum-conversion]Chad Rosier2012-10-092-0/+6
| | | | | | | options when clang invokes cc1plus for i386 kexts. rdar://12459188 llvm-svn: 165534
* Don't forward -Wenum-conversion to cc1plus.Ted Kremenek2012-10-091-0/+1
| | | | llvm-svn: 165532
* Don't forward -Wint-conversion to cc1plus.Ted Kremenek2012-10-091-0/+1
| | | | llvm-svn: 165531
* Create variable for warning group -Wshorten-64-to-32.Ted Kremenek2012-10-092-3/+3
| | | | llvm-svn: 165521
* Move the functionality that looks for ObjC overridden methods fromArgyrios Kyrtzidis2012-10-093-167/+191
| | | | | | | | ASTContext to the ObjCMethodDecl, and have the more generic ASTContext::getOverriddenMethods() use the ObjCMethodDecl::getOverriddenMethods() function. llvm-svn: 165518
* Make the order of visitation of the pending bodies in the AST readerDouglas Gregor2012-10-092-3/+9
| | | | | | deterministic. llvm-svn: 165515
* When we load a function or method body from an AST file, we checkDouglas Gregor2012-10-098-25/+61
| | | | | | | | | | whether that function/method already has a body (loaded from some other AST file), as introduced in r165137. Delay this check until after the redeclaration chains have been wired up. While I'm here, make the loading of method bodies lazy. llvm-svn: 165513
* Fixup for r165097: build 32-bit ASan compiler-rt library on 64-bit Linux ↵Alexey Samsonov2012-10-092-3/+23
| | | | | | only if just-built clang can build simple 32-bit executables llvm-svn: 165503
* If a macro has been #undef'd in a precompiled header, we still need toDouglas Gregor2012-10-095-19/+22
| | | | | | | | | | | | write out the macro history for that macro. Similarly, we need to cope with reading a macro definition that has been #undef'd. Take advantage of this new ability so that global code-completion results can refer to #undef'd macros, rather than losing them entirely. For multiply defined/#undef'd macros, we will still get the wrong result, but it's better than getting no result. llvm-svn: 165502
* Clearing a SmallPtrSet is still expensive, split it out from ↵Benjamin Kramer2012-10-092-2/+8
| | | | | | OverloadCandidateSet::clear and don't do it on destruction. llvm-svn: 165501
* We use the enums to query whether an Attributes object has that attribute. TheBill Wendling2012-10-091-1/+1
| | | | | | opaque layer is responsible for knowing where that specific attribute is stored. llvm-svn: 165489
* CXXMethodDecl::isConst() and CXXMethodDecl::isVolatile() can be const methodsArnaud A. de Grandmaison2012-10-091-2/+2
| | | | | | Patch by: Laszlo Nagy llvm-svn: 165486
* Move the logic that searches for overridden methods from libclang toArgyrios Kyrtzidis2012-10-093-180/+202
| | | | | | ASTContext so that it can be widely available. llvm-svn: 165473
* When storing the C++ overridden methods, store them once for theArgyrios Kyrtzidis2012-10-093-4/+9
| | | | | | canonical method; avoid storing them again for an out-of-line definition. llvm-svn: 165472
* Make sure we allow "#pragma options align=mac68k" in function-local ↵Eli Friedman2012-10-082-0/+17
| | | | | | contexts. <rdar://problem/12453134> llvm-svn: 165462
* Add regression test to check if -Wenum-conversion is a subgroup of -Wconversion.Ted Kremenek2012-10-081-0/+8
| | | | llvm-svn: 165459
* In VarDecl::getSourceRange() make sure to check that the source locationArgyrios Kyrtzidis2012-10-082-3/+25
| | | | | | | | | | of the initializer is valid before using it. Fixes rdar://12455002&12449015 where local variables of objc objects in ARC mode were not annotated because of the ImplicitValueInitExpr initializer having invalid source range, resulting in the SourceRange of the VarDecl having invalid end location. llvm-svn: 165456
* Actually add the -Wenum-conversion group to -Wconversion as r165361Chandler Carruth2012-10-081-0/+1
| | | | | | seems to have intended. llvm-svn: 165440
* Sort the subgroups of the diagnostic group for -Wconversion. NoChandler Carruth2012-10-081-6/+6
| | | | | | functionality changed. llvm-svn: 165439
* Make Bitrig's clang understand -stdlib= correctly.Chandler Carruth2012-10-082-8/+46
| | | | | | | | | With this patch Bitrig can use a different c++ library without pain and within the normal commandline parameters. Original patch by David Hill, with lots of fixes and cleanup by me. llvm-svn: 165430
* Use a special path to place the .o files in.Bill Wendling2012-10-081-1/+2
| | | | llvm-svn: 165429
* CompilationDatabaseTest: Fix another Windows path issue.Daniel Jasper2012-10-081-2/+6
| | | | llvm-svn: 165425
* CompilationDatabase: Use //net paths for tests, as they should beDaniel Jasper2012-10-081-40/+42
| | | | | | considered absolute on all platforms. llvm-svn: 165422
OpenPOWER on IntegriCloud