Add introductory paragraph to the C++ status page

Use internal links to provide easier access to recent and ongoing work.

Also shift up the order of standards in the page title in order to avoid web
search results focusing on C++98 in the summary.

This is done to highlight the modern standards support in clang that was
previously languishing at the bottom of the page.

  "C++98/03 is sooooo yesterday" - dgregor

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@196565 91177308-0d34-0410-b5e6-96231b3b80d8
Allow string literals as module names.

In order to make the migration to modules easier, it seems to be helpful
to allow a 1:1 mapping between target names of a current build system
and the corresponding C++ modules. As  such targets commonly contain
characters like "-". ":" and "/", allowing arbitrary quote-escaped
strings seems to be a straightforward option.

After several offline discussions, the precise mechanisms for C++
module names especially regarding submodules and import statements has
yet to be determined. Thus, this patch only enables string literals as
names inside the module map files which can be used by automatic module
import (through #include).

Also improve the error message on missing use-declarations.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@196573 91177308-0d34-0410-b5e6-96231b3b80d8
clang-format: Change line break decisions for array subscripts.

Before:
  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa<int> aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
      [aaaaaaaaaaaa];
After:
  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa<int>
      aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa[aaaaaaaaaaaa];

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@196582 91177308-0d34-0410-b5e6-96231b3b80d8
Reverting changes from r196415; this patch exposed a different, but unrelated bug regarding the __has_attribute implementation. Reverting to unblock the Chrome tsan builds.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@196583 91177308-0d34-0410-b5e6-96231b3b80d8
Tweak the ordering of a conditional to possibly avoid a few strcmps.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@196584 91177308-0d34-0410-b5e6-96231b3b80d8
Fix code typos spotted while working on type traits

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@196587 91177308-0d34-0410-b5e6-96231b3b80d8
Add flag -fauto-profile as alias to -fprofile-sample-use.

Summary:
GCC uses -fauto-profile to enable sample-based PGO. This patch
adds it to Clang as an alias for -fprofile-sample-use.

Differential Revision: http://llvm-reviews.chandlerc.com/D2353

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@196589 91177308-0d34-0410-b5e6-96231b3b80d8
Move the body of GCCInstallationDetector ctor into an init() function
and call it from its only user. The linux toolchain. This saves quite
a lot of directory searching on other platforms.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@196590 91177308-0d34-0410-b5e6-96231b3b80d8
[libclang] Rename CXSkippedRanges to CXSourceRangeList to make it more future-proof.

Suggested by Alp Toker.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@196591 91177308-0d34-0410-b5e6-96231b3b80d8
Turning the __w64 attribute into an ignored attribute to match other Microsoft extensions we do not currently support. Note that __w64 has been deprecated in MSVC since 2008.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@196592 91177308-0d34-0410-b5e6-96231b3b80d8
Revert "[analyzer] Refactor conditional expression evaluating code"

This reverts commit r189090.

The original patch introduced regressions (see the added live-variables.* tests). The patch depends on the correctness of live variable analyses, which are not computed correctly. I've opened PR18159 to track the proper resolution to this problem.

The patch was a stepping block to r189746. This is why part of the patch reverts temporary destructor tests that started crashing. The temporary destructors feature is disabled by default.

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

This is another regression fixed by reverting r189090.

In this case, the problem is not live variables but the approach that was taken in r189090. This regression was caused by explicitly binding "true" to the condition when we take the true branch. Normally that's okay, but in this case we're planning to reuse that condition as the value of the expression.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@196599 91177308-0d34-0410-b5e6-96231b3b80d8
[MS-ABI] Fix alias-avoidance padding between bases

Adds padding between bases or virtual bases in an attempt to avoid 
aliasing of zero-sized sub-objects.  The approach used by the ABI adds 
two more bits of state.  Detailed comments are in the code.  Test cases 
included.

Differential Revision: http://llvm-reviews.chandlerc.com/D2258



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@196602 91177308-0d34-0410-b5e6-96231b3b80d8
[MS-ABI] adds padding before all vbases after a bitfield
 
MS-ABI adds padding before *every* vbase if the last field in a record 
is a bit-field. This changes clangs behavior to match. I also fix some 
windows-style line endings in the test file.

Differential Revision: http://llvm-reviews.chandlerc.com/D2277



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@196605 91177308-0d34-0410-b5e6-96231b3b80d8
Add option to use temporary file for assembling with clang

This commit adds the flag '-via-file-asm' to the clang driver. The
purpose of this flag is to have a way to test that clang can consume
the assembly code that it outputs. When passed this flag, clang will
generate a temporary file that contains the assembly output from the
compile step. This assembly file will then be consumed by either the
integrated assembler or the external assembler. To test that the
integrated assembler can consume its own output compile with:

  $ clang -integrated-assembler -via-file-asm

Without the '-via-file-asm' flag, clang would directly create the
object file when using the integrated assembler. With the flag it
will first create the temporary assembly file and then read that
file and assemble it with the integrated assembler.

The flow is similar to -save-temps, except that it only effects
the assembly input and the temporary file is not saved.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@196606 91177308-0d34-0410-b5e6-96231b3b80d8
Fix test case inefficiency

Was accidently passing the file to clang twice. No functionaly change.


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

Added support for mcpu krait

- krait processor currently modeled with the same features as A9.
- Krait processor additionally has VFP4 (fused multiply add/sub)
and hardware division features enabled.
- krait has currently the same Schedule model as A9
- krait cpu flag is not recognized by the GNU assembler yet,
it is replaced with march=armv7-a to avoid a lower march
from being used.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@196618 91177308-0d34-0410-b5e6-96231b3b80d8
test/Driver: Check that @ arguments that aren't files are handled

This tests the bug fix in llvm r196620.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@196621 91177308-0d34-0410-b5e6-96231b3b80d8
Fixing assertion failure introduced in 196602.

Also includes a minor refactor with no functional change.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@196627 91177308-0d34-0410-b5e6-96231b3b80d8
ObjectiveC. Continuing implementation of objc_bridge_related
attribute in sema and issuing a variety of diagnostics lazily 
for misuse of this attribute (and what to do) when converting 
from CF types to ObjectiveC types (and vice versa).
// rdar://15499111


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