aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2013-02-10Formatter: Remove now-unneeded code for formatting ':'s in ObjC method decls.Nico Weber
The more general code for formatting ObjC method exprs does this and more, it's no longer necessary to special-case this. No behavior change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174843 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-10Formatter: Add a test for multi-line ObjC dict literals.Nico Weber
As it turns out, this already works reasonably well. This example from http://clang.llvm.org/docs/ObjectiveCLiterals.html NSDictionary *dictionary = @{ @"name" : NSUserName(), @"date" : [NSDate date], @"processInfo" : [NSProcessInfo processInfo] }; is formatted like NSDictionary *dictionary = @{ @"name" : NSUserName(), @"date" : [NSDate date], @"processInfo" : [NSProcessInfo processInfo] }; There's already a FIXME in NestedStaticInitializers about supporting one initializer per line, which is really all that's missing here too. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174842 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-10Formatter: Add another ObjC literal test.Nico Weber
(From http://clang.llvm.org/docs/ObjectiveCLiterals.html.) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174841 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-10Formatter: Initial support for ObjC dictionary literals.Nico Weber
Before: @{ foo: bar } ; Now: @{ foo : bar }; parseBracedList() already does the right thing from an UnwrappedLineParser perspective, so check for "@{" in all loops that process constructs that can contain expressions and call parseBracedList() if found. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174840 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-10Use -mno-implicit-float by default for kernel/kext code. <rdar://13177960>Bob Wilson
Apple's kernel engineers have been expecting this behavior even though we've never implemented it before, as far as I can tell. In recent months, clang has gotten better at using vector instructions to optimize memcpy-like operations, and that has exposed problems when vector/floating-point instructions are used in kexts that don't support that. This behavior also matches what Apple's GCC did for PowerPC targets. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174838 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-10Delete an extra blank line.Bob Wilson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174837 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-10Recognize -mno-implicit-float option for x86 as well as ARM. <rdar://13180731>Bob Wilson
For x86 targets, we've been using the -msoft-float option to control passing the no-implicit-float option to cc1. Since the -mno-implicit-float option is now accepted by the driver, this just makes it work for x86 the same as it does for ARM targets. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174836 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-10Use static functions instead of an unnamed namespaceDmitri Gribenko
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174835 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-10Reformat formatter code. No functionality change.Nico Weber
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174823 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-10Formatter: Detect ObjC array literals.Nico Weber
Use this to add a space after "@[" and before "]" for now. Later, I want to use this to format multi-line array literals nicer, too. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174822 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-10objective-C: Fixes a bogus warning due to not settingFariborz Jahanian
the "nonatomic" attribute in property redeclaration in class extension. Also, improved on diagnostics in this area while at it. // rdar://13156292 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174821 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-09Formatter: Add test for default arguments.Nico Weber
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174816 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-09FileCheck'ize testsDmitri Gribenko
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174815 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-09FileCheck'ize a testDmitri Gribenko
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174814 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-09Remove unreachable statementDmitri Gribenko
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174811 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-09Comment parsing: use CharInfo.hDmitri Gribenko
This also gives us 0.2% speedup on '-fsyntax-only -Wdocumentation' time for a testcase that consists of all Clang headers. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174810 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-09libclang: use CXCursor getters to simplify codeDmitri Gribenko
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174809 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-09Remove some stray uses of <ctype.h> functions.Jordan Rose
These are causing assertions on some MSVC builds. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174805 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-09QoI: -Wreadonly-iboutlet-property should have the warning's location on the ↵Ted Kremenek
property. There's no need to refer to the @implementation at all. Fixes <rdar://problem/13186515> git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174802 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-09Release notes: mention support for Unicode and UCNs in identifiers.Jordan Rose
I'm using the name "Extended Identifiers" for the feature because that's what GCC calls them. According to the standard, the new feature is "universal character names are now allowed in identifiers", but the more interesting "feature" is that identifiers can now contain Unicode characters, however they are written. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174798 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-09Ensure that type definitions present in just-loaded modules areDouglas Gregor
visible. The basic problem here is that a given translation unit can use forward declarations to form pointers to a given type, say, class X; X *x; and then import a module that includes a definition of X: import XDef; We will then fail when attempting to access a member of X, e.g., x->method() because the AST reader did not know to look for a default of a class named X within the new module. This implementation is a bit of a C-centric hack, because the only definitions that can have this property are enums, structs, unions, Objective-C classes, and Objective-C protocols, and all of those are either visible at the top-level or can't be defined later. Hence, we can use the out-of-date-ness of the name and the identifier-update mechanism to force the update. In C++, we will not be so lucky, and will need a more advanced solution, because the definitions could be in namespaces defined in two different modules, e.g., // module 1 namespace N { struct X; } // module 2 namespace N { struct X { /* ... */ }; } One possible implementation here is for C++ to extend the information associated with each identifier table to include the declaration IDs of any definitions associated with that name, regardless of context. We would have to eagerly load those definitions. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174794 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-09clang/lib/StaticAnalyzer/Core/BugReporter.cpp: Appease old msvc in ↵NAKAMURA Takumi
std::pair(0, 0). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174792 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-09Properly validate UCNs for C99 and C++03 (both more restrictive than C(++)11).Jordan Rose
Add warnings under -Wc++11-compat, -Wc++98-compat, and -Wc99-compat when a particular UCN is incompatible with a different standard, and -Wunicode when a UCN refers to a surrogate character in C++03. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174788 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-09[analyzer] Invalidation checker: move the "missing implementation" checkAnna Zaks
The missing definition check should be in the same category as the missing ivar validation - in this case, the intent is to invalidate in the given class, as described in the declaration, but the implementation does not perform the invalidation. Whereas the MissingInvalidationMethod checker checks the cases where the method intention is not to invalidate. The second checker has potential to have a much higher false positive rate. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174787 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-08[analyzer] Move DefaultBool so that all checkers can share it.Anna Zaks
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174782 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-08[analyzer] Split IvarInvalidation into two checkersAnna Zaks
Separate the checking for the missing invalidation methods into a separate checker so that it can be turned on/off independently. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174781 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-08[analyzer] IvarInvalidation: refactor, pull out the diagnostic printingAnna Zaks
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174780 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-08[analyzer] IvarInvalidation: add annotation for partial invalidationAnna Zaks
The new annotation allows having methods that only partially invalidate IVars and might not be called from the invalidation methods directly (instead, are guaranteed to be called before the invalidation occurs). The checker is going to trust the programmer to call the partial invalidation method before the invalidator.This is common in cases when partial object tear down happens before the death of the object. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174779 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-08objective-C: don't issue bogus warning aboutFariborz Jahanian
"auto-synthesized may not work correctly with 'nib' loader" when 'readonly' property is redeclared 'readwrite' in class extension. // rdar://13123861 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174775 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-08CharInfo: Add missing "using namespace clang::charinfo" in .cpp file.Jordan Rose
Should fix the MSC bot. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174769 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-08Excise <cctype> from Clang (except clang-tblgen) in favor of CharInfo.h.Jordan Rose
Nearly all of these changes are one-to-one replacements; the few that aren't have to do with custom identifier validation. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174768 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-08Simplify logic for avoiding concatenation after numeric constants.Jordan Rose
I threw in a couple of test cases for UD-suffixes -- already working, but it wasn't immediately obvious to me. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174767 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-08StmtPrinter: Write large char values using \u or \U.Jordan Rose
This may not always be valid, but we were previously just emitting them raw. While here, s/isprint/isPrintable/ (using the new CharInfo). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174766 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-08Pull Lexer's CharInfo table out for general use throughout Clang.Jordan Rose
Rewriting the same predicates over and over again is bad for code size and code maintainence. Using the functions in <ctype.h> is generally unsafe unless they are specified to be locale-independent (i.e. only isdigit and isxdigit). The next commit will try to clean up uses of <ctype.h> functions within Clang. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174765 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-08Note that checker-271 is newer than the analyzer in Xcode 4.6Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174759 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-08Update open source checker build to checker-271.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174758 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-08Always keep highest identifier, selector, and macro IDs when we'veDouglas Gregor
read another one, just as we do for types. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174745 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-08Never cache the result of a module file lookup.Douglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174744 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-08Fix indentation-detection at indent level 0.Manuel Klimek
This correctly formats: { a; } where { is incorrectly indented by 2, but is at level 0, when reformatting only 'a;'. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174737 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-08Teach BugReporter (extensive diagnostics) to emit a diagnostic when a loop ↵Ted Kremenek
body is skipped. Fixes <rdar://problem/12322528>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174736 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-08[libclang] Add a test to make sure annotation works fine in the presence ofArgyrios Kyrtzidis
'override' on the method. This was fixed in a previous commit, generally handling attributes that are at the end of the declaration. rdar://13140589 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174734 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-08Remove stale instance variable.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174730 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-08objective-C modern translation: Fix another random translation bugFariborz Jahanian
involving property getter expressions on rhs of property setter. // rdar://13138459 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174729 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-08Takes the context into account when re-indenting regions.Manuel Klimek
Fixes llvm.org/PR14916. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174720 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-08objective-C modern translator. Fixes a trivialFariborz Jahanian
rewriting bug where #ifdef ended up on the same line as the attribute declaration. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174719 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-08Fix handling of fake parenthesis during formatting.Daniel Jasper
They are much easier to handle when attached to the previous token. Before: unsigned Indent = formatFirstToken(TheLine.First, IndentForLevel[TheLine.Level] >= 0 ? IndentForLevel[TheLine.Level] : TheLine.Level * 2, TheLine.InPPDirective, PreviousEndOfLineColumn); After: unsigned Indent = formatFirstToken( TheLine.First, IndentForLevel[TheLine.Level] >= 0 ? IndentForLevel[TheLine.Level] : TheLine.Level * 2, TheLine.InPPDirective, PreviousEndOfLineColumn); git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174718 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-08Implement a tiny expression parser to improve formatting decisions.Daniel Jasper
With this patch, the formatter introduces 'fake' parenthesis according to the operator precedence of binary operators. Before: return aaaa & AAAAAAAAAAAAAAAAAAAAAAAAAAAAA || bbbb & BBBBBBBBBBBBBBBBBBBBBBBBBBBBB || cccc & CCCCCCCCCCCCCCCCCCCCCCCCCC || dddd & DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD; f(aaaaaaaaaaaaaaaaaaaa && aaaaaaaaaaaaaaaaaaaa, aaaaaaaaaaaaaaaaaaaa && aaaaaaaaaaaaaaaaaaaa, aaaaaaaaaaaaaaaaaaaa && aaaaaaaaaaaaaaaaaaaa); After: return aaaa & AAAAAAAAAAAAAAAAAAAAAAAAAAAAA || bbbb & BBBBBBBBBBBBBBBBBBBBBBBBBBBBB || cccc & CCCCCCCCCCCCCCCCCCCCCCCCCC || dddd & DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD; f(aaaaaaaaaaaaaaaaaaaa && aaaaaaaaaaaaaaaaaaaa, aaaaaaaaaaaaaaaaaaaa && aaaaaaaaaaaaaaaaaaaa, aaaaaaaaaaaaaaaaaaaa && aaaaaaaaaaaaaaaaaaaa); Future improvements: - Get rid of some of the hacky ways to nicely format certain constructs. - Merge this parser and the AnnotatingParser as we now have several parsers that analyze (), [], etc. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174714 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-08Avoid unnecessary line breaks in nested ObjC calls.Daniel Jasper
Before: [pboard setData:[NSData dataWithBytes:&button length:sizeof(button)] forType:kBookmarkButtonDragType]; After: [pboard setData:[NSData dataWithBytes:&button length:sizeof(button)] forType:kBookmarkButtonDragType]; git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174701 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-08Improve filechecking of volatile test.Tim Northover
My previous attempt was extremely deficient, allowing more volatiles to be introduced and not even checking all of the ones that are present. This attempt doesn't try to keep track of the values stored or offsets within particular objects, just that the correct objects are accessed in a correctly volatile manner throughout. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174700 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-08CMake: Include Clang unit tests in check-clang target in standalone builds.Jordan Rose
Also, remove CLANG_BUILD_TESTS option. It won't have consistent behavior between standalone and non-standalone builds, so I'm not going to bother hooking it up for standalone builds. LLVM_BUILD_TESTS will continue to control unit test inclusion in the "all" target in non-standalone builds. Finally, fix the default value of CLANG_INCLUDE_TESTS, which was being set to the boolean value of "LLVM_INCLUDE_TESTS", i.e. OFF, rather than actually reading the variable ${LLVM_INCLUDE_TESTS}! If you picked up my earlier commit, YOU WILL HAVE TO MANUALLY SET THIS OPTION BACK ON. My apologies! Part two of r174691 (allow the unit tests to be built in standalone mode). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174698 91177308-0d34-0410-b5e6-96231b3b80d8