summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Objective-C++ ARC: Improve the conversion to a const __unsafe_unretained ↵Douglas Gregor2013-11-083-9/+37
| | | | | | | | | | | | | reference. Under ARC++, a reference to a const Objective-C pointer is implicitly treated as __unsafe_unretained, and can be initialized with (e.g.) a __strong lvalue. Make sure this behavior does not break template argument deduction and (related) that partial ordering still prefers a 'T* const&' template over a 'T const&' template when this case kicks in. Fixes <rdar://problem/14467941>. llvm-svn: 194239
* ObjectiveC migrator. Added a dropped check in myFariborz Jahanian2013-11-081-1/+2
| | | | | | last patch. llvm-svn: 194238
* Fix a bogus assert I introduced in r194224Douglas Gregor2013-11-081-1/+1
| | | | llvm-svn: 194237
* [analyzer] Add IdenticalExprChecker, to find copy-pasted code.Jordan Rose2013-11-085-1/+1170
| | | | | | | | | | | | | This syntactic checker looks for expressions on both sides of comparison operators that are structurally the same. As a special case, the floating-point idiom "x != x" for "isnan(x)" is left alone. Currently this only checks comparison operators, but in the future we could extend this to include logical operators or chained if-conditionals. Checker by Per Viberg! llvm-svn: 194236
* [analyzer] Track whether an ObjC for-in loop had zero iterations.Jordan Rose2013-11-082-22/+216
| | | | | | | | | | | | | | | | | An Objective-C for-in loop will have zero iterations if the collection is empty. Previously, we could only detect this case if the program asked for the collection's -count /before/ the for-in loop. Now, the analyzer distinguishes for-in loops that had zero iterations from those with at least one, and can use this information to constrain the result of calling -count after the loop. In order to make this actually useful, teach the checker that methods on NSArray, NSDictionary, and the other immutable collection classes don't change the count. <rdar://problem/14992886> llvm-svn: 194235
* [analyzer] Specialize "loop executed 0 times" for for-in and for-range loops.Jordan Rose2013-11-083-24/+35
| | | | | | | | | | The path note that says "Loop body executed 0 times" has been changed to "Loop body skipped when range is empty" for C++11 for-range loops, and to "Loop body skipped when collection is empty" for Objective-C for-in loops. Part of <rdar://problem/14992886> llvm-svn: 194234
* ObjectiveC migrator. Fixes an obscure bug whereFariborz Jahanian2013-11-084-4/+276
| | | | | | | | NS_RETURNS_INNER_POINTER ends up unintentionally on the @property under -objcmt-migrate-all // rdar://15396636 llvm-svn: 194233
* Changed the ABIs and ClangFunction to take aSean Callanan2013-11-0815-376/+105
| | | | | | | | | | | | | llvm::ArrayRef of arguments rather than taking a fixed number of possibly-NULL pointers to arguments. Also changed ClangFunction::GetThreadPlanToCallFunction to take the address of the argument struct by value instead of by reference, since it doesn't actually modify the value passed into it. llvm-svn: 194232
* ubsan: Only emit constants for filenames and type descriptors once.Will Dietz2013-11-083-6/+20
| | | | | | | | Produces neater IR in significantly less time. (~18% faster -O0 compile time for sqlite3 with -fsanitize=undefined) llvm-svn: 194231
* Silence GCC warning.Peter Collingbourne2013-11-081-0/+2
| | | | llvm-svn: 194230
* clang-format: Make breaking before ternary operators configurable.Daniel Jasper2013-11-085-16/+123
| | | | llvm-svn: 194229
* Eliminate an unnecessary .c_str()Douglas Gregor2013-11-081-1/+1
| | | | llvm-svn: 194228
* Introduce clang-query tool.Peter Collingbourne2013-11-0823-2/+946
| | | | | | | | | | | | | | | | | | | | | | | This tool is for interactive exploration of the Clang AST using AST matchers. It currently allows the user to enter a matcher at an interactive prompt and view the resulting bindings as diagnostics, AST pretty prints or AST dumps. Example session: $ cat foo.c void foo(void) {} $ clang-query foo.c -- clang-query> match functionDecl() Match #1: foo.c:1:1: note: "root" binds here void foo(void) {} ^~~~~~~~~~~~~~~~~ 1 match. Differential Revision: http://llvm-reviews.chandlerc.com/D2098 llvm-svn: 194227
* Adds the ability to inject a DiagnosticConsumer into ClangTools.Manuel Klimek2013-11-073-17/+63
| | | | llvm-svn: 194226
* Modules: Teach the preprocessor to recognize 'import' only after an '@'.Douglas Gregor2013-11-073-4/+20
| | | | | | | | | | | | The preprocessor currently recognizes module declarations to load a module based on seeing the 'import' keyword followed by an identifier. This sequence is fairly unlikely in C (one would need a type named 'import'), but is more common in Objective-C (where a variable named 'import' can cause problems). Since import declarations currently require a leading '@', recognize that in the preprocessor as well. Fixes <rdar://problem/15084587>. llvm-svn: 194225
* Re-instate contextual conversion to Objective-C pointers in message sends.Douglas Gregor2013-11-075-33/+134
| | | | | | | | | When performing an Objective-C message send to a value of class type, perform a contextual conversion to an Objective-C pointer type. We've had this for a long time, but it recently regressed. Fixes <rdar://problem/15234703>. llvm-svn: 194224
* Introduce MatchFinder::matchAST.Peter Collingbourne2013-11-074-12/+46
| | | | | | Differential Revision: http://llvm-reviews.chandlerc.com/D2115 llvm-svn: 194223
* Re-introduce MatchFinder::addDynamicMatcher.Peter Collingbourne2013-11-074-2/+70
| | | | | | Differential Revision: http://llvm-reviews.chandlerc.com/D2114 llvm-svn: 194222
* IR: Properly canonicalize PointerType in ConstantExpr GEPsDavid Majnemer2013-11-071-5/+6
| | | | | | | No additional test was needed, Other/constant-fold-gep.ll detects this just fine. llvm-svn: 194221
* IR: Do not canonicalize constant GEPs into an out-of-bounds array accessDavid Majnemer2013-11-072-1/+67
| | | | | | | | | | | | | | | | | | | | | | | | | | Summary: Consider a GEP of: i8* getelementptr ({ [2 x i8], i32, i8, [3 x i8] }* @main.c, i32 0, i32 0, i64 0) If we proceeded to GEP the aforementioned object by 8, would form a GEP of: i8* getelementptr ({ [2 x i8], i32, i8, [3 x i8] }* @main.c, i32 0, i32 0, i64 8) Note that we would go through the first array member, causing an out-of-bounds accesses. This is problematic because we might get fooled if we are trying to evaluate loads using this GEP, for example, based off of an object with a constant initializer where the array is zero. This fixes PR17732. Reviewers: nicholas, chandlerc, void Reviewed By: void CC: llvm-commits, echristo, void, aemerson Differential Revision: http://llvm-reviews.chandlerc.com/D2093 llvm-svn: 194220
* Run clang-format on file.Bill Wendling2013-11-071-14/+9
| | | | llvm-svn: 194219
* Move copying of global initializers below the cloning of functions.Bill Wendling2013-11-075-5/+163
| | | | | | | | | | The BlockAddress doesn't have access to the correct basic blocks until the functions have been cloned. This causes the BlockAddress to point to the old values. Just wait until the functions have been cloned before copying the initializers. PR13163 llvm-svn: 194218
* PR17800: When performing pack expansion, we must always rebuild the AST nodesRichard Smith2013-11-072-1/+18
| | | | | | | to avoid breaking AST invariants by reusing Stmt nodes within the same function. llvm-svn: 194217
* clang-format: Improve binary operator detection in macros.Daniel Jasper2013-11-072-1/+2
| | | | | | | | | | | | Before: #define M(NAME) assert(!Context.Verifying &&#NAME); After: #define M(NAME) assert(!Context.Verifying && #NAME); This fixes llvm.org/PR16156. llvm-svn: 194216
* Tests for CWG issue 165-170.Richard Smith2013-11-072-4/+58
| | | | llvm-svn: 194215
* clang-format: Improve ObjC variadic and binary expression parameters.Daniel Jasper2013-11-073-6/+17
| | | | | | | | | | | | | | | | | | | | | | Before: [self aaaaaaaaaaaaaaa:aaaaaaaaaaaaaaa | aaaaaaaaaaaaaaa | aaaaaaaaaaaaaaa | aaaaaaaaaaaaaaa | aaaaaaaaaaaaaaa | aaaaaaaaaaaaaaa | aaaaaaaaaaaaaaa | aaaaaaaaaaaaaaa]; [self aaaaaaaaaaaaaaa:aaaaaaaaaaaaaaa, aaaaaaaaaaaaaaa, aaaaaaaaaaaaaaa, aaaaaaaaaaaaaaa, aaaaaaaaaaaaaaa, aaaaaaaaaaaaaaa, aaaaaaaaaaaaaaa, aaaaaaaaaaaaaaa]; After: [self aaaaaaaaaaaaaaa:aaaaaaaaaaaaaaa | aaaaaaaaaaaaaaa | aaaaaaaaaaaaaaa | aaaaaaaaaaaaaaa | aaaaaaaaaaaaaaa | aaaaaaaaaaaaaaa | aaaaaaaaaaaaaaa | aaaaaaaaaaaaaaa]; [self aaaaaaaaaaaaaaa:aaaaaaaaaaaaaaa, aaaaaaaaaaaaaaa, aaaaaaaaaaaaaaa, aaaaaaaaaaaaaaa, aaaaaaaaaaaaaaa, aaaaaaaaaaaaaaa, aaaaaaaaaaaaaaa, aaaaaaaaaaaaaaa]; This addresses llvm.org/PR15349 and llvm.org/PR16185. llvm-svn: 194214
* PR17615: A delegating constructor initializer is a full-expression. Don'tRichard Smith2013-11-072-2/+16
| | | | | | forget to clean up temporaries at the end of it. llvm-svn: 194213
* Added a test case for the fix to bug 17632 in r193751Chris Wailes2013-11-071-0/+2
| | | | llvm-svn: 194212
* XFAIL the test for non-x86 targets for which this message cannot be generated.Richard Barton2013-11-071-0/+1
| | | | llvm-svn: 194211
* clang-format: Improve formatting of constructor initializers.Daniel Jasper2013-11-073-6/+16
| | | | | | | | | | | | | Before: Constructor() : aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(aaaaaaaaaaaaaaaaaaaaaaaaa(aaaa, aaaa)) {} After: Constructor() : aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa( aaaaaaaaaaaaaaaaaaaaaaaaa(aaaa, aaaa)) {} llvm-svn: 194210
* clang-format: Remove old hack that mainly made incorrect tests pass.Daniel Jasper2013-11-072-16/+27
| | | | | | | | As a side-effect, constructors definitions will correctly be recognized and formatted as function declarations. Tests will be added in a follow-up patch actually using the correct recognition. llvm-svn: 194209
* If libc++ has not declared bad_array_length, then declare it here just so ↵Howard Hinnant2013-11-071-0/+13
| | | | | | that it gets into the binary. llvm-svn: 194208
* Tell libc++abi whether or not libc++ has declared bad_array_length.Howard Hinnant2013-11-071-1/+5
| | | | llvm-svn: 194207
* Remove an unnecessary condition that I added hastily: Unsigned numbers are ↵Faisal Vali2013-11-071-1/+1
| | | | | | | | obviously >= 0 ;) Also - others have complained about some white space issues - sorry about that - continues to be a pain point for me - will try and see what I can do with clang-format this evening after work - as a short term fix, if anyone can email me the files that they have already identified with issues, it would help me speed up a focused fix. sorry. llvm-svn: 194206
* Support for microMIPS trap instructions 1.Zoran Jovanovic2013-11-076-8/+68
| | | | llvm-svn: 194205
* clang-format: Fix corner case for brace alignment.Daniel Jasper2013-11-072-1/+8
| | | | | | | | | | | | | | | | Before: Constructor::Constructor() : some_value{ // aaaaaaa // } {} After: Constructor::Constructor() : some_value{ // aaaaaaa // } {} llvm-svn: 194204
* llvm-c/Support.h: Add a newline at eof.NAKAMURA Takumi2013-11-071-1/+1
| | | | llvm-svn: 194203
* Minor refinement of VTableBuilder.h: fix wrong indentation, rename a struct ↵Timur Iskhodzhanov2013-11-073-18/+16
| | | | | | field with a more appropriate name llvm-svn: 194202
* Disable some code that is causing some warnings. It's in the processReed Kotler2013-11-071-3/+2
| | | | | | | | of being converted and this path is not relevant to anything at this time so I have just disabled it for a few days while I'm at the LLVM conference and don't have time to complete it or properly fix it. llvm-svn: 194201
* Add parens for || in && in assert. No functionality change.Benjamin Kramer2013-11-071-2/+2
| | | | llvm-svn: 194200
* [ASan] Add CMake configs for libclang_rt.asan_iossim_dynamic.dylib Alexander Potapenko2013-11-076-50/+83
| | | | | | | | | | CMake changes to build the ASan runtime for the iOS simulator. This is a universal library targeting the same architectures as the OSX ASan runtime does, thus the iossim version can't live in the same universal libclang_rt.asan_osx_dynamic.dylib The difference between the OSX and iossim builds is in the -mios-simulator-version-min and -ios_simulator_version_min flags that tell Clang to compile and link iossim code. The iossim runtime can only be built on a machine with both Xcode and the iOS Simulator SDK installed. If xcodebuild -version -sdk iphonesimulator Path returns a nonempty path, it is used when compiling and linking the iossim runtime. llvm-svn: 194199
* Ubuntu has published its Saucy release. 'Trusty Tahr' dev has just started. ↵Sylvestre Ledru2013-11-071-1/+3
| | | | | | Add its support in Clang llvm-svn: 194198
* Fixed bug in return type of __builtin_va_start().Enea Zaffanella2013-11-072-0/+8
| | | | llvm-svn: 194197
* [Sanitizer] Make StackTrace::Unwind the only public way to unwind a stack trace.Alexey Samsonov2013-11-076-30/+39
| | | | llvm-svn: 194196
* [Sanitizer] Presumable fix stack trace unwinding on WindowsAlexey Samsonov2013-11-071-1/+1
| | | | llvm-svn: 194195
* Mark generic lambdas, and thus C++14, as complete. Add commented-out stub ↵Richard Smith2013-11-071-5/+16
| | | | | | for C++17. llvm-svn: 194194
* [Sanitizer] Call Windows unwinder 'slow' and share StackTrace::Unwind across ↵Alexey Samsonov2013-11-075-23/+38
| | | | | | all platforms. No functionality change. llvm-svn: 194193
* Tests for DR150 - DR165.Richard Smith2013-11-072-12/+126
| | | | llvm-svn: 194192
* RewriteBuffer: Remove an unused typedefAlp Toker2013-11-071-3/+2
| | | | | | This hasn't been used for some time. llvm-svn: 194191
* Unbreak the Clang -Werror build by removing some unused variablesDavid Blaikie2013-11-071-11/+6
| | | | llvm-svn: 194190
OpenPOWER on IntegriCloud