clang-cl: Don't store the cl compiler Tool on the stack (PR20131)

The Command will refer back to the Tool as its source,
so it has to outlive the Command.

Having the Tool on the stack would cause us to crash
when using "clang-cl -GR -fallback", because if the
Command fails, Driver::ExecuteCompilation tries to
peek at the Command's source.

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

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211802 91177308-0d34-0410-b5e6-96231b3b80d8
Driver: Remove trailing whitespace

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211805 91177308-0d34-0410-b5e6-96231b3b80d8
Driver: Fix a misleading comment and test for what it actually did

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211806 91177308-0d34-0410-b5e6-96231b3b80d8
Objective-C ARC. Provide diagnostic and fix-it 
when casting a retainable object to a objc_bridge_related
CF type with the suggestion of applying the method
specified in the bridging attribute to the object.
// rdar://15932435


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211807 91177308-0d34-0410-b5e6-96231b3b80d8
Avoid extra back reference key lookup in msmangler

Avoid a second key lookup when the back reference key is going to be
inserted in the StringMap. The string lookups in the msmangler are the
main responsible for the huge overhead when compared to the itanium
mangler. This patch makes a small but noticeable improvement.

Reviewed by: rnk

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

Patch by Agustín Bergé!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211813 91177308-0d34-0410-b5e6-96231b3b80d8
Allow different path separator for windows build.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211823 91177308-0d34-0410-b5e6-96231b3b80d8
Do not inline methods of C++ containers (coming from headers).

This silences false positives (leaks, use of uninitialized value) in simple
code that uses containers such as std::vector and std::list. The analyzer
cannot reason about the internal invariances of those data structures which
leads to false positives. Until we come up with a better solution to that
problem, let's just not inline the methods of the containers and allow objects
to escape whenever such methods are called.

This just extends an already existing flag "c++-container-inlining" and applies
the heuristic not only to constructors and destructors of the containers, but
to all of their methods.

We have a bunch of distinct user reports all related to this issue
(radar://16058651, radar://16580751, radar://16384286, radar://16795491
[PR19637]).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211832 91177308-0d34-0410-b5e6-96231b3b80d8
clang/test/Driver/fuse-ld.c: Really fix to match dos path.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211841 91177308-0d34-0410-b5e6-96231b3b80d8
Remove .bc from test config.suffixes

This was unused. Besides, a binary file can't really contain lit ShTests.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211843 91177308-0d34-0410-b5e6-96231b3b80d8
Add test coverage for .bc input in the frontend

Test that we can consume LLVM bitcode and additionally check that it produces
the same output as a direct compilation.

The feature is crashy and has gone untested until now, but we might as well
provide some coverage as long as it remains in tree.

Also test LL source input in the same way because the existing tests for that
don't look convincing.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211844 91177308-0d34-0410-b5e6-96231b3b80d8
Partially disable test from r211844

ELF assembly contains .line directives that differ based on the input filename.
Weaken the test while considering options.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211849 91177308-0d34-0410-b5e6-96231b3b80d8
Restore test from r211844 skipping '.file' directives

At least this answers the question of whether .bc/.ll input processed by the
frontend produces identical output to the original compilation.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211853 91177308-0d34-0410-b5e6-96231b3b80d8
Account for differences in grep implementations

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211856 91177308-0d34-0410-b5e6-96231b3b80d8
[OPENMP] Added several test cases in nesting of OpenMP regions test after review from Samuel F Antao.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211857 91177308-0d34-0410-b5e6-96231b3b80d8
CodeGenAction: don't duplicate entire .ll/.bc files into memory

Requires supporting changes from LLVM r211861.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211862 91177308-0d34-0410-b5e6-96231b3b80d8
Driver: use GNU::Link for the Generic_GCC toolchain

This changes the behaviour of the driver for linking to match that of the
Generic_GCC::Assemble.    The default link should use "ld" rather than "gcc" for
the linker as gcc does.  This avoids the unnecessary round-tripping through gcc.
It also is much more reasonable behaviour from the user's perspective.  This
should have been updated with SVN r195554 which changed the behaviour of
Generic_GCC::Assemble.

The gcc_forward test needs to be updated to mark the fact that -march is a flag
for GCC not ld.  This was updated as a typo fix, but added a check for a flag
that is not a link flag.

The bindings test covers the change for testing, and thus no new test was added.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211866 91177308-0d34-0410-b5e6-96231b3b80d8
Add a FIXME for an unfortunate issue in ConvertBackendLocation()

This function is copying the entire file contents into memory repeatedly and
allocating new file IDs *each time* a source location is processed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211874 91177308-0d34-0410-b5e6-96231b3b80d8
Driver: Pass -ivfsoverlay to module crashdumps

When we create a crashdump involving modules, we build a VFS to
reproduce the problem with. This updates the reproduction script to
use that VFS.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211876 91177308-0d34-0410-b5e6-96231b3b80d8
const_cast the memory MemoryBuffer following LLVM r211883

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211884 91177308-0d34-0410-b5e6-96231b3b80d8
CL++ (OpenCL++) provisional implementation

This defines C++11 mode OpenCL counterpart standards: cl++, CL++1.1 and CL++1.2,
cl++ language with cl++, clpp or clxx source file name extensions.

This makes possible to produce SPIR LL output from C++ code and use it to
create OpenCL SPIR compatible kernels.