Preprocessor: improve ACLE 6.4.1, 6.4.2 support

This improves conformance with ACLE 6.4.1.  Define additional macros that
indicate support for the ARM and Thumb instruction set architecture.  This
includes the following set of macros:

  __ARM_ARCH
  __ARM_ARCH_ISA_ARM
  __ARM_ARCH_ISA_THUMB
  __ARM_32BIT_STATE

These help identify the environment that the code is intended to execute on.

Adjust the handling for ACLE 6.4.2 to be more correct.  We would define the
profile as a free-standing token rather than a quoted single character.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@210991 91177308-0d34-0410-b5e6-96231b3b80d8
test: add missed file in previous commit

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@210992 91177308-0d34-0410-b5e6-96231b3b80d8
Hide the concept of diagnostic levels from lex, parse and sema

The compilation pipeline doesn't actually need to know about the high-level
concept of diagnostic mappings, and hiding the final computed level presents
several simplifications and other potential benefits.

The only exceptions are opportunistic checks to see whether expensive code
paths can be avoided for diagnostics that are guaranteed to be ignored at a
certain SourceLocation.

This commit formalizes that invariant by introducing and using
DiagnosticsEngine::isIgnored() in place of individual level checks throughout
lex, parse and sema.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211005 91177308-0d34-0410-b5e6-96231b3b80d8
[OPENMP] Initial support of 'reduction' clause


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211007 91177308-0d34-0410-b5e6-96231b3b80d8
clang/AST/OpenMPClause.h: Update \param VL. [-Wdocumentation]

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211011 91177308-0d34-0410-b5e6-96231b3b80d8
Use the ShowInSystemHeader bit consistently for all diagnostics

By describing system header suppressions directly in tablegen we eliminate
special cases in getDiagnosticSeverity().

Dropping the reliance on builtin diagnostic classes when mapping also gets us
closer to the goal of reusing the diagnostic machinery for custom diagnostics.

No change in functionality.

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

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211025 91177308-0d34-0410-b5e6-96231b3b80d8
Add -std=c++1z flag for C++17 features.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211030 91177308-0d34-0410-b5e6-96231b3b80d8
[C++1z] Implement N4051: 'typename' is permitted instead of 'class' when declaring a template template parameter.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211031 91177308-0d34-0410-b5e6-96231b3b80d8
Objective-C. Diagnose when property access is using declared
property accessor methods which have become deprecated
or available. // rdar://15951801


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211039 91177308-0d34-0410-b5e6-96231b3b80d8
MS ABI: Implement x86_64 RTTI

Summary:
The RTTI scheme for x86_64 is largely the same as the one for i386.

Differences are largely limited to avoiding load-time relocations by
replacing pointers to RTTI metadata with the difference of that data
relative to the load address of the module.

Interestingly, this precludes the possibility of successfully using RTTI
data from another DLL.  The ImageBase reference is always relative to
the current DLL.

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

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211041 91177308-0d34-0410-b5e6-96231b3b80d8
[modules] When we merge redecl chains or mark a decl used with an update
record, mark all subsequent decls as 'used' too, to maintain the AST invariant
that getPreviousDecl()->Used implies this->Used.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211050 91177308-0d34-0410-b5e6-96231b3b80d8
Check that the directory does not exist.
Otherwise, it could allows local users to obtain sensitive information or
overwrite arbitrary files via a symlink attack on temporary directories with
predictable names. 

Reported as CVE-2014-2893 ( https://security-tracker.debian.org/tracker/CVE-2014-2893 )
Found by Jakub Wilk



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211051 91177308-0d34-0410-b5e6-96231b3b80d8
actually, just check if it is a file (including directory or symlink)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211053 91177308-0d34-0410-b5e6-96231b3b80d8
ARM: Support for __builtin_arm_rbit() intrinsic.

Reverse the bits in a word. Maps to the RBIT instruction.

rdar://9283021

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211059 91177308-0d34-0410-b5e6-96231b3b80d8
AArch64: Support for __builtin_arm_rbit() and __builtin_arm_rbit64().

__builtin_arm_rbit() and __builtin_arm_rbit64().

rdar://9283021

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211060 91177308-0d34-0410-b5e6-96231b3b80d8
AArch64: Fix silly think-o in tests.

rdar://9283021

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211064 91177308-0d34-0410-b5e6-96231b3b80d8
Use the integrated assembler by default on OpenBSD/powerpc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211075 91177308-0d34-0410-b5e6-96231b3b80d8
MS static locals mangling: don't count enum scopes

We may not have the mangling for static locals vs. enums completely figured out,
but at least for my simple test cases, enums should not increment the mangling
number.

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

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211078 91177308-0d34-0410-b5e6-96231b3b80d8
MS static locals mangling: don't double-increment mangling number for switches

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

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