Reapply "Change -save-temps to emit unoptimized bitcode files."

This reapplies r224503 along with a fix for compiling Fortran by having the
clang driver invoke gcc (see r224546, where it was reverted). I have added
a testcase for that as well.

Original commit message:
It is often convenient to use -save-temps to collect the intermediate
results of a compilation, e.g., when triaging a bug report. Besides the
temporary files for preprocessed source and assembly code, this adds the
unoptimized bitcode files as well.

This adds a new BackendJobAction, which is mostly mechanical, to run after
the CompileJobAction. When not using -save-temps, the BackendJobAction is
combined into one job with the CompileJobAction, similar to the way the
integrated assembler is handled. I've implemented this entirely as a
driver change, so under the hood, it is just using -disable-llvm-optzns
to get the unoptimized bitcode.

Based in part on a patch by Steven Wu.
rdar://problem/18909437

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@224688 91177308-0d34-0410-b5e6-96231b3b80d8
Wrap to 80 columns. NfC.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@224695 91177308-0d34-0410-b5e6-96231b3b80d8
MS ABI: Make the string mangling code more concise

No functional change intended.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@224696 91177308-0d34-0410-b5e6-96231b3b80d8
Simplify test for rdar://19256338
(from patch r224549).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@224713 91177308-0d34-0410-b5e6-96231b3b80d8
Add test coverage for cc1's trigraph option handling.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@224714 91177308-0d34-0410-b5e6-96231b3b80d8
Rename test.cc files to test.cpp.

The lit.cfg files only add .cpp to suffixes, so these tests used to never run,
oops.  (Also tweak to of these tests in minor ways to make the actually pass.)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@224718 91177308-0d34-0410-b5e6-96231b3b80d8
Disable trigraphs in microsoft mode by default. Matches cl.exe.

The default value of Opts.Trigraphs now no longer depends solely on the
language input kind, so move the code out of setLangDefaults().  Also make
sure that Opts.MSVCCompat is set before the Trigraph code runs.

Related to PR21974.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@224719 91177308-0d34-0410-b5e6-96231b3b80d8
Add a triple to try and get this test passing on the ARM bots.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@224747 91177308-0d34-0410-b5e6-96231b3b80d8
This reverts commit r224668 and r224667.

r224667 broke bootstrap on Fedora 20 X86_64 (at least).

See pr22006 for the details.

r224668 depends on r224667.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@224770 91177308-0d34-0410-b5e6-96231b3b80d8
Debug Info: Pass the pointer size into createMemberPointerType().
Paired commit with LLVM.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@224781 91177308-0d34-0410-b5e6-96231b3b80d8
Remove unused test input.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@224784 91177308-0d34-0410-b5e6-96231b3b80d8
Add driver flags -ftrigraphs, -fno-trigraphs.

-trigraphs is now an alias for -ftrigraphs.  -fno-trigraphs makes it possible
to explicitly disable trigraphs, which couldn't be done before.

  clang -std=c++11 -fno-trigraphs

now builds without GNU extensions, but with trigraphs disabled.  Previously,
trigraphs were only disabled in GNU modes or with -std=c++1z.

Make the new -f flags the cc1 interface too.  This requires changing -trigraphs
to -ftrigraphs in a few cc1 tests.

Related to PR21974.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@224790 91177308-0d34-0410-b5e6-96231b3b80d8
clang-cl: Various changes to /Zc: handling.

* /Zc:trigraphs and /Zc:trigraphs- are now honored
* /Zc:strictStrings is now honored
* /Zc:auto is now honored/ignored (clang does the Right Thing for this already)

Also add a dedicated test for the various /Zc: flags.
clang-cl doesn't always agree with cl.exe on the default values for /Zc flags.
For example, I think clang always behaves as if /Zc:inline is passed, and
warns if the user explicitly passes /Zc:inline-

Fixes PR21974.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@224791 91177308-0d34-0410-b5e6-96231b3b80d8
[analyzer] +memory.ZeroAlloc

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@224796 91177308-0d34-0410-b5e6-96231b3b80d8
[analyzer] Updated progress for memory.ZeroAlloc

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@224797 91177308-0d34-0410-b5e6-96231b3b80d8
Initialize CodeGeneratorImpl::Ctx in constructor.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@224835 91177308-0d34-0410-b5e6-96231b3b80d8
Initialize BackendConsumer::Context in constructor.



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