Exposing the noduplicate attribute within Clang, which marks functions so that the optimizer does not duplicate code.

Patch thanks to Marcello Maggioni!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201941 91177308-0d34-0410-b5e6-96231b3b80d8
Adding manual headings to the new capability attributes' documentation.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201942 91177308-0d34-0410-b5e6-96231b3b80d8
Reorganize and improve semantic tests for dllexport/import

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201947 91177308-0d34-0410-b5e6-96231b3b80d8
clang: forward -no-integrated-as from the driver

Forward the -no-integrated-as option to -cc1 rather than simply invoking the
appropriate tool.  This is useful since this option has been overloaded to
permit disabling of parsing inline assembly at the MC layer.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201952 91177308-0d34-0410-b5e6-96231b3b80d8
Revert "clang: forward -no-integrated-as from the driver"

This seems to break a MIPS test.  Revert until I figure out the root cause.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201954 91177308-0d34-0410-b5e6-96231b3b80d8
test: fix MIPS driver tests

The tests attempt to validate the invocation of the assembler program with the
integrated assembler disabled.  However, the match pattern for the negative
tests are lax and will match both the driver invocation as well as the assembler
invocation.  Make the tests more strict by ensuring that we only match the
assembler invocation.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201959 91177308-0d34-0410-b5e6-96231b3b80d8
clang: forward -no-integrated-as from the driver

Forward the -no-integrated-as option to -cc1 rather than simply invoking the
appropriate tool.  This is useful since this option has been overloaded to
permit disabling of parsing inline assembly at the MC layer.

This re-applies the previous version of the patch with a renaming of the driver
option to the public name rather than the internal name (-target vs -triple).
The actual failure is fixed separately of an overly aggressive negative pattern
match in the MIPS driver tests.  It also fixes the incorrect test for targets
that have the integrated assembler disabled by default.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201960 91177308-0d34-0410-b5e6-96231b3b80d8
Remove support for the QA_OVERRIDE_GCC3_OPTIONS environment variable.

In r199283 I switched the name of this variable to CCC_OVERRIDE_OPTIONS, but
I kept some code to continue recognizing the old name temporarily. As far as
I know, the only use of this was for some internal testing at Apple, and we've
now switched to use the new name. If anyone else is still using this and needs
more time to switch names, I guess we'll find out! <rdar://problem/15821425>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201962 91177308-0d34-0410-b5e6-96231b3b80d8
clang: add -f{no-,}integrate-as as consistent parameters

The integrated assembler is a feature.  This makes the new flags the default
option, and the previous versions aliases.  Ideally, at some point the aliases
would be entirely removed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201963 91177308-0d34-0410-b5e6-96231b3b80d8
Release Notes: document -f{,no-}integrate-as

Now that the integrated assembler is considered a first class feature of the
compiler and has a proper feature flag, document the change in the compiler
flags.  Ensure that we indicate that the legacy flags are still available, but,
encourage users to switch to the feature flags.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201964 91177308-0d34-0410-b5e6-96231b3b80d8
Fix crash when both ExpectAndConsume and ConsumeAnyToken emit diagnostics

The DiagnosticBuilder's lifetime in parser typo recovery was overlapping with
the subsequent consume which can itself emit PP diagnostics.

Patch by Olivier Goffart!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201965 91177308-0d34-0410-b5e6-96231b3b80d8
[CMake] Deprecate clang_tablegen(DEPENDS).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201971 91177308-0d34-0410-b5e6-96231b3b80d8
[CMake] clang_tblgen: Use add_public_tablegen_target.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201973 91177308-0d34-0410-b5e6-96231b3b80d8
[CMake] Resurrect mis-dropped dependency to ClangDriverOptions since r201842.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201978 91177308-0d34-0410-b5e6-96231b3b80d8
Sema: Simplify away one-iteration loops.

No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201981 91177308-0d34-0410-b5e6-96231b3b80d8
Fixing the indentation of the RST content in the release notes. Fixes two warnings when building the HTML content and improves the format of the resulting content.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201987 91177308-0d34-0410-b5e6-96231b3b80d8
[Index] Make the USRs more stable.

- Only include offsets with local (in function scope) symbols, where we don't encode scoping
- Only include the filename with non-system symbols. Presumably the system headers will not provide conflicting definitions.

rdar://15976823

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201990 91177308-0d34-0410-b5e6-96231b3b80d8
Do not put instrumentation counters before phis in ObjC for-in loops.

We still don't use the PGO to set branch weights for these loops, but at
least this keeps the compiler from crashing. <rdar://problem/16137778>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@202002 91177308-0d34-0410-b5e6-96231b3b80d8
Update __cplusplus to match the value in the C++14 DIS preview (D3937).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@202003 91177308-0d34-0410-b5e6-96231b3b80d8
[AArch64] Change int64_t from 'long long int' to 'long int' for AArch64 target.

Most 64-bit targets define int64_t as long int, and AArch64 should
make same definition to follow LP64 model. In GNU tool chain, int64_t
is defined as long int for 64-bit target. So to get consistent with GNU,
it's better Changing int64_t from 'long long int' to 'long int',
otherwise clang will get different name mangling suffix compared with g++.

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