aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2012-03-28[libclang] For clang_saveTranslationUnit, if the AST to save has invalid nodesArgyrios Kyrtzidis
due to compiler errors, use a crash recovery thread to do the AST writing for protection. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153560 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-27Move the emission of strict enum range metadata behind a flag (the sameChandler Carruth
flag as GCC uses: -fstrict-enums). There is a *lot* of code making unwarranted assumptions about the underlying type of enums, and it doesn't seem entirely reasonable to eagerly break all of it. Much more importantly, the current state of affairs is *very* good at optimizing based upon this information, which causes failures that are very distant from the actual enum. Before we push for enabling this by default, I think we need to implement -fcatch-undefined-behavior support for instrumenting and trapping whenever we store or load a value outside of the range. That way we can track down the misbehaving code very quickly. I discussed this with Rafael, and currently the only important cases he is aware of are the bool range-based optimizations which are staying hard enabled. We've not seen any issue with those either, and they are much more important for performance. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153550 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-27Introduce a new libclang API to determine the parent context of a codeDouglas Gregor
completion item. For example, if the code completion itself represents a declaration in a namespace (say, std::vector), then this API retrieves the cursor kind and name of the namespace (std). Implements <rdar://problem/11121951>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153545 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-27If we see '(...' where we're expecting an abstract-declarator, that doesn'tRichard Smith
necessarily mean we've found a function declarator. If the next token is not a ')', this is actually a parenthesized pack expansion. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153544 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-27[libclang] Introduce indexing option CXIndexOpt_SuppressWarnings, whichArgyrios Kyrtzidis
disables all compiler warnings. rdar://11059556 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153539 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-27modern objective-c translator: writing objc boolean literals.Fariborz Jahanian
// rdar://11124775 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153535 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-27[analyzer] Add an option to re-analyze a dead-end path without inlining.Anna Zaks
The analyzer gives up path exploration under certain conditions. For example, when the same basic block has been visited more than 4 times. With inlining turned on, this could lead to decrease in code coverage. Specifically, if we give up inside the inlined function, the rest of parent's basic blocks will not get analyzed. This commit introduces an option to enable re-run along the failed path, in which we do not inline the last inlined call site. This is done by enqueueing the node before the processing of the inlined call site with a special policy encoded in the state. The policy tells us not to inline the call site along the path. This lead to ~10% increase in the number of paths analyzed. Even though we expected a much greater coverage improvement. The option is turned off by default for now. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153534 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-27[analyzer] Fix a typo.Anna Zaks
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153533 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-27[analyzer] Stats checker: minor interprocedural tweaks.Anna Zaks
Report root function name with exhausted block diagnostic. Also, use stack frames, not just any location context when checking if the basic block is in the same context. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153532 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-27[analyzer] Stats: Only count the number of times we run path sensitiveAnna Zaks
analyzes. (This method can be called twice on the same function.) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153531 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-27Add better support for $fp and $sp for mips inline asm support.Eric Christopher
Patch by Jack Carter. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153530 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-27[preprocessor] Handle correctly inclusion directives that have macro ↵Argyrios Kyrtzidis
expansions, e.g "#include MACRO(STUFF)". -As an inclusion position for the included file, use the file location of the file where it was included but *after* the macro expansions. We want the macro expansions to be considered as before-in-translation-unit for everything in the included file. -In the preprocessing record take into account that only inclusion directives can be encountered as "out-of-order" (by comparing the start of the range which for inclusions is the hash location) and use binary search if there is an extreme number of macro expansions in the include directive. Fixes rdar://11111779 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153527 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-27objective-c modern translator: move all inithooks into a single arrayFariborz Jahanian
// rdar://11124354 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153526 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-27Even more careful consideration of C++11 13.3.3.1p4. Fixes PR12241.Sebastian Redl
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153523 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-27Introduce a -cc1-level option -pubnames-dump, which simply dumps theDouglas Gregor
list of identifiers that that 'public' names at the end of the translation unit, e.g., defined macros or identifiers with top-level names, in sorted order. Meant to support <rdar://problem/10921596>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153522 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-27Remove few if-then-else when both branches are theFariborz Jahanian
same. pr12357. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153515 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-27Commit patch reverted in r153454 with the modified testFariborz Jahanian
case that I forgot to check in. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153512 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-27Update the ARC specification for several changes made in theJohn McCall
last N months. This required a brief soliloquy about change in an uncertainly-versioned world. I believe I've gotten the right target versions on all these changes. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153501 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-27Add cross-referencing comments to ParseDirectDeclarator to note thatRichard Smith
isConstructorDeclaration also needs updating for any extension to the grammar of a direct-declarator. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153490 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-27Change RetainCountChecker to eagerly "escape" retained objects when they areTed Kremenek
assigned to a struct. This is fallout from inlining results, which expose far more patterns where people stuff CF objects into structs and pass them around (and we can reason about it). The problem is that we don't have a general way to detect when values have escaped, so as an intermediate step we need to eagerly prune out such tracking. Fixes <rdar://problem/11104566>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153489 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-27When we see 'Class(X' or 'Class::Class(X' and we suspect that it names aRichard Smith
constructor, but X is not a known typename, check whether the tokens could possibly match the syntax of a declarator before concluding that it isn't a constructor. If it's definitely ill-formed, assume it is a constructor. Empirical evidence suggests that this pattern is much more often a constructor with a typoed (or not-yet-declared) type name than any of the other possibilities, so the extra cost of the check is not expected to be problematic. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153488 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-26[driver] Put -cpp-precomp and -no-cpp-precomp under the clang_ignored_f_group.Chad Rosier
We don't currently support these options. rdar://11120518 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153485 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-26[driver] Testcase for r153469, r153470, and r153478.Chad Rosier
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153481 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-26[driver] Fix unused argument warnings.Chad Rosier
1. Don't short-circuit conditional statements that are checking flags. Otherwise, the driver emits warnings about unused arguments. 2. -mkernel and -fapple-kext imply no exceptions, so claim exception related arguments now to avoid warnings about unused arguments. rdar://11120518 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153478 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-26[driver] -mkernel implies -fno-common, so claim the arg to avoid an unusedChad Rosier
argument warning. Part of rdar://11120518 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153470 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-26[driver] -mkernel implies -fno-builtin, so claim the arg to avoid an unusedChad Rosier
argument warning. Part of rdar://11120518 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153469 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-26Forward-declared enumerations are now complete, except for an interactionRichard Smith
between unscoped enumerations and class template member specializations, whose behavior is currently under discussion in CWG (and for which there is a preference to not implement the currently-standardized wording). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153464 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-26Add a special-case diagnostic for one of the more obnoxious special cases ofRichard Smith
unscoped enumeration members: an enumerator name which is visible in the out-of-class definition of a member of a templated class might not actually exist in the instantiation of that class, if the enumeration is also lexically defined outside the class definition and is explicitly specialized. Depending on the result of a CWG discussion, we may have a different resolution for a class of problems in this area, but this fixes the immediate issue of a crash-on-invalid / accepts-invalid (depending on +Asserts). Thanks to Johannes Schaub for digging into the standard wording to find how this case is currently specified to behave. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153461 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-26[tests] Fix test failure in release mode.Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153460 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-26Simplify code, no functionality change.Benjamin Kramer
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153459 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-26Revert r153443 "objective-c modern translator: extern "C" exported", it ↵Daniel Dunbar
fails in testing. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153454 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-26[analyzer] Malloc: Allow a pointer to escape through OSAtomicEnqueue.Anna Zaks
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153453 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-26Test case for r153348.Akira Hatanaka
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153449 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-26add tbaa metadata to vtable pointer loads/storesKostya Serebryany
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153447 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-26Move CodeCompletionBuilder's chunk adding methods out of line.Benjamin Kramer
This makes sense because chunk's ctor is also out of line and simplifies considerably when inlined with a constant parameter. Shrinks clang on i386-linux-Release+Asserts by 65k. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153446 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-26When diagnosing an invalid out-of-line redeclaration, don't permitDouglas Gregor
typo correction to introduce a nested-name-specifier; we aren't prepared to handle it here. Fixes PR12297 / <rdar://problem/11075219>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153445 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-26objective-c modern translator: extern "C" exportedFariborz Jahanian
symbols. // rdar://11103982 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153443 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-26Canonicalize the declaration we write to a PCH file for anDouglas Gregor
InjectedClassNameType; otherwise, it won't be properly wired to the original (canonical) declaration when it is deserialized. Fixes <rdar://problem/11112464>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153442 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-26Driver: Factor string vector push_back into a helper class and optimize it.Benjamin Kramer
Due to lack of move semantics we would create a temporary std::string from the string literal, copy it into the vector and discard the temporary. This leads to massive code bloat, optimizing it saves 50k on i386-linux-Release+Asserts. While there add a two-element overload for push_back, simplifying code a bit. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153441 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-26ThreadSafetyReporter: Manage diagnostics in a std::list.Benjamin Kramer
std::list is expensive, but so is std::sorting a SmallVector of SmallVectors of heavyweight PartialDiagnostics. Saves ~30k in a i386-linux-Release+Asserts clang build. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153437 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-26Handle instantiations of redeclarations of forward-declared enumerations withinRichard Smith
templated functions. Build a redeclaration chain, and only instantiate the definition of the enum when visiting the defining declaration. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153427 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-26Delay checking of dependent underlying types for redeclarations of memberRichard Smith
enumerations in templates until the template is instantiated. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153426 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-25Since this change is generating a considerable amount of discussion (and ↵Aaron Ballman
possibly even a regression for known bad versions), I'm reverting it. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153420 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-25No longer hard coding paths to the MinGW include directories; using a ↵Aaron Ballman
regular expression instead. Patch thanks to Nikola Smiljanic git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153413 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-25clang/lib/Analysis/CFG.cpp: Get rid of early insertion of placeholder to the ↵NAKAMURA Takumi
map. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153407 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-25clang/lib/Analysis/CFG.cpp: Fix memory leak since r153297.NAKAMURA Takumi
evaluateAsBooleanConditionNoCache(S) might update the map and invalidate the iterator. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153406 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-25test/Driver/cpath.c: Escape a few args that contain %{pathsep}.NAKAMURA Takumi
On msys bash, with %pathsep==os.pathsep==';', I can see lines like below in this script; env DIR=X:/foo%{pathsep}X:/bar Then it is expanded to; env DIR=X:/foo;X:/bar It should be with quote; env "DIR=X:/foo;X:/bar" git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153402 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-24Simplify some users of DenseMap::erase.Benjamin Kramer
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153389 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-24remove declaration of _objc_empty_vtable no longerFariborz Jahanian
used in modern objc translator. // rdar://11105680 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153386 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-24Fix copy and pasto.Rafael Espindola
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153385 91177308-0d34-0410-b5e6-96231b3b80d8