Retry building modules that were compiled by other instances and are out-of-date

When another clang instance builds a module, it may still be considered
"out of date" for the current instance in a couple of cases*.  This
patch prevents us from giving spurious errors when compilers race to
build a module by allowing the module load to fail when the pcm was
built by a different compiler instance.

* Cases where a module can be out of date despite just having been
built:

1) There are different -I paths between invocations that result in
finding a different module map file for some dependent module. This is
not an error, and should never be diagnosed.

<rdar://problem/16843887>

2) There are file system races where the headers making up a module are
touched or moved. Although this can sometimes mean trouble, diagnosing
it only during a build-race is worse than useless and we cannot detect
this in general.  It is more robust to just rebuild.  This was causing
spurious issues in some setups where only the modtime of headers was
bumped during a build.

<rdar://problem/16157638>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211129 91177308-0d34-0410-b5e6-96231b3b80d8
Objective-C ARC. Do not warn about properties with both
IBOutlet and weak attributes when accessed being
unpredictably set to nil because usage of such properties
are always single threaded and its ivar cannot be set
to nil asynchronously. // rdar://15885642 


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211132 91177308-0d34-0410-b5e6-96231b3b80d8
Remove an unused argument from checkCorrectionVisibility.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211133 91177308-0d34-0410-b5e6-96231b3b80d8
Fix the caller of checkCorrectionVisibility too.

That's what I get for hurredly splitting the small change out of a much
bigger change that had moved where checkCorrectionVisibility was being
called.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211134 91177308-0d34-0410-b5e6-96231b3b80d8
Documentation for #pragma clang loop directive and options vectorize and interleave.

Reviewed by: Aaron Ballman and Dmitri Gribenko


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211135 91177308-0d34-0410-b5e6-96231b3b80d8
Fix bug in code for avoiding dynamic initialization of dllimport globals

When instantiating dllimport variables with dynamic initializers, don't
bail out of Sema::InstantiateVariableInitializer without calling
PopExpressionEvaluationContext().

This was causing a stale object to stay on the ExprEvalContexts stack,
causing subsequent calls to getCurrentMangleNumberContext() to fail,
resulting in incorrect numbering of static locals (and probably other
broken things).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211137 91177308-0d34-0410-b5e6-96231b3b80d8
Convert assert(0) to llvm_unreachable to silence a warning about Addend being uninitialized in default case.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211138 91177308-0d34-0410-b5e6-96231b3b80d8
Replace some assert(0)'s with llvm_unreachable.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211139 91177308-0d34-0410-b5e6-96231b3b80d8
[OPENMP] Initial support for '#pragma omp for' (fixed incompatibility with MSVC).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211140 91177308-0d34-0410-b5e6-96231b3b80d8
Convert an llvm_unreachable in an 'else' block to a removal of the 'if' and an assertion of its condition. Suggestion from David Blaikie.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211142 91177308-0d34-0410-b5e6-96231b3b80d8
Replace some assert(0)'s with llvm_unreachable.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211143 91177308-0d34-0410-b5e6-96231b3b80d8
[OPENMP] Reformatting and code improvement.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211147 91177308-0d34-0410-b5e6-96231b3b80d8
AArch64: re-enable tests that were looking for a non-existent backend.

In the final phase of the merge, I managed to disable a bunch of Clang
tests accidentally. Fortunately none of them seem to have broken in
the interim.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211149 91177308-0d34-0410-b5e6-96231b3b80d8
Inherit dll attributes to static locals

This makes us handle static locals in exported/imported functions correctly.

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

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211173 91177308-0d34-0410-b5e6-96231b3b80d8
Driver: correct the backend option spelling

The backend option does not have an '-enable' prefix.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211177 91177308-0d34-0410-b5e6-96231b3b80d8
Make clang-cl accept .lib inputs (PR20065)

Patch by Ehsan Akhgari!

(Tiny tweak by me: renamed PathSegment to LibDir.)

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

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211189 91177308-0d34-0410-b5e6-96231b3b80d8
Objective-C. Attributes on class declarations carry over
to forward class declarations for diagnosis. 
// rdar://16681279


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211195 91177308-0d34-0410-b5e6-96231b3b80d8
Objective-C. Try to fix the test in buildbot in my last patch.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211197 91177308-0d34-0410-b5e6-96231b3b80d8
[analyzer] Don't create new PostStmt nodes if we don't have to.

Doing this caused us to mistakenly think we'd seen a particular state before
when we actually hadn't, which resulted in false negatives. Credit to
Rafael Auler for discovering this issue!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211209 91177308-0d34-0410-b5e6-96231b3b80d8
Objective-C. Check for integer overflow in Objective-C's
boxed expression. // rdar://16417427


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