]> granicus.if.org Git - clang/log
clang
10 years agoDon't leak default arg tokens on invalid destructors or conversion functions.
Nico Weber [Sat, 10 May 2014 19:23:28 +0000 (19:23 +0000)]
Don't leak default arg tokens on invalid destructors or conversion functions.

Fixes PR19689, and possibly the last leak in clang (PR19521). PR19689 contains
a few suggestions on how to make the default argument token code a bit more
solid, these changes can possibly be landed in follow-ups.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208481 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoAdd test coverage for invalid conversion functions with default args.
Nico Weber [Sat, 10 May 2014 19:15:24 +0000 (19:15 +0000)]
Add test coverage for invalid conversion functions with default args.

This currently leaks memory (PR19689) but wasn't covered by tests, so LSan
couldn't find it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208477 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoWrap to 80 columns. No behavior change.
Nico Weber [Sat, 10 May 2014 17:43:15 +0000 (17:43 +0000)]
Wrap to 80 columns. No behavior change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208475 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoObjective-C ARC. Add support for toll-free bridge
Fariborz Jahanian [Sat, 10 May 2014 17:40:11 +0000 (17:40 +0000)]
Objective-C ARC. Add support for toll-free bridge
type ,and bridge attribute, checking with static_cast.
// rdar://16756639

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208474 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoAnalyzer: Make helper function static.
Benjamin Kramer [Sat, 10 May 2014 17:13:34 +0000 (17:13 +0000)]
Analyzer: Make helper function static.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208473 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoDecouple ExprCXX.h and DeclCXX.h and clean up includes a bit.
Benjamin Kramer [Sat, 10 May 2014 16:31:55 +0000 (16:31 +0000)]
Decouple ExprCXX.h and DeclCXX.h and clean up includes a bit.

Required pulling LambdaExpr::Capture into its own header.
No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208470 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoAdd FIXME describing the limitation of using column info to disambiguate inlining.
David Blaikie [Sat, 10 May 2014 02:44:57 +0000 (02:44 +0000)]
Add FIXME describing the limitation of using column info to disambiguate inlining.

Also tidy up, simplify, and extend the test coverage to demonstrate the
limitations. This test should now fail if the bugs are fixed (&
hopefully whoever ends up in this situation sees the FIXMEs and realizes
that the test needs to be updated to positively test their change that
has fixed some or all of these issues).

I do wonder whether I could demonstrate breakage without a macro here,
but any way I slice it I can't think of a way to get two calls to the
same function on the same line/column in non-macro C++ - implicit
conversions happen at the same location as an explicit function, but
you'd never get an implicit conversion on the result of an explicit call
to the same implicit conversion operator (since the value is already
converted to the desired result)...

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208468 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoStop all the Decl classes poking at Redeclarable's data member directly, and make...
Richard Smith [Sat, 10 May 2014 01:17:36 +0000 (01:17 +0000)]
Stop all the Decl classes poking at Redeclarable's data member directly, and make getNextRedeclaration follow the pattern of its friends getPreviousDecl and getMostRecentDecl.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208467 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoMS ABI: Pass 'sret' as the second parameter of instance methods
Reid Kleckner [Fri, 9 May 2014 22:46:15 +0000 (22:46 +0000)]
MS ABI: Pass 'sret' as the second parameter of instance methods

Summary:
MSVC always passes 'sret' after 'this', unlike GCC.  This required
changing a number of places in Clang that assumed the sret parameter was
always first in LLVM IR.

This fixes win64 MSVC ABI compatibility for methods returning structs.

Reviewers: rsmith, majnemer

Subscribers: cfe-commits

Differential Revision: http://reviews.llvm.org/D3618

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208458 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoDon't leak the CXStoredDiagnostics returned by clang_codeCompleteGetDiagnostic()
Nico Weber [Fri, 9 May 2014 22:33:11 +0000 (22:33 +0000)]
Don't leak the CXStoredDiagnostics returned by clang_codeCompleteGetDiagnostic()

r144269 changed clang_disposeDiagnostic() to be a no-op, but didn't update
code completion diagnostics.  Let CXCodeCompleteResults store all diagnostics
returned by clang_codeCompleteGetDiagnostic() and then free them up in
clang_disposeCodeCompleteResults().

Code completion diagnostics referred to data stored in CXCodeCompleteResults
before already, so it wasn't possible to refer to the results of
clang_codeCompleteGetDiagnostic() after clang_disposeCodeCompleteResults()
before this change already -- hence this should be a safe, backwards-compatible
change.

Leak found by LSan, fixes PR19690.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208454 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoDon't emit -Wnon-virtual-dtor on final classes, since it's not a problem there.
David Blaikie [Fri, 9 May 2014 22:02:28 +0000 (22:02 +0000)]
Don't emit -Wnon-virtual-dtor on final classes, since it's not a problem there.

The base class is the culprit/risk here - a sealed/final derived class
with virtual functions and a non-virtual dtor can't accidentally be
polymorphically destroyed (if the base class's dtor is protected - which
also suppresses this warning).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208449 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoPR19698, PR19674: enable __has_feature checks for cxx_generic_lambdas and
Richard Smith [Fri, 9 May 2014 21:08:59 +0000 (21:08 +0000)]
PR19698, PR19674: enable __has_feature checks for cxx_generic_lambdas and
cxx_decltype_auto, and fix documentation of cxx_generic_lambdas and
cxx_init_captures to specify the right feature-check name.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208445 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoObjective-C. Reduce false positive warnings with -Wselector by issuing warning
Fariborz Jahanian [Fri, 9 May 2014 19:51:39 +0000 (19:51 +0000)]
Objective-C. Reduce false positive warnings with -Wselector by issuing warning
only when named selector is declared in TU and it is not declared in a system
header. rdar://16600230

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208443 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoAmending r208439 to remove buildLExpr; this code isn't strictly required yet, and...
Aaron Ballman [Fri, 9 May 2014 18:44:48 +0000 (18:44 +0000)]
Amending r208439 to remove buildLExpr; this code isn't strictly required yet, and fixes a dead code warning.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208440 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoAdd the ability to use logical expressions for capability attributes. This is to...
Aaron Ballman [Fri, 9 May 2014 18:26:23 +0000 (18:26 +0000)]
Add the ability to use logical expressions for capability attributes. This is to allow requirements to be expressed not just in terms of lists, but in terms of logical expressions. Eg)

void foo(void) __attribute__((requires_capability((FlightControl || Worker) && !Logger)));

This is WIP code.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208439 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoDon't leak MacroArgs when using code completion, PR19688.
Nico Weber [Fri, 9 May 2014 18:09:42 +0000 (18:09 +0000)]
Don't leak MacroArgs when using code completion, PR19688.

MacroArgs are owned by TokenLexer, and when a TokenLexer is destroyed, it'll
call its MacroArgs's destroy() method.  destroy() only appends the MacroArg to
Preprocessor's MacroArgCache list, and Preprocessor's destructor then calls
deallocate() on all MacroArgs in that list.  This method then ends up freeing
the MacroArgs's memory.

In a code completion context, Parser::cutOffParsing() gets called when a code
completion token is hit, which changes the type of the current token to
tok::eof.  eof tokens aren't always ConsumeToken()ed, so
Preprocessor::HandleEndOfFile() isn't always called, and that function is
responsible for popping the macro stack.

Due to this, Preprocessor::CurTokenLexer can be non-NULL when
~Preprocessor runs.  It's a unique_ptr, so it ended up being destructed after
~Preprocessor completed, and its MacroArgs thus got added to the freelist after
the code freeing things on the freelist had already completed.  The fix is to
explicitly call reset() before the freelist processing happens.  (See the bug
for more notes.)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208438 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoThreadSafetyAnalysis: Don't crash when trying to analyze objc methods.
Benjamin Kramer [Fri, 9 May 2014 17:08:01 +0000 (17:08 +0000)]
ThreadSafetyAnalysis: Don't crash when trying to analyze objc methods.

The thread safety analysis isn't very useful in ObjC (you can't annotate
ObjC classes or methods) but we can still analyze the actual code and
show violations in usage of C/C++ functions.

Fixes PR19541, which does not use thread safety attributes but crashes
with -Weverything.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208436 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoPacify bots again - turns out my checkout was slightly polluted when I was reverting...
James Molloy [Fri, 9 May 2014 16:28:56 +0000 (16:28 +0000)]
Pacify bots again - turns out my checkout was slightly polluted when I was reverting a olista01s change, and this pollution made it upstream during the revert checkin :/ Sorryemacs -nw lib/CodeGen/CodeGenModule.cpp

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208426 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoReapply r208417 (olista01 'ARM: HFAs must be passed in consecutive registers'). Bots...
James Molloy [Fri, 9 May 2014 16:21:39 +0000 (16:21 +0000)]
Reapply r208417 (olista01 'ARM: HFAs must be passed in consecutive registers'). Bots are now pacified.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208425 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoRevert r208417 (olista01 'ARM: HFAs must be passed in consecutive registers'). This...
James Molloy [Fri, 9 May 2014 16:17:09 +0000 (16:17 +0000)]
Revert r208417 (olista01 'ARM: HFAs must be passed in consecutive registers'). This is a followon commit from r208413 which broke the LLVM bots.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208422 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoARM: HFAs must be passed in consecutive registers
Oliver Stannard [Fri, 9 May 2014 15:14:56 +0000 (15:14 +0000)]
ARM: HFAs must be passed in consecutive registers

This is the clang counterpart to 208413, which ensures that Homogeneous
Floating-point Aggregates are passed in consecutive registers on ARM.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208417 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoclang-format: Fix bug introduced by r208392.
Daniel Jasper [Fri, 9 May 2014 13:11:16 +0000 (13:11 +0000)]
clang-format: Fix bug introduced by r208392.

Also run clang-format over clang-format's files.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208409 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoclang-format: [JS] Allow up to 3 empty lines in Google's JS style.
Daniel Jasper [Fri, 9 May 2014 10:28:58 +0000 (10:28 +0000)]
clang-format: [JS] Allow up to 3 empty lines in Google's JS style.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208404 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoclang-format: [JS] Fix spacing in dict literals.
Daniel Jasper [Fri, 9 May 2014 10:26:08 +0000 (10:26 +0000)]
clang-format: [JS] Fix spacing in dict literals.

Before:
  someVariable = {'a':[{}]};

After:
  someVariable = {'a': [{}]};

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208403 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoPermit duplicate explicit class instantiations if MSVCCompat is enabled
Will Wilson [Fri, 9 May 2014 09:52:13 +0000 (09:52 +0000)]
Permit duplicate explicit class instantiations if MSVCCompat is enabled

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208402 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoRevised wording for diagnostics in r208299
Ismail Pazarbasi [Fri, 9 May 2014 09:49:29 +0000 (09:49 +0000)]
Revised wording for diagnostics in r208299

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208401 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoAdd support for partial jump scope checking
Alp Toker [Fri, 9 May 2014 08:40:10 +0000 (08:40 +0000)]
Add support for partial jump scope checking

This lets us diagnose and perform more complete semantic analysis when faced
with errors in the function body or declaration.

By recovering here we provide more consistent diagnostics, particularly during
interactive editing.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208394 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[C++11] Use 'nullptr'.
Craig Topper [Fri, 9 May 2014 08:15:10 +0000 (08:15 +0000)]
[C++11] Use 'nullptr'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208392 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoDon't repeat function name in comment.
Rafael Espindola [Fri, 9 May 2014 01:34:38 +0000 (01:34 +0000)]
Don't repeat function name in comment.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208387 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoWrap to 80 columns, no code change.
Nico Weber [Fri, 9 May 2014 01:00:48 +0000 (01:00 +0000)]
Wrap to 80 columns, no code change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208386 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoDon't indent in namespaces.
Rafael Espindola [Fri, 9 May 2014 00:57:59 +0000 (00:57 +0000)]
Don't indent in namespaces.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208384 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoSimplify the code a bit by using linkage predicates.
Rafael Espindola [Fri, 9 May 2014 00:43:37 +0000 (00:43 +0000)]
Simplify the code a bit by using linkage predicates.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208382 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoFix filename in file header comment more.
Nico Weber [Fri, 9 May 2014 00:42:08 +0000 (00:42 +0000)]
Fix filename in file header comment more.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208381 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoFix filename in file header comment.
Nico Weber [Fri, 9 May 2014 00:39:59 +0000 (00:39 +0000)]
Fix filename in file header comment.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208380 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoDon't indent inside namespaces.
Rafael Espindola [Fri, 9 May 2014 00:26:20 +0000 (00:26 +0000)]
Don't indent inside namespaces.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208377 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoFix link target.
Richard Smith [Fri, 9 May 2014 00:20:01 +0000 (00:20 +0000)]
Fix link target.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208376 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoUse auto to avoid duplicating the type.
Rafael Espindola [Fri, 9 May 2014 00:08:36 +0000 (00:08 +0000)]
Use auto to avoid duplicating the type.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208374 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoSwitch Wmodule-build to a remark
Ben Langmuir [Thu, 8 May 2014 22:36:02 +0000 (22:36 +0000)]
Switch Wmodule-build to a remark

On reflection, this is better despite the missing command-line handling
bits for remarks.  Making this a remark makes it much clearer that
this is purely informational and avoids the negative connotations of a
'warning'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208367 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoFix an outdated comment.
Richard Smith [Thu, 8 May 2014 22:32:00 +0000 (22:32 +0000)]
Fix an outdated comment.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208366 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[Driver] Range-based loop simplification.
Simon Atanasyan [Thu, 8 May 2014 19:32:46 +0000 (19:32 +0000)]
[Driver] Range-based loop simplification.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208354 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoRemove -Wnon-modular-include
Ben Langmuir [Thu, 8 May 2014 18:09:29 +0000 (18:09 +0000)]
Remove -Wnon-modular-include

But keep -Wnon-modular-include-in-[framework-]module

This warning is too noisy and doesn't really indicate a problem for most
people.  Even though it would only really affect people using
-Weverything, that seems bad so remove it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208345 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoCodeGen: fix code model mapping
Saleem Abdulrasool [Thu, 8 May 2014 16:28:48 +0000 (16:28 +0000)]
CodeGen: fix code model mapping

Large is CodeModel::Model::Large, not CodeModel::Model::Medium.  Thanks to
majnemer for pointing out the typo!  Its unclear how to test the mapped value in
the compiler, the tests already cover the driver side.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208335 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoSimplify a few cast<>s.
Rafael Espindola [Thu, 8 May 2014 15:44:45 +0000 (15:44 +0000)]
Simplify a few cast<>s.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208331 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoCleanup setFunctionDefinitionAttributes.
Rafael Espindola [Thu, 8 May 2014 15:26:12 +0000 (15:26 +0000)]
Cleanup setFunctionDefinitionAttributes.

Use more specific type, update comments and name style.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208328 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoReplace virtual with override.
Rafael Espindola [Thu, 8 May 2014 15:01:48 +0000 (15:01 +0000)]
Replace virtual with override.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208324 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoUse more specific type.
Rafael Espindola [Thu, 8 May 2014 14:46:46 +0000 (14:46 +0000)]
Use more specific type.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208321 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoSmall simplification: Reduce the use of cast<>.
Rafael Espindola [Thu, 8 May 2014 14:33:38 +0000 (14:33 +0000)]
Small simplification: Reduce the use of cast<>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208320 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoFix segmentation fault when mixing -Rpass with #line.
Diego Novillo [Thu, 8 May 2014 13:49:54 +0000 (13:49 +0000)]
Fix segmentation fault when mixing -Rpass with #line.

Summary:
When using #line directives, FileManager::getFile() will return a nil
entry. This triggers an assert in translateFileLineCol().

This patch handles nil FileEntry instances by emitting a note that the
location could not be translated back to a SourceLocation. I don't
really like this solution, but we are translating presumed locations,
so some information has already been lost.

Reviewers: rsmith

Subscribers: cfe-commits

Differential Revision: http://reviews.llvm.org/D3625

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208315 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoFix PR19169 [Crash on invalid attempting to specialize a template method as a templat...
Karthik Bhat [Thu, 8 May 2014 13:16:20 +0000 (13:16 +0000)]
Fix PR19169 [Crash on invalid attempting to specialize a template method as a template variable].
A template declaration of a template name can be null in case we have a dependent name or a set of function templates.
Hence use dyn_cast_or_null instead of dyn_cast. Also improve the diagnostic emitted in this case.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208313 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoUse predicate function to simplify a bit.
Rafael Espindola [Thu, 8 May 2014 13:07:37 +0000 (13:07 +0000)]
Use predicate function to simplify a bit.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208312 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoEnable standalone-debug by default on FreeBSD
Ed Maste [Thu, 8 May 2014 13:01:26 +0000 (13:01 +0000)]
Enable standalone-debug by default on FreeBSD

It was set by default on Darwin in r198655.  The same usability issues
with DTrace and LLDB apply to FreeBSD, so set it by default there too.

rdar://problem/15758808
http://llvm.org/pr19676

Differential Revision: http://reviews.llvm.org/D3448

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208310 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoclang-format: Cleanup redundant calculation of ParenLevel.
Daniel Jasper [Thu, 8 May 2014 12:21:30 +0000 (12:21 +0000)]
clang-format: Cleanup redundant calculation of ParenLevel.

No functional changes intended.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208304 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoclang-format: Initial support for try-catch.
Daniel Jasper [Thu, 8 May 2014 11:58:24 +0000 (11:58 +0000)]
clang-format: Initial support for try-catch.

Most of this patch was created by Alexander Rojas in
http://reviews.llvm.org/D2555
Thank you!

Synced and addressed review comments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208302 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoExplicitly keep track of temporaries during the consumed analysis.
Manuel Klimek [Thu, 8 May 2014 11:50:00 +0000 (11:50 +0000)]
Explicitly keep track of temporaries during the consumed analysis.

This makes the consumed analysis less dependent on the CFG layout and fixes
a bug where we wouldn't warn on an unconsumed value.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208300 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoSuggest fix-it ':' when '=' used in for-range-declaration
Ismail Pazarbasi [Thu, 8 May 2014 11:28:25 +0000 (11:28 +0000)]
Suggest fix-it ':' when '=' used in for-range-declaration

Fix for PR19176. Clang will suggest a fix-it hint for cases like:
  int arr[] = {1, 2, 3, 4};
  for (auto i = arr)
              ^
              :

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208299 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoclang-format: [JS] support closures in container literals.
Daniel Jasper [Thu, 8 May 2014 09:25:39 +0000 (09:25 +0000)]
clang-format: [JS] support closures in container literals.

Before:
  return {body: {setAttribute: function(key, val) {this[key] = val;
  }
  , getAttribute : function(key) { return this[key]; }
  , style : {
  direction:
    ''
  }
  }
  }
  ;

After:
  return {
    body: {
      setAttribute: function(key, val) { this[key] = val; },
      getAttribute: function(key) { return this[key]; },
      style: {direction: ''}
    }
  };

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208292 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoclang-format: Fix binary operator detection before lambdas.
Daniel Jasper [Thu, 8 May 2014 08:50:10 +0000 (08:50 +0000)]
clang-format: Fix binary operator detection before lambdas.

Before:
  bool foo = true&& [] { return false; }();

After:
  bool foo = true && [] { return false; }();

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208288 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoclang-format: [JS] Support regex literals after 'return'.
Daniel Jasper [Thu, 8 May 2014 07:45:18 +0000 (07:45 +0000)]
clang-format: [JS] Support regex literals after 'return'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208285 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoclang-format: [JS] Initial support for regex literals.
Daniel Jasper [Thu, 8 May 2014 07:01:45 +0000 (07:01 +0000)]
clang-format: [JS] Initial support for regex literals.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208281 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[C++11] Use 'nullptr'.
Craig Topper [Thu, 8 May 2014 06:41:40 +0000 (06:41 +0000)]
[C++11] Use 'nullptr'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208280 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[OPENMP] Another one fix in test for msvc
Alexey Bataev [Thu, 8 May 2014 04:44:21 +0000 (04:44 +0000)]
[OPENMP] Another one fix in test for msvc

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208279 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[OPENMP] Fix codegen test for msvc build
Alexey Bataev [Thu, 8 May 2014 04:33:26 +0000 (04:33 +0000)]
[OPENMP] Fix codegen test for msvc build

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208278 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoLet ASTReader optionally delete its ASTDeserializationListener.
Nico Weber [Thu, 8 May 2014 04:26:47 +0000 (04:26 +0000)]
Let ASTReader optionally delete its ASTDeserializationListener.

Use this to fix the leak of DeserializedDeclsDumper and DeserializedDeclsChecker
in FrontendAction (found by LSan), PR19560.

The "delete this" bool is necessary because both PCHGenerator and ASTUnit
return the same object from both getDeserializationListener() and
getASTMutationListener(), so ASTReader can't just have a unique_ptr.

It's also not possible to just let FrontendAction (or CompilerInstance) own
these listeners due to lifetime issues (see comments on PR19560).

Finally, ASTDeserializationListener can't easily be refcounted, since several of
the current listeners are allocated on the stack.

Having this bool isn't ideal, but it's a pattern that's used in other places in
the codebase too, and it seems better than leaking.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208277 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoDriver: parse -mcmodel earlier
Saleem Abdulrasool [Thu, 8 May 2014 02:28:32 +0000 (02:28 +0000)]
Driver: parse -mcmodel earlier

This addresses an existing FIXME item in the driver.  The code model flag was
parsed in the actual tool rather than in the driver.  This was problematic since
the value may be invalid.  In that case, we would silently treat it as a default
value in non-assert builds, and abort in assert builds.  Add a check in the
driver to validate that the value being passed is valid, and if not provide a
proper error message.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208275 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoFix latent bug. This can't actually manifest at the moment, but is a time-bomb
Richard Smith [Thu, 8 May 2014 00:25:01 +0000 (00:25 +0000)]
Fix latent bug. This can't actually manifest at the moment, but is a time-bomb
for the next time someone adds something to this function.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208270 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoEnable alternative tokens by default for clang-format.
Nikola Smiljanic [Thu, 8 May 2014 00:05:13 +0000 (00:05 +0000)]
Enable alternative tokens by default for clang-format.

Patch by Bobby Moretti.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208269 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agofmodules-search-all: Removed dead code and added some comments.
John Thompson [Wed, 7 May 2014 22:47:08 +0000 (22:47 +0000)]
fmodules-search-all: Removed dead code and added some comments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208259 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoCodeGen: Don't set hidden visibility on symbols with local linkage
Duncan P. N. Exon Smith [Wed, 7 May 2014 22:36:11 +0000 (22:36 +0000)]
CodeGen: Don't set hidden visibility on symbols with local linkage

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208258 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoAdd an Extension warning for applying unary * to an operand of type 'void*' in
Richard Smith [Wed, 7 May 2014 21:53:27 +0000 (21:53 +0000)]
Add an Extension warning for applying unary * to an operand of type 'void*' in
C++. This seems like a pointless (and indeed harmful) restriction to me, so
I've suggested removing it to -core and disabled this diagnostic by default.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208254 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoNSOrCFErrorDerefChecker: Don't leak bug type. Similar to r208110/r208155. Found by...
Nico Weber [Wed, 7 May 2014 21:28:03 +0000 (21:28 +0000)]
NSOrCFErrorDerefChecker: Don't leak bug type. Similar to r208110/r208155. Found by LSan.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208251 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoc-index-test: Don't leak the strings returned by makeClientContainer().
Nico Weber [Wed, 7 May 2014 21:09:42 +0000 (21:09 +0000)]
c-index-test: Don't leak the strings returned by makeClientContainer().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208249 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoMake 2 functions static, remove unneeded cast, rewrap. No behavior change.
Nico Weber [Wed, 7 May 2014 21:05:22 +0000 (21:05 +0000)]
Make 2 functions static, remove unneeded cast, rewrap. No behavior change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208247 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoWhen doing int<->ptr coercion for big-endian, calculate the shift amount correctly.
James Molloy [Wed, 7 May 2014 17:41:15 +0000 (17:41 +0000)]
When doing int<->ptr coercion for big-endian, calculate the shift amount correctly.

Previously we calculated the shift amount based upon DataLayout::getTypeAllocSizeInBits.
This will only work for legal types - types such as i24 that are created as part of
structs for bitfields will return "32" from that function. Change to using
getTypeSizeInBits.

It turns out that AArch64 didn't run across this problem because it always returned
[1 x i64] as the type for a bitfield, whereas ARM64 returns i64 so goes down this
(better, but wrong) codepath.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208231 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoPR19562: Fix another temporary node leak in Clang debug info emission
David Blaikie [Wed, 7 May 2014 16:56:58 +0000 (16:56 +0000)]
PR19562: Fix another temporary node leak in Clang debug info emission

While constructing ObjC Interface types we might create the declaration
of some normal C++ types, thus adding things to the ReplaceMap. Make
sure we process the ReplaceMap after the ObjC interfaces.

In theory we know at this point, since we're at the end of the TU, that
we won't be upgrading any declarations to definitions, so we could just
construct non-temporary nodes, but that would require extra state in
CGDebugInfo to conditionalize the creation of declaration nodes which
seems annoying/more work than is appropriate.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208226 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoRemove "CH_ECK" line (which is ignored) from test after r154191.
Nico Weber [Wed, 7 May 2014 16:25:32 +0000 (16:25 +0000)]
Remove "CH_ECK" line (which is ignored) from test after r154191.

r154191 switched to atexit() instead of global destructors, so the intent
was probably to check for _GLOBAL__D_a _not_ being in the output. There already
is a line for _ZN3barD1Ev further up, so just remove the CH_ECK line referring
to that.

The only circumstance in which clang emits _GLOBAL__D_a destructor symbols is
for -fapple-kext, and that is tested by test/CodeGenCXX/cxx-apple-kext.cpp.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208222 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[mips] Pass nan2008 info to the back-end.
Matheus Almeida [Wed, 7 May 2014 16:16:07 +0000 (16:16 +0000)]
[mips] Pass nan2008 info to the back-end.

Summary: The initial support for NaN2008 was added to the back-end in r206396.

Reviewers: atanasyan

Reviewed By: atanasyan

Differential Revision: http://reviews.llvm.org/D3448

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208220 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoRe-satisfy the bots. Due to a de-sync between my clang and LLVM trees, I didn't notic...
James Molloy [Wed, 7 May 2014 14:51:57 +0000 (14:51 +0000)]
Re-satisfy the bots. Due to a de-sync between my clang and LLVM trees, I didn't notice that the generated BE alignment register is now unnamed and is not called '%align_be'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208217 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[ARM64-BE] Correctly deal with single element HFAs in varargs.
James Molloy [Wed, 7 May 2014 14:45:55 +0000 (14:45 +0000)]
[ARM64-BE] Correctly deal with single element HFAs in varargs.

Just because the first "if" didn't fire, doesn't mean we can not have
an HFA in the "else" clause.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208216 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoUpdate for llvm api change.
Rafael Espindola [Wed, 7 May 2014 13:00:49 +0000 (13:00 +0000)]
Update for llvm api change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208206 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoDebugInfo: Use enum instead of unsigned
Ed Maste [Wed, 7 May 2014 12:49:30 +0000 (12:49 +0000)]
DebugInfo: Use enum instead of unsigned

This makes debuging DebugInfo generation with LLDB a little more pleasant.

Differential Revision: http://reviews.llvm.org/D3626

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208203 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoARM: Fix assertion caused by passing bitfield struct using ABIArgInfo::getExpandWithP...
Oliver Stannard [Wed, 7 May 2014 10:39:12 +0000 (10:39 +0000)]
ARM: Fix assertion caused by passing bitfield struct using ABIArgInfo::getExpandWithPadding

In cases where a struct must, according to the AAPCS, not be split between
general purpose and floating point registers, we use
ABIArgInfo::getExpandWithPadding to add the padding arguments. However,
ExpandWithPadding does not work if the struct contains bitfields, so we
instead must use ABIArgInfo::getDirect.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208185 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoUse nullptr instead of 0 for const char * value.
Yaron Keren [Wed, 7 May 2014 09:53:02 +0000 (09:53 +0000)]
Use nullptr instead of 0 for const char * value.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208178 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoclang-format: Be slightly more aggressive on single-line functions.
Daniel Jasper [Wed, 7 May 2014 09:48:30 +0000 (09:48 +0000)]
clang-format: Be slightly more aggressive on single-line functions.

So that JS functions can also be merged into a single line.

Before:
  var func = function() {
    return 1;
  };

After:
  var func = function() { return 1; };

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208176 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoclang-format: Fix corner cases for comments in if conditions.
Daniel Jasper [Wed, 7 May 2014 09:23:05 +0000 (09:23 +0000)]
clang-format: Fix corner cases for comments in if conditions.

Before:
  if ( // a
          x + 3) { ..

After:
  if ( // a
      x + 3) { ..

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208175 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoDrop libgcc and default to libc++ for NetBSD/ARM on 6.99.40+.
Joerg Sonnenberger [Wed, 7 May 2014 08:45:26 +0000 (08:45 +0000)]
Drop libgcc and default to libc++ for NetBSD/ARM on 6.99.40+.
Don't bother with keeping the old support for x86_64 in 6.99.23+, just
use a single range. Update test cases for the always-on --eh-frame-hdr.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208170 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoAlso recognize Big Endian ARM variants.
Joerg Sonnenberger [Wed, 7 May 2014 08:24:23 +0000 (08:24 +0000)]
Also recognize Big Endian ARM variants.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208169 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoclang-format: Fix bad space before braced initializer.
Daniel Jasper [Wed, 7 May 2014 07:59:03 +0000 (07:59 +0000)]
clang-format: Fix bad space before braced initializer.

Before:
  new int {1};

After:
  new int{1};

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208168 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[OPENMP] Fixed checking for mangled names in parallel_codegen.cpp test
Alexey Bataev [Wed, 7 May 2014 07:02:29 +0000 (07:02 +0000)]
[OPENMP] Fixed checking for mangled names in parallel_codegen.cpp test

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208165 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoFix up indentation and fix an 80 column violation.
Craig Topper [Wed, 7 May 2014 06:57:44 +0000 (06:57 +0000)]
Fix up indentation and fix an 80 column violation.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208164 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[C++11] Use 'nullptr'.
Craig Topper [Wed, 7 May 2014 06:21:57 +0000 (06:21 +0000)]
[C++11] Use 'nullptr'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208163 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[OPENMP] Fixed problem with temp removal on some platforms in codegen for '#pragma...
Alexey Bataev [Wed, 7 May 2014 06:18:01 +0000 (06:18 +0000)]
[OPENMP] Fixed problem with temp removal on some platforms in codegen for '#pragma omp parallel'

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208162 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoPR19562: Fix memory leak when ObjC interface types cause the creation of further...
David Blaikie [Wed, 7 May 2014 06:18:00 +0000 (06:18 +0000)]
PR19562: Fix memory leak when ObjC interface types cause the creation of further interfaces.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208161 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoFixing tests to account for LLVM r208159.
David Blaikie [Wed, 7 May 2014 06:09:35 +0000 (06:09 +0000)]
Fixing tests to account for LLVM r208159.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208160 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[OPENMP] Temporarily disable test parallel_codegen.cpp
Alexey Bataev [Wed, 7 May 2014 04:47:36 +0000 (04:47 +0000)]
[OPENMP] Temporarily disable test parallel_codegen.cpp

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208156 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[analyzer] Use a lazily-initialized BugType in ObjCSelfInitChecker.
Jordan Rose [Wed, 7 May 2014 03:30:04 +0000 (03:30 +0000)]
[analyzer] Use a lazily-initialized BugType in ObjCSelfInitChecker.

Follow-up to Nico's leak-stopping patch in r208110.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208155 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[analyzer] Functions marked __attribute__((const)) don't modify any memory.
Jordan Rose [Wed, 7 May 2014 03:29:56 +0000 (03:29 +0000)]
[analyzer] Functions marked __attribute__((const)) don't modify any memory.

This applies to __attribute__((pure)) as well, but 'const' is more interesting
because many of our builtins are marked 'const'.

PR19661

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208154 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoIf an instantiation of a template is required to be a complete type, check
Richard Smith [Wed, 7 May 2014 02:25:43 +0000 (02:25 +0000)]
If an instantiation of a template is required to be a complete type, check
whether the definition of the template is visible rather than checking whether
the instantiated definition happens to be in an imported module.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208150 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoClean up some existing keyword tests in the test/Lexer directory by using the
Yunzhong Gao [Wed, 7 May 2014 01:58:02 +0000 (01:58 +0000)]
Clean up some existing keyword tests in the test/Lexer directory by using the
pre-defined __is_identifier() macro.

Differential Revision: http://reviews.llvm.org/D3460

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208147 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoTry harder to ensure a strict weak ordering of overload candidates that
Kaelyn Takata [Wed, 7 May 2014 00:43:38 +0000 (00:43 +0000)]
Try harder to ensure a strict weak ordering of overload candidates that
have arity mismatches.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208146 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoRename "secondary initializer" -> "convenience initializer" in the warnings, which...
Argyrios Kyrtzidis [Tue, 6 May 2014 23:24:16 +0000 (23:24 +0000)]
Rename "secondary initializer" -> "convenience initializer" in the warnings, which is a more correct and consistent term.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208142 91177308-0d34-0410-b5e6-96231b3b80d8