Disable this-return optimizations when targeting iOS 5 and earlier.

Clang implements the part of the ARM ABI saying that certain functions
(e.g., constructors and destructors) return "this", but Apple's version of
gcc and llvm-gcc did not. The libstdc++ dylib on iOS 5 was built with
llvm-gcc, which means that clang cannot safely assume that code from the C++
runtime will correctly follow the ABI. It is also possible to run into this
problem when linking with other libraries built with gcc or llvm-gcc. Even
though there is no way to reliably detect that situation, it is most likely
to come up when targeting older versions of iOS. Disabling the optimization
for any code targeting iOS 5 solves the libstdc++ problem and has a reasonably
good chance of fixing the issue for other older libraries as well.
<rdar://problem/16377159>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@205272 91177308-0d34-0410-b5e6-96231b3b80d8
Add failing testcase for DR305. Looks like we didn't implement the resolution
here in the simple-template-id case.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@205273 91177308-0d34-0410-b5e6-96231b3b80d8
[analyzer] Add double-unlock detection to PthreadLockChecker.

We've decided to punt on supporting recursive locks for now; the common case
is non-recursive.

Patch by Daniel Fahlgren!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@205274 91177308-0d34-0410-b5e6-96231b3b80d8
[analyzer] Lock checker: make sure locks aren't used after being destroyed.

Patch by Daniel Fahlgren!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@205275 91177308-0d34-0410-b5e6-96231b3b80d8
[analyzer] Lock checker: Allow pthread_mutex_init to reinitialize a destroyed lock.

Patch by Daniel Fahlgren!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@205276 91177308-0d34-0410-b5e6-96231b3b80d8
Adapt CGDebugInfo to interface changes in DIBuilder/DIImportedEntity.
The Decl field in a DIImportedEntity is now a DIRef.
Paired commit with LLVM.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@205278 91177308-0d34-0410-b5e6-96231b3b80d8
MS ABI: Support mangling of return-types deducing to local types

The MS ABI forces us into catch-22 when it comes to functions which
return types which are local:

 - A function is mangled with it's return type.
 - A type is mangled with it's surrounding context.

Avoid this by mangling auto and decltype(autp) directly into the
function's return type.  Using this mangling has the double advantage of
being compatible with the C++ standard without crashing the compiler.

N.B. For the curious, the MSVC mangling leads to collisions amongst
template functions and either crashes when faced with local types or is
otherwise incapable of returning them.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@205282 91177308-0d34-0410-b5e6-96231b3b80d8
Add defensive check that argument may be null in call to compareConversionFunctions() on incorrect code.

I'm looking into getting a reduced test case, but it's not
immediately available.

Fixes <rdar://problem/16344806>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@205285 91177308-0d34-0410-b5e6-96231b3b80d8
ARM64: add missing ldN/stN intrinsics and enable tests.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@205296 91177308-0d34-0410-b5e6-96231b3b80d8
ARM64: add a few bits of polynomial intrinsic codegen.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@205303 91177308-0d34-0410-b5e6-96231b3b80d8
clang-format: Support configurable list of foreach-macros.

This fixes llvm.org/PR17242.

Patch by Brian Green, thank you!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@205307 91177308-0d34-0410-b5e6-96231b3b80d8
Add support for dynamic ASan runtime (on Linux) to Clang driver.

Based on http://llvm-reviews.chandlerc.com/D3043 by Yuri Gribov!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@205310 91177308-0d34-0410-b5e6-96231b3b80d8
Fixing the MSVC 2012 build bot, which cannot do initializer lists yet. Amends r205307.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@205325 91177308-0d34-0410-b5e6-96231b3b80d8
[analyzer] Fix a CFG printing bug.

Also, add several destructor-related tests. Most of them don't work yet, but it's
good to have them recorded.

Patch by Alex McCarthy!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@205326 91177308-0d34-0410-b5e6-96231b3b80d8
[analyzer] Remove incorrect workaround for unimplemented temporary destructors.

If we're trying to get the zero element region of something that's not a region,
we should be returning UnknownVal, which is what ProgramState::getLValue will
do for us.

Patch by Alex McCarthy!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@205327 91177308-0d34-0410-b5e6-96231b3b80d8
[analyzer] Extract a helper for finding the target region for a C++ constructor.

No functionality change.

Patch by Alex McCarthy!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@205328 91177308-0d34-0410-b5e6-96231b3b80d8
Debug info: fix a crash when emitting IndirectFieldDecls, which were
previously not handled at all.
rdar://problem/16348575

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@205331 91177308-0d34-0410-b5e6-96231b3b80d8
More tests for DR1.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@205339 91177308-0d34-0410-b5e6-96231b3b80d8
Fix self-referential comment.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@205340 91177308-0d34-0410-b5e6-96231b3b80d8
Simplify FunctionDecl::getMinRequiredArguments().


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