summaryrefslogtreecommitdiffstats
path: root/clang/lib
Commit message (Collapse)AuthorAgeFilesLines
...
* [parser] Push a semi token for recovery only when it is actually missing.Argyrios Kyrtzidis2012-12-171-7/+9
| | | | llvm-svn: 170363
* [analyzer] Tweak the NumFunctionsAnalyzed stat so that it's more useful.Anna Zaks2012-12-171-3/+5
| | | | llvm-svn: 170362
* [analyzer] Implement "do not inline large functions many times"Anna Zaks2012-12-172-2/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | performance heuristic After inlining a function with more than 13 basic blocks 32 times, we are not going to inline it anymore. The idea is that inlining large functions leads to drastic performance implications. Since the function has already been inlined, we know that we've analyzed it in many contexts. The following metrics are used: - Large function is a function with more than 13 basic blocks (we should switch to another metric, like cyclomatic complexity) - We consider that we've inlined a function many times if it's been inlined 32 times. This number is configurable with -analyzer-config max-times-inline-large=xx This heuristic addresses a performance regression introduced with inlining on one benchmark. The analyzer on this benchmark became 60 times slower with inlining turned on. The heuristic allows us to analyze it in 24% of the time. The performance improvements on the other benchmarks I've tested with are much lower - under 10%, which is expected. llvm-svn: 170361
* Reapply r170344, this time without forgetting to commit the header changes.David Chisnall2012-12-174-13/+92
| | | | llvm-svn: 170354
* Revert "Added support for new property helpers (GNUstep runtime)."Benjamin Kramer2012-12-174-92/+13
| | | | | | This reverts commit r170344. Doesn't even compile. llvm-svn: 170351
* Added support for new property helpers (GNUstep runtime).David Chisnall2012-12-174-13/+92
| | | | llvm-svn: 170344
* Add basic support for splitting before function calls if it can't beDaniel Jasper2012-12-171-16/+29
| | | | | | | | | | | | avoided. This required a minor modification of the memoization as now the "CurrentPenalty" depends on whether or not we break before the current token. Therefore, the CurrentPenalty should not be memoized but added after retrieving a value from memory. This should not affect the runtime behavior. llvm-svn: 170337
* Fix several formatting problems.Daniel Jasper2012-12-173-17/+21
| | | | | | | | | More specifically: - Improve formatting of static initializers. - Fix formatting of lines comments in enums. - Fix formmating of trailing line comments. llvm-svn: 170316
* tsan: add __has_feature(thread_sanitizer)Dmitry Vyukov2012-12-171-0/+1
| | | | llvm-svn: 170314
* This patch fixes PR13624, which notes a 64-bit PowerPC ELF ABIBill Schmidt2012-12-171-0/+3
| | | | | | | | | | incompatibility with how complex values are returned. It is sufficient to flag all complex types as direct rather than indirect. A new test case is provided that checks correct IR generation for the various supported flavors of _Complex. llvm-svn: 170302
* IdentifierResolver: Remove an unnecessary include and an unused parameter.Nico Weber2012-12-172-4/+2
| | | | llvm-svn: 170297
* Don't use SourceLineCache in getColumnNumber if LastLineNoResult is past the ↵Craig Topper2012-12-161-1/+2
| | | | | | end of the cache. Fixes PR14570. llvm-svn: 170281
* [ubsan] Emit branch weight metadata to hint towards common case.Will Dietz2012-12-151-1/+9
| | | | | | | Results in better block placement that helps close the performance gap when making ubsan checks recoverable. llvm-svn: 170263
* fixed line endingsAnton Yartsev2012-12-141-22/+22
| | | | llvm-svn: 170238
* added post-statement callback to CXXNewExpr and pre-statement callback to ↵Anton Yartsev2012-12-141-15/+22
| | | | | | CXXDeleteExpr llvm-svn: 170234
* Don't hit an assertion failure when calculating the __PRETTY_FUNCTION__Argyrios Kyrtzidis2012-12-141-1/+1
| | | | | | | | | | | | | | of a member function with parenthesized declarator. Like this test case: class Foo { const char *(baz)() { return __PRETTY_FUNCTION__; } }; llvm-svn: 170233
* [analyzer] Propagate the checker's state from checkBranchConditionAnna Zaks2012-12-141-3/+3
| | | | | | | Fixes a bug, where we were dropping the state modifications from the checkBranchCondition checker callback. llvm-svn: 170232
* [analyzer] Refactor: Store visited Decls instead of CallGraphNodes.Anna Zaks2012-12-141-24/+22
| | | | llvm-svn: 170231
* Style and Doc fix for CommonOptionsParserEdwin Vane2012-12-141-2/+2
| | | | | | | | | | | | - Renaming GetCompilations() and GetSourcePathList() to follow LLVM style. - Updating docs to reflect name change. - Also updating help text to not mention clang-check since this class can be used by any tool. Reviewed By: Alexander Kornienko llvm-svn: 170229
* [preprocessor] For errors at a function macro invocation, also includeArgyrios Kyrtzidis2012-12-141-0/+8
| | | | | | a note about where the macro is defined. llvm-svn: 170228
* Don't require a space between the two ">" in "vector<id<protocol>>" in objc++11.Nico Weber2012-12-142-49/+59
| | | | | | | | C++11 allowed writing "vector<vector<int>>" without a space between the two ">". This change allows this for protocols in template lists too in -std=c++11 mode, and improves the diagnostic in c++98 mode. llvm-svn: 170223
* Targets.cpp: [cygwin] Add the predefined macro "_X86_", according to newer ↵NAKAMURA Takumi2012-12-141-0/+1
| | | | | | version of cygwin/w32api. llvm-svn: 170188
* Have Sema::ActOnStartOfFunctionDef return the declaration that was passed it.Argyrios Kyrtzidis2012-12-141-2/+2
| | | | | | | | | | | | | | | | | | | | This fixes the missing warning here: struct S { template <typename T> void meth() { char arr[3]; arr[4] = 0; // warning: array index 4 is past the end of the array } }; template <typename T> void func() { char arr[3]; arr[4] = 0; // no warning } llvm-svn: 170180
* Remove code from Sema::ActOnStartOfFunctionTemplateDef that duplicates whatArgyrios Kyrtzidis2012-12-141-7/+1
| | | | | | Sema::ActOnStartOfFunctionDef is already doing. llvm-svn: 170179
* fix spelloNico Weber2012-12-141-1/+1
| | | | llvm-svn: 170176
* Refactor dump methods to make RegionBindingsRef printable in the debugger.Ted Kremenek2012-12-141-9/+16
| | | | llvm-svn: 170170
* Make sure the __invoke function for lambdas returns properly. Per bug ↵Eli Friedman2012-12-131-0/+2
| | | | | | report on IRC> llvm-svn: 170160
* Debug Info: Emit vtables pointer members as artificial.David Blaikie2012-12-131-1/+1
| | | | | | | | | | | | I wasn't sure where to put the test case for this, but this seemed like as good a place as any. I had to reorder the tests here to make them legible while still matching the order of metadata output in the IR file (for some reason making it virtual changed the ordering). Relevant commit to fix up LLVM to actually respect 'artificial' member variables is coming once I write up a test case for it. llvm-svn: 170154
* [PCH] Make the new PCH format (control block) backwards compatible andArgyrios Kyrtzidis2012-12-132-0/+16
| | | | | | | | | | | | don't crash when loading a PCH with the older format. The introduction of the control block broke compatibility with PCHs from older versions. This patch allows loading (and rejecting) PCHs from an older version and allows newer PCHs to be rejected from older clang versions as well. rdar://12821386 llvm-svn: 170150
* Add support for current Ubuntu Quantal and the upcoming Raring.Rafael Espindola2012-12-131-1/+5
| | | | | | Patch by Martin Nowack. llvm-svn: 170147
* Revert 170049 because it fails with an assertion on one of the spec2000 ↵Nadav Rotem2012-12-131-72/+24
| | | | | | workloads. llvm-svn: 170143
* [analyzer] Fix doc error (wrong param name) in ObjCSuperCallChecker.Jordan Rose2012-12-131-1/+1
| | | | | | Thanks for the -Wdocumentation catch, Dmitri! llvm-svn: 170139
* Dont use/link ARCMT, StaticAnalyzer and Rewriter to clang when the userRoman Divacky2012-12-133-6/+73
| | | | | | | | | | specifies not to. Dont build ASTMatchers with Rewriter disabled and StaticAnalyzer when it's disabled. Without all those three, the clang binary shrinks (x86_64) from ~36MB to ~32MB (unstripped). llvm-svn: 170135
* Rename StmtDumper to ASTDumper.Alexander Kornienko2012-12-132-59/+59
| | | | | | Patch contributed by Philip Craig! llvm-svn: 170127
* Remove little endian specification from SPIR data layout - SPIR doesn't ↵Guy Benyei2012-12-131-2/+2
| | | | | | define endiannes in the data layout. llvm-svn: 170125
* ubsan: Add -fsanitize=bool and -fsanitize=enum, which check for loads ofRichard Smith2012-12-131-11/+38
| | | | | | | bit-patterns which are not valid values for enumerated or boolean types. These checks are the ubsan analogue of !range metadata. llvm-svn: 170108
* Simplify. No functionality change.Richard Smith2012-12-131-12/+7
| | | | llvm-svn: 170100
* Initial support for FreeBSD on ARM.Rafael Espindola2012-12-134-1/+33
| | | | | | Patch by Andrew Turner. llvm-svn: 170096
* [analyzer] Generalize ObjCMissingSuperCallChecker.Jordan Rose2012-12-131-43/+109
| | | | | | | | We now check a few methods for UIResponder, NSResponder, and NSDocument. Patch by Julian Mayer! llvm-svn: 170089
* Using CanQualType::getAs<ArrayType> is unsafe; fix the code currently using it,Eli Friedman2012-12-132-15/+13
| | | | | | and make sure additional uses don't get introduced. <rdar://problem/12858424>. llvm-svn: 170081
* [analyzer] Fix a self-init checker false positive.Anna Zaks2012-12-131-2/+7
| | | | | | | | | | | This is a Band-Aid fix to a false positive, where we complain about not initializing self to [super init], where self is not coming from the init method, but is coming from the caller to init. The proper solution would be to associate the self and it's state with the enclosing init. llvm-svn: 170059
* objc: DOn't complain if a (SEL) expression is typecastFariborz Jahanian2012-12-131-0/+2
| | | | | | to (SEL). Fixes // rdar://12859590 llvm-svn: 170058
* Add missing check for error return from DefaultLvalueConversion. Fixes ↵Eli Friedman2012-12-131-0/+2
| | | | | | <rdar://problem/12857416>. llvm-svn: 170056
* More hacking on mapDiagnosticRanges to make it handle more cases.Eli Friedman2012-12-131-24/+72
| | | | | | | | | | | | | | | | | | | | | | | | This still isn't quite right, but it fixes a crash. I factored out findCommonParent because we need it on the result of getImmediateExpansionRange: for a function macro, the beginning and end of an expansion range can come out of different macros/macro arguments, which means the resulting range is a complete mess to handle consistently. I also made some changes to how findCommonParent works; it works somewhat better in some cases, and somewhat worse in others, but I think overall it's a better balance. I'm coming to the conclusion that mapDiagnosticRanges isn't using the right algorithm, though: chasing the caret is fundamentally more complicated than any algorithm which only considers one FileID for the caret can handle because each SourceLocation doesn't really have a single parent. We need to follow the same path of choosing expansion locations and spelling locations which the caret used to come up with the correct range in the general case. Fixes <rdar://problem/12847524>. llvm-svn: 170049
* [arcmt] When capturing ARC errors, have a sanity check to make sureArgyrios Kyrtzidis2012-12-121-1/+2
| | | | | | the diagnostic has a valid location. llvm-svn: 170040
* [objc] For the ARC error that is emitted when a synthesized property ↵Argyrios Kyrtzidis2012-12-122-9/+17
| | | | | | | | | | | | | | | implementation has inconsistent ownership with the backing ivar, point the error location to the ivar. Pointing to the ivar (instead of the @synthesize) is better since this is where a fix is needed. Also provide the location of @synthesize via a note. This also fixes the problem where an auto-synthesized property would emit an error without any location. llvm-svn: 170039
* Rewrite calls to bitcast unprototyped functions when emitting a definition.John McCall2012-12-121-77/+113
| | | | | | | | | | | | My variadics patch, r169588, changed these calls to typically be bitcasts rather than calls to a supposedly variadic function. This totally subverted a hack where we intentionally dropped excess arguments from such calls in order to appease the inliner and a "warning" from the optimizer. This patch extends the hack to also work with bitcasts, as well as teaching it to rewrite invokes. llvm-svn: 170034
* [driver] Don't warn about an unused -flto option.Chad Rosier2012-12-121-0/+4
| | | | | | rdar://12851905 llvm-svn: 170010
* [analyzer] Don't crash running destructors for multidimensional arrays.Jordan Rose2012-12-121-1/+2
| | | | | | | | | | We don't handle array destructors correctly yet, but we now apply the same hack (explicitly destroy the first element, implicitly invalidate the rest) for multidimensional arrays that we already use for linear arrays. <rdar://problem/12858542> llvm-svn: 170000
* Marking the objc_autoreleaseReturnValue and objc_retainAutoreleaseReturnValue Chad Rosier2012-12-121-3/+8
| | | | | | | | | | call sites as tail calls unconditionally. While it's theoretically true that this is just an optimization, it's an optimization that we very much want to happen even at -O0, or else ARC applications become substantially harder to debug. See r169796 for the llvm/fast-isel side of things. rdar://12553082 llvm-svn: 169996
OpenPOWER on IntegriCloud