Add RestrictQualifierLoc to DeclaratorChunk::FunctionTypeInfo

Clang supports __restrict__ as a function qualifier, but
DeclaratorChunk::FunctionTypeInfo lacked a field to track the qualifier's
source location (as we do with volatile, etc.). This was the subject of a FIXME
in GetFullTypeForDeclarator (in SemaType.cpp). This should also prove useful as
we add more warnings regarding questionable uses of the restrict qualifier.

There is no significant functional change (except for an improved source range
associated with the err_invalid_qualified_function_type diagnostic fixit
generated by GetFullTypeForDeclarator).

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

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@220216 91177308-0d34-0410-b5e6-96231b3b80d8
PR21312: Fix a regression in non-type template parameters of function type that are static member functions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@220221 91177308-0d34-0410-b5e6-96231b3b80d8
Improve Windows toolchain support for non-standard environments.

Typically clang finds Visual Studio by the user explicitly setting
up a Visual Studio environment via vcvarsall.  But we still try to
behave intelligently and fallback to different methods of finding
Visual Studio when this is not done.  This patch improves various
fallback codepaths to make Visual Studio locating more robust.

Specifically, this patch:

* Adds support for searching environment variables for VS 12.0
* Correctly locates include folders for Windows SDK 8.x (this was
  previously broken, and would cause clang to error)
* Prefers locating link.exe in the same location as cl.exe.  This
  is helpful in case another link.exe is in the path earlier than
  Visual Studio (e.g. GnuWin32)
* Minor cleanup in the registry reading code to make it more
  robust in the presence of long pathnames.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@220226 91177308-0d34-0410-b5e6-96231b3b80d8
Fix whitespace introduced in r220221

Post commit review feedback from Yaron Keren.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@220229 91177308-0d34-0410-b5e6-96231b3b80d8
Driver: Make FailingCommand mandatory for generateCompilationDiagnostics

We currently use a null FailingCommand when generating crash reports
as an indication that the cause is FORCE_CLANG_DIAGNOSTICS_CRASH, the
environment variable that exists to test crash dumps. This means that
our tests don't actually cover real crashes at all, and adds a more
complicated code path that's only used in the tests.

Instead, we can have the driver synthesize that every command failed
and just call generateCompilationDiagnostics normally.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@220234 91177308-0d34-0410-b5e6-96231b3b80d8
Driver: Use an early return instead of a long if condition (NFC)

This just flattens an if block by returning early on the "else"
condition.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@220235 91177308-0d34-0410-b5e6-96231b3b80d8
Driver: Name crashdump scripts after the first temp file

In practice there's only ever one temporary output file when
generating a crashdump, but even if there were many iterating over
each and creating a duplicate run script for each one wouldn't make
very much sense.

This updates the behaviour to only generate the script once, based on
the first filename.

This should make it more reasonable to generate extra output files to
include in the crashdump going forward, so I've also added a FIXME to
look into doing just that with the extra module crashdump files.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@220238 91177308-0d34-0410-b5e6-96231b3b80d8
Driver: Consolidate the logic for naming the module crashdump cache

List the module cache we use for crashdumps as a tempfile. This
simplifies how we pick up this directory when generating the actual
crash diagnostic and removes some duplicate logic.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@220241 91177308-0d34-0410-b5e6-96231b3b80d8
Revert "Improve Windows toolchain support for non-standard environments." (r220226)

In environments where PATH was set to point to the VS installation, Clang would
override that by looking in the registry and finding the latest VS installation.

If the environment is set up to point to a VS installation, that should take
precedence.

Reverting this until we can fix it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@220243 91177308-0d34-0410-b5e6-96231b3b80d8
Switch C compilations to C11 by default.

This is long-since overdue, and matches GCC 5.0. This should also be
backwards-compatible, because we already supported all of C11 as an extension
in C99 mode.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@220244 91177308-0d34-0410-b5e6-96231b3b80d8
Lower compound assignment for the missing type llvm::Type::FP128TyID.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@220257 91177308-0d34-0410-b5e6-96231b3b80d8
Remove including <complex.h> in test case, and change to use _Complex instead.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@220258 91177308-0d34-0410-b5e6-96231b3b80d8
[OPENMP] Codegen for 'private' clause in 'parallel' directive.
This patch generates some helper variables which used as a private copies of the corresponding original variables inside an OpenMP 'parallel' directive. These generated variables are initialized by default (with the default constructor, if any). In outlined function references to original variables are replaced by the references to these private helper variables. At the end of the initialization of the private variables and implicit barier is set by calling __kmpc_barrier(...) runtime function to be sure that all threads were initialized using original values of the variables.
Differential Revision: http://reviews.llvm.org/D4752


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@220262 91177308-0d34-0410-b5e6-96231b3b80d8
Remove unused member variable.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@220264 91177308-0d34-0410-b5e6-96231b3b80d8
Driver: Tighten up crash report tests

These tests were a little bit too flexible in terms of filenames.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@220265 91177308-0d34-0410-b5e6-96231b3b80d8
OpenMPClause.h: Fix a warning. [-Wdocumentation]

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@220266 91177308-0d34-0410-b5e6-96231b3b80d8
Update documentation to match API change in r215323.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@220267 91177308-0d34-0410-b5e6-96231b3b80d8
Add missing qualifier to documentation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@220268 91177308-0d34-0410-b5e6-96231b3b80d8
clang-format: Fix space in direct destructor calls.

Before:
  void F(int& i) { i. ~int(); }

After:
  void F(int& i) { i.~int(); }

Also, some cleanups.

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