Add -Wmodule-build to make it easy to see when modules are (re)built

Warning is default ignore, and not in -Wall.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@207975 91177308-0d34-0410-b5e6-96231b3b80d8
CodeGen: Cleanup visibility in RTTIBuilder

No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@207978 91177308-0d34-0410-b5e6-96231b3b80d8
Fix handling of condition variables in the face of temp dtors.

The assignment needs to be before the destruction of the temporary.
This patch calls out to addStmt, which invokes VisitDeclStmt, which has
all the correct logic for handling temporaries.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@207985 91177308-0d34-0410-b5e6-96231b3b80d8
CodeGen: Assign linkage to thread-wrappers correctly

We would sometimes incorrectly give a thread-wrapper external linkage
instead of internal linkage if we had only CodeGen'd it's declaration,
not it's definition.

This fixes PR19655.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@207988 91177308-0d34-0410-b5e6-96231b3b80d8
Small refactoring, no functionality change.

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

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@207994 91177308-0d34-0410-b5e6-96231b3b80d8
www: remove proprietary dbtree.js script from r96013

This minified source code and artwork is copied from a commercial product and
carries no license information:

  dbtree.js (7 kb), 25.03.2014 14:51:32
  Purchase and download DBTree now for only $29.75 $9.75

It was used by a small TOC which looks fine now as a plain unordered list.

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

Warn if an alias requests a section other than the aliasee section.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@207997 91177308-0d34-0410-b5e6-96231b3b80d8
MS ABI: Emit an error during IRgen on C++ exception handling

Currently, users get error messages about RTTI descriptor mangling with
no useful source location.  This addresses that.

Another approach would be to disable C++ exceptions by default in the
driver when using the Microsoft C++ ABI.  However, this makes it
impossible to parse system headers that use exception handling
constructs.  By delaying the error to IRgen, we can figure out if we
actually need to emit code for this construct.  Additionally, users who
are only interested in building refactoring tools on Windows still get a
correct AST without having to add flags.  Finally, this is consistent
with what we do for SEH.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@207999 91177308-0d34-0410-b5e6-96231b3b80d8
Simplify replacement map by avoiding duplicate values and ensuring the values it does contain are necessary.

Items were being redundantly added to the replacement map (both when the
declaration was created, and then again when its definition was
constructed) which caused extra handling to be required when walking the
map (as elements may've already been replaced due to prior entries). By
avoiding adding the duplicates, the checks in the replacement handling
can be replaced with assertions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208000 91177308-0d34-0410-b5e6-96231b3b80d8
Add -Wnon-modular-include* options

Warn on non-modular includes in various contexts.

-Wnon-modular-include
 -Wnon-modular-include-in-module
  -Wnon-modular-include-in-framework-module

Where each group is a subgroup of those above it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208004 91177308-0d34-0410-b5e6-96231b3b80d8
[Basic/FileManager] Propagate whether a file 'IsVolatile' to the file opening functions.

Needs llvm r208007.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208008 91177308-0d34-0410-b5e6-96231b3b80d8
During parsing, update the range of the Declarator to include the identifier.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208011 91177308-0d34-0410-b5e6-96231b3b80d8
ObjC IVars aren't added when the type isn't emitted after the interface extension

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208014 91177308-0d34-0410-b5e6-96231b3b80d8
Build debug info for ObjC interface types at the end of the translation unit to ensure all ivars are included.

This takes a different approach than the
completedType/requiresCompleteType work which relies on AST callbacks to
upgrade the type declaration to a definition. Instead, just defer
constructing the definition to the end of the translation unit.

This works because the definition is never needed by other debug info
(so far as I know), whereas the definition of a struct may be needed by
other debug info before the end of the translation unit (such as
emitting the definition of a member function which must refer to that
member function's declaration).

If we had a callback for whenever an IVar was added to an ObjC interface
we could use that, and remove the need for the ObjCInterfaceCache, which
might be nice. (also would need a callback for when it was more than
just a declaration so we could get properties, etc).

A side benefit is that we also don't need the CompletedTypeCache
anymore. Just rely on the declaration-ness of a type to decide whether
its definition is yet to be emitted.

There's still the PR19562 memory leak, but this should hopefully make
that a bit easier to approach.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208015 91177308-0d34-0410-b5e6-96231b3b80d8
www: add a missing HTML open tag

This went AWOL in r207995.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208018 91177308-0d34-0410-b5e6-96231b3b80d8
I fixed this fixme in r208017.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208027 91177308-0d34-0410-b5e6-96231b3b80d8
Support field references to struct names and c++11 aliases from inline asm.
This is in addition to the existing support for typedefs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208053 91177308-0d34-0410-b5e6-96231b3b80d8
PR19598: Ensure temporary metadata nodes used in debug info are destroyed.

CGDebugInfo and DIBuilder were lax in their handling of temporary
MDNodes. All temporary nodes need to be deleted, which means they need
to be RAUW'd with a permanent node. This was not happening.

To ensure this, leverage DIBuilder's new ability to create both
permanent and temporary declarations. Ensure all temporary declarations
are RAUW'd, even with itself. (DIDescriptor::RAUW handles the case where
it is replaced with itself and creates a new, duplicate permanent node
to replace itself with)

This means that all temporary declarations must be added to the
ReplacementMap even if they're never upgraded to definitions - so move
the point of insertion into the map to the point of creation of the
declarations.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208055 91177308-0d34-0410-b5e6-96231b3b80d8
[OPENMP] 'proc_bind' clause support - Parsing and sema analysis for OpenMP clause 'proc_bind'


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