aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2013-02-06Eliminate a race condition with the global module index.Douglas Gregor
Essentially, a module file on disk could change size between the time we stat() it and the time we open it, and we need to be robust against such a problem. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174529 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-06Formatter: Correctly detect ObjC message expressions preceded by a comment.Nico Weber
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174521 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-06Fix handling of comments in macros.Manuel Klimek
We now correctly format: // Written as a macro, it is reformatted from: #define foo(a) \ do { \ /* Initialize num to zero. */ \ int num = 10; \ /* This line ensures a is never zero. */ \ int i = a == 0 ? 1 : a; \ i = num / i; /* This division is OK. */ \ return i; \ } while (false) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174517 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-06Much semicolon after namespaces.Manuel Klimek
We now leave the semicolon in the line of the closing brace in: namespace { ... }; git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174514 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-06Fix formatting of ObjC method calls.Daniel Jasper
This fixes llvm.org/PR15165. We now correctly align: [image_rep drawInRect:drawRect fromRect:NSZeroRect operation:NSCompositeCopy fraction:1.0 ssssssssdd:NO hints:nil]; git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174513 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-06Parse record declarations with token pasted identifiers.Manuel Klimek
This is pretty common in macros: #define A(X, Y) class X##Y {}; git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174512 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-06Fix a formatting bug caused by comments in expressions.Daniel Jasper
This fixes llvm.org/PR15162. Before: bool aaaaaaaaaaaaa = // comment aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa || aaaaaaaaaaaaaaaaaaaaaaaaaaaa || aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa || aaaaaaaaaaaaaaaaaaaaaaaaaaaaa; After: bool aaaaaaaaaaaaa = // comment aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa || aaaaaaaaaaaaaaaaaaaaaaaaaaaa || aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa || aaaaaaaaaaaaaaaaaaaaaaaaaaaaa; git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174508 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-06Optionally derive formatting information from the input file.Daniel Jasper
With this patch, clang-format can analyze the input file for two properties: 1. Is "int *a" or "int* a" more common. 2. Are non-C++03 constructs used, e.g. A<A<A>>. With Google-style, clang-format will now use the more common style for (1) and format C++03 compatible, unless it finds C++11 constructs in the input. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174504 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-06Fix an issue with the formatting of stars in default values.Daniel Jasper
Before: void f(int *a = d *e, int b = 0); After: void f(int *a = d * e, int b = 0); git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174500 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-06Adds a convenience function selectFirst to simplify matching.Manuel Klimek
A very common use case is to search for the first occurrence of a certain node that is a descendant of another node. In that case, selectFirst significantly simplifies the code at the client side. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174499 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-06Handle nested ObjC calls.Daniel Jasper
Properly handle annotation contexts while calculating extra information for each token. This enable nested ObjC calls and thus solves (most of) llvm.org/PR15164. E.g., we can now format: [contentsContainer replaceSubview:[subviews objectAtIndex:0] with:contentsNativeView]; Also fix a problem with the formatting of types in casts as this was trivial now. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174498 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-06Formatter: No space after & and * in front of ObjC message expressions.Nico Weber
1. let determineStarAmp() check of unary operators before checking for "is next '['". That check was added in r173150, and the test from that revision passes either way. 2. change determineStarAmp() to categorize '*' and '&' after '=' as unary operator. 3. don't let parseSquare() overwrite the type of a '*' or '&' before the start of an objc message expression if has the role of unary operator. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174489 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-06Don't check whether a friend declaration is correctly formed when instantiating,Nick Lewycky
we already checked it when parsing. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174486 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-06Use a dyn_cast to avoid a crash when the TypeLoc is not a ConstantArrayTypeLoc.Chad Rosier
rdar://13153516 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174477 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-06[Headers] Use standard builtin defines instead of typeof trickery.Daniel Dunbar
- The trickery can confuse more basic source processors, in particular the Unix conformance tool that wants to scan headers. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174475 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-06Added test for r174461 that checks that the desired behavior also occurs in ↵Michael Gottesman
ObjC++ alongside ObjC. \end paranoia. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174471 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-06[analyzer]Revert part of r161511; suppresses leak false positives in C++Anna Zaks
This is a "quick fix". The underlining issue is that when a const pointer to a struct is passed into a function, we do not invalidate the pointer fields. This results in false positives that are common in C++ (since copy constructors are prevalent). (Silences two llvm false positives.) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174468 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-05Adding armv7l default to cortex-a8Renato Golin
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174466 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-05Changed CGObjCMac.cpp to add the marker externally_initialized to ↵Michael Gottesman
SELECTOR_REFERENCES in both the fragile and non-fragile API. This is to ensure that GlobalOpt in LLVM does not attempt to look through a selector reference to a method var name at compile time. I also added a test/updated old tests that need to recognize the new keyword. rdar://12580965. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174461 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-05Add note why we used a switch.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174449 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-05Minor tweak to install docsDouglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174448 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-05Change subexpressions to be visited in the CFG from left-to-right.Ted Kremenek
This is a more natural order of evaluation, and it is very important for visualization in the static analyzer. Within Xcode, the arrows will not jump from right to left, which looks very visually jarring. It also provides a more natural location for dataflow-based diagnostics. Along the way, we found a case in the analyzer diagnostics where we needed to indicate that a variable was "captured" by a block. -fsyntax-only timings on sqlite3.c show no visible performance change, although this is just one test case. Fixes <rdar://problem/13016513> git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174447 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-05Remove an uninteresting noteDouglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174441 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-05[analyzer] Teach the analyzer to use a symbol for p when evaluatingAnna Zaks
(void*)p. Addresses the false positives similar to the test case. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174436 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-05[analyzer] add commentAnna Zaks
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174435 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-05[analyzer] Fix typo, better doxygen as per Jordan's feedback.Anna Zaks
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174434 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-05[analyzer] Add a doc describing the internals of RegionStore.Jordan Rose
This is a text file with Markdown-ish formatting because we haven't decided where analyzer internal documents should go, but it's probably better to have this in source control than sitting on my local drive forever. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174398 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-05[arcmt] Make sure the objc migrators work fine when used with a PCH.Argyrios Kyrtzidis
rdar://13140508 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174386 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-05[frontend] Don't put a PCH/PTH filename into the set of includes in the ↵Argyrios Kyrtzidis
preprocessor options; since only one of them is allowed in command-line, process them separately. Otherwise, if more than one is specified in the command-line, one is processed normally and the others are going to be treated and included as header files. Related to radar://13140508 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174385 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-05Formatter: Detect ObjC method expressions after unary operators.Nico Weber
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174384 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-05Initial support for formatting ObjC method declarations/calls.Daniel Jasper
We can now format stuff like: - (void)doSomethingWith:(GTMFoo *)theFoo rect:(NSRect)theRect interval:(float)theInterval { [myObject doFooWith:arg1 // name:arg2 error:arg3]; } This seems to fix everything mentioned in llvm.org/PR14939. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174364 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-05Fix some linebreak decisions in Google format.Daniel Jasper
Before: f(aaaaaaaaaaaaaaaaaaaa, aaaaaaaaaaaaaaaaaaaa, aaaaaaaaaaaaaaaaaaaa + aaaaaaaaaaaaaaaaaaaa); aaaaaaa(aaaaaaaaaaaaa, aaaaaaaaaaaaa, aaaaaaaaaaaaa(aaaaaaaaaaaaaaaaa, aaaaaaaaaaaaaaaa)); After: f(aaaaaaaaaaaaaaaaaaaa, aaaaaaaaaaaaaaaaaaaa, aaaaaaaaaaaaaaaaaaaa + aaaaaaaaaaaaaaaaaaaa); aaaaaaa(aaaaaaaaaaaaa, aaaaaaaaaaaaa, aaaaaaaaaaaaa(aaaaaaaaaaaaaaaaa, aaaaaaaaaaaaaaaa)); git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174363 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-05Fix formatting regression introduced by r174307.Daniel Jasper
In preprocessor definitions, we would not parse all the tokens and thus not annotate them anymore. This led to a wrong formatting of comments in google style: #endif // HEADER_GUARD -- requires two spaces git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174361 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-05Fix typo in commentArnaud A. de Grandmaison
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174359 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-05TextDiagnostic.cpp: Suppress a warning to use ptrdiff_t on i686-clang. ↵NAKAMURA Takumi
[-Wsign-compare] git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174353 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-05Driver and option support for -gsplit-dwarf. This is a part ofEric Christopher
the DWARF5 split dwarf proposal. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174349 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-05Spaces instead of tabs.Eric Christopher
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174348 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-05Revert "Remove sparse text on diagnostic options. These are not really ↵Ted Kremenek
documented anywhere, and they really aren't for normal users." I changed my mind. We should just document these in the man page. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174344 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-05Remove dead code related to the now defunct PCH stat cache.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174342 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-05Test for virtual instead of pure here. It has the exact same effect, and JohnNick Lewycky
claims it will improve performance. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174341 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-05PR15095: Use more correct source locations for the InitListExpr we fake up forRichard Smith
vector initialization. Patch by John Stratton! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174339 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-05Remove sparse text on diagnostic options. These are not really documented ↵Ted Kremenek
anywhere, and they really aren't for normal users. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174338 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-05Add some missing diagnostics for C++11 narrowing conversions.Richard Smith
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174337 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-04Implements the convenience matcher findAll.Manuel Klimek
We found that findAll has been implemented incorrectly multiple times by various people using the matchers. To prevent further wasted development effort, it makes sense to add it as convenience matcher implemented as eachOf(m, forEachDescendant(m)). This patch also updates the docs with the new matchers. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174320 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-04Add an eachOf matcher.Manuel Klimek
eachOf gives closure on the forEach and forEachDescendant matchers. Before, it was impossible to implement a findAll matcher, as matching the node or any of its descendants was not expressible (since anyOf only triggers the first match). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174315 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-04Improve handling of trailing block commentsDaniel Jasper
This is a follow up to r174309 to actually make it work. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174314 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-04Improve formatting of stream operators.Daniel Jasper
If there are string literals on either side of a '<<', chances are high that they represent logically separate concepts. Otherwise, the author could just have just a single literal (possible split over multiple lines). So, we can now nicely format things like: cout << "somepacket = {\n" << " val a = " << ValueA << "\n" << " val b = " << ValueB << "\n" << "}"; git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174310 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-04Improve handling of trailing block comments.Daniel Jasper
We can now (even in non-bin-packing modes) format: someFunction(1, /* comment 1 */ 2, /* comment 2 */ 3, /* comment 3 */ aaa); git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174309 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-04Fix an error in formatting of for-loops.Daniel Jasper
Two minor changes: * Slight penalty for breaking at "," as opposed to ";". * Don't apply bin-packing rules to for-loops. Before: for (int aaaaaa = aaaaaaaaaa; aaaaaa < bbbbbbbb; ++aaaaaa, ++ccccccccccccccc) {} After: for (int aaaaaa = aaaaaaaaaa; aaaaaa < bbbbbbbb; ++aaaaaa, ++ccccccccccccccc) {} git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174308 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-04Restructuring of token annotation for formatting.Daniel Jasper
This combines several changes: * Calculation token type (e.g. for * and &) in the AnnotatingParser. * Calculate the scope binding strength in the AnnotatingParser. * Let <> and [] scopes bind stronger than () and {} scopes. * Add minimal debugging output. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174307 91177308-0d34-0410-b5e6-96231b3b80d8