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
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
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
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
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
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
Analyzer: Make helper function static.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208473 91177308-0d34-0410-b5e6-96231b3b80d8
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
Wrap to 80 columns. No behavior change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208475 91177308-0d34-0410-b5e6-96231b3b80d8
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
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
Try to bring the 32 bit buildbots back to life.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208482 91177308-0d34-0410-b5e6-96231b3b80d8
Don't leak CXStrings for replacement fix-its in c-index-test.

The loop body used to contain a switch statement; it looks like r96685 replaced
that with an if/else if/else but accidentally left one of the three break
statements from the switch behind, skipping the clang_disposeString() call
for replacements (and the rest of the loop too, which apparently doesn't make
a differences for the test cases we have).

r96685: http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20100215/027754.html

This too might possibly the last leak in clang (PR19521).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208483 91177308-0d34-0410-b5e6-96231b3b80d8
Follow-up to r208481: Free all default arguments, not just the first one.

Also add test coverage for this case.  Found by Richard Smith!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208484 91177308-0d34-0410-b5e6-96231b3b80d8
Wrap at 80 columns. No code change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208485 91177308-0d34-0410-b5e6-96231b3b80d8
CodeGen: support dll{ex,im}port on WoA

Add ARM support for dllexport and dllimport attributes.  This is a relatively
conservative change.  The alternative is to entirely drop the architecture
requirement.  The dllimport and dllexport attributes are not restricted to any
architecture, simply to platforms that support this attribute (currently
Windows).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208486 91177308-0d34-0410-b5e6-96231b3b80d8
Silence warning in Release builds. This function is only used in an assert.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208491 91177308-0d34-0410-b5e6-96231b3b80d8
Put back raw_ostream.h include.

Some configurations of MSVC get horribly confused by the forward declaration
and explode.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208493 91177308-0d34-0410-b5e6-96231b3b80d8
Another try at making MSVC happy again.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208497 91177308-0d34-0410-b5e6-96231b3b80d8
Consolidate single void paramter checking

Also correct argument/parameter terminology.

No change in functionality.

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