[ASan] Use metadata to pass source-level information from Clang to ASan.

Instead of creating global variables for source locations and global names,
just create metadata nodes and strings. They will be transformed into actual
globals in the instrumentation pass (if necessary). This approach is more
flexible:
1) we don't have to ensure that our custom globals survive all the optimizations
2) if globals are discarded for some reason, we will simply ignore metadata for them
   and won't have to erase corresponding globals
3) metadata for source locations can be reused for other purposes: e.g. we may
   attach source location metadata to alloca instructions and provide better descriptions
   for stack variables in ASan error reports.

No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214604 91177308-0d34-0410-b5e6-96231b3b80d8
In the case of mangling collisions, make an attempt to note both definitions
involved.


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

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214616 91177308-0d34-0410-b5e6-96231b3b80d8
libclang/Makefile: Restore some components in LINK_COMPONENTS. Clang's Makefile(s) are not transitive on clang libs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214617 91177308-0d34-0410-b5e6-96231b3b80d8
libclang/Makefile: Update LINK_COMPONENTS take #2.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214619 91177308-0d34-0410-b5e6-96231b3b80d8
libclang/Makefile: Update LINK_COMPONENTS take #3. Sorry for the noise.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214620 91177308-0d34-0410-b5e6-96231b3b80d8
vcfsx and dss instructions require immediates, variables are not valid.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214635 91177308-0d34-0410-b5e6-96231b3b80d8
Tools.cpp: Avoid std::to_string() on -fbuild-session-timestamp to appease mingw32 builder.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214656 91177308-0d34-0410-b5e6-96231b3b80d8
[Mips] Add the `mips64-linux-gnu` target to the test case to check `in128`
type handling.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214662 91177308-0d34-0410-b5e6-96231b3b80d8
Driver: Simplify a use of the path API

It's a bit more obvious what's going on if we use path::filename
rather than decrementing an iterator here.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214668 91177308-0d34-0410-b5e6-96231b3b80d8
Don't destroy MacroInfos if we find the macro definition is invalid; it'll get
destroyed on shutdown regardless. Fixes a double-delete.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214675 91177308-0d34-0410-b5e6-96231b3b80d8
PR11778: Fix the rejects-valid half of this bug. We still produce the same
poorly-worded warning for a case value that is not a possible value of the
switched-on expression.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214678 91177308-0d34-0410-b5e6-96231b3b80d8
AST: Propagate 'AlignIsRequired' though many levels of typedefs

A typedef of a typedef should have AlignIsRequired if *either* typedef
has an AlignAttr attached to it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214698 91177308-0d34-0410-b5e6-96231b3b80d8
AST: Fix the mangling for unqualified-blocks

CXXNameMangler::mangleUnqualifiedBlock believed that
MangleContext::getBlockId returned something that used Itanium-style
discriminator numbers.

Discriminator numbers start their numberign from 1 and the first
mangling that actually gets any sort of number mangled in is the second
discriminator.

However, Block IDs start from zero.  The logic for omitting the mangling
number did a ' > 1' instead of a ' > 0' comparison; this could
potentially cause mangling conflicts.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214699 91177308-0d34-0410-b5e6-96231b3b80d8
Fix tests Clang::Sema/statements.c and Clang::SemaTemplate/instantiate-expr-1.cpp when AArch64 is the default target.

Commit r213935 added additional validation of register constants/size for AArch64 and because these tests which contain Intel assembler the new validation caused these tests to fail when the default target is changed to an AArch64 target.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214706 91177308-0d34-0410-b5e6-96231b3b80d8
[x32] Add __int128 support

Summary:
Adding __int128 support explicitly for x86_64 because currently it's on
only when pointer size >= 64 which is not the case for x32.

Test Plan: One of the tests using __int128 is updated

Reviewers: atanasyan, chandlerc

Subscribers: cfe-commits, rob.khasanov, zinovy.nis, dschuff

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

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214710 91177308-0d34-0410-b5e6-96231b3b80d8
[Driver][Mips] Construct dynamic linker path by string concatination.
That reduces a number of `if` operators and prevent a combinatorics explosion
if/when more dynamic linker path variants added.

No functional changes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214712 91177308-0d34-0410-b5e6-96231b3b80d8
clang-format: Understand parameter pack initialization.

Before:
  Constructor(A... a) : a_(X<A> { std::forward<A>(a) }...) {}

After:
  Constructor(A... a) : a_(X<A>{std::forward<A>(a)}...) {}

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214720 91177308-0d34-0410-b5e6-96231b3b80d8
Highlight the offending function parameter when the format_arg argument refers to an invalid function parameter type.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214722 91177308-0d34-0410-b5e6-96231b3b80d8
Highlight the offending function parameter when the format argument refers to an invalid function parameter type.

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