Fix assertion on asm register that are "%"

Name might be empty again after we removed the '%' prefix
and Name[0] would assert.

Found on code like
register int foo asm("%" MACRO);
where MACRO was supposed to be defined in a header file that was not found.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@215834 91177308-0d34-0410-b5e6-96231b3b80d8
Add a test for -no-canonical-prefixes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@215836 91177308-0d34-0410-b5e6-96231b3b80d8
Do not rely on bin/ path prefix in tests.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@215845 91177308-0d34-0410-b5e6-96231b3b80d8
Convert a few ownership comments with std::unique_ptr.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@215853 91177308-0d34-0410-b5e6-96231b3b80d8
Update for llvm api changes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@215856 91177308-0d34-0410-b5e6-96231b3b80d8
Use std::unique_ptr in a few methods that take ownership.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@215864 91177308-0d34-0410-b5e6-96231b3b80d8
Create a std::unique_ptr earlier.

Thanks to David Blaikie for the suggestion.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@215865 91177308-0d34-0410-b5e6-96231b3b80d8
Use the pointer-like API of ErrorOr.

Thanks to David Blaikie for the suggestion.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@215866 91177308-0d34-0410-b5e6-96231b3b80d8
Repace SmallPtrSet with SmallPtrSetImpl in function arguments to avoid needing to mention the size.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@215869 91177308-0d34-0410-b5e6-96231b3b80d8
Update the call to llvm::sys::fs::UniqueID to match the definition: UniqueID(uint64_t Device, uint64_t File)
Fixes CID 1095247




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@215896 91177308-0d34-0410-b5e6-96231b3b80d8
Add the break in the switch case (even if there is llvm_unreachable. It will silent coverity warning CID 1231654

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@215897 91177308-0d34-0410-b5e6-96231b3b80d8
Fix a memory leak in one of the test unit. Silent coverity warning CID 1095912

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@215898 91177308-0d34-0410-b5e6-96231b3b80d8
[x32] Handle -m64/-m32 switches by Driver in x32 mode

Summary:
Adding remaining 2 cases handling:
* from x32 to 32 via -m32
* from x32 to 64 via -m64

Test Plan: linux-ld test updated

Reviewers: chandlerc, atanasyan

Subscribers: cfe-commits, zinovy.nis

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

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@215899 91177308-0d34-0410-b5e6-96231b3b80d8
Simplify ASTUnit::Parse a bit by passing a std::unique_ptr to it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@215900 91177308-0d34-0410-b5e6-96231b3b80d8
Inline function into only use.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@215925 91177308-0d34-0410-b5e6-96231b3b80d8
Use std::unique_ptr to simplify this code a bit.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@215926 91177308-0d34-0410-b5e6-96231b3b80d8
return a std::unique_ptr from getMainBufferWithPrecompiledPreamble. NFC.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@215927 91177308-0d34-0410-b5e6-96231b3b80d8
Store std::unique_ptr in InMemoryBuffers. NFC.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@215928 91177308-0d34-0410-b5e6-96231b3b80d8
Fix the rececl chain for redeclarations of predefined decls

Predefined decls like 'Protocol' in objc are not loaded from AST files,
so we cannot rely on loading the canonical decl to complete the redecl
chain for redeclarations of these decls.  The broken redecl chain was
non-circular, so looping over redecls() would hang.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@215929 91177308-0d34-0410-b5e6-96231b3b80d8
Update link strategy for sanitizer runtime libraries on Linux:

1. Always put static sanitizer runtimes to the front of the linker
invocation line. This was already done for all sanitizers except UBSan:
in case user provides static libstdc++ we need to make sure that new/delete
operator definitions are picked from sanitizer runtimes instead of libstdc++.
We have to put UBSan runtime first for similar reasons: it depends on some
libstdc++ parts (e.g. __dynamic_cast function), and has to go first in
link line to ensure these functions will be picked up from libstdc++.

2. Put sanitizer libraries system dependencies (-ldl, -lpthread etc.) right
after sanitizer runtimes. This will ensure these libraries participate in
the link even if user provided -Wl,-as-needed flag. This should fix PR15823.

3. In case we link in several sanitizer runtimes (e.g. "ubsan", "ubsan_cxx"
and "san"), add system dependencies (-ldl, -lpthread, ...) only once.


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