Clearing a SmallPtrSet is still expensive, split it out from OverloadCandidateSet::clear and don't do it on destruction.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165501 91177308-0d34-0410-b5e6-96231b3b80d8
If a macro has been #undef'd in a precompiled header, we still need to
write out the macro history for that macro. Similarly, we need to cope
with reading a macro definition that has been #undef'd.

Take advantage of this new ability so that global code-completion
results can refer to #undef'd macros, rather than losing them
entirely. For multiply defined/#undef'd macros, we will still get the
wrong result, but it's better than getting no result.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165502 91177308-0d34-0410-b5e6-96231b3b80d8
Fixup for r165097: build 32-bit ASan compiler-rt library on 64-bit Linux only if just-built clang can build simple 32-bit executables

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165503 91177308-0d34-0410-b5e6-96231b3b80d8
When we load a function or method body from an AST file, we check
whether that function/method already has a body (loaded from some
other AST file), as introduced in r165137. Delay this check until
after the redeclaration chains have been wired up.

While I'm here, make the loading of method bodies lazy.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165513 91177308-0d34-0410-b5e6-96231b3b80d8
Make the order of visitation of the pending bodies in the AST reader
deterministic.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165515 91177308-0d34-0410-b5e6-96231b3b80d8
Move the functionality that looks for ObjC overridden methods from
ASTContext to the ObjCMethodDecl, and have the more generic
ASTContext::getOverriddenMethods() use the ObjCMethodDecl::getOverriddenMethods()
function.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165518 91177308-0d34-0410-b5e6-96231b3b80d8
Create variable for warning group -Wshorten-64-to-32.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165521 91177308-0d34-0410-b5e6-96231b3b80d8
Don't forward -Wint-conversion to cc1plus.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165531 91177308-0d34-0410-b5e6-96231b3b80d8
Don't forward -Wenum-conversion to cc1plus.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165532 91177308-0d34-0410-b5e6-96231b3b80d8
[driver] Remove the -W[no-][int-conversion|constant-conversion|enum-conversion]
options when clang invokes cc1plus for i386 kexts.
rdar://12459188


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165534 91177308-0d34-0410-b5e6-96231b3b80d8
-fcatch-undefined-behavior: emit calls to the runtime library whenever one of the checks fails.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165536 91177308-0d34-0410-b5e6-96231b3b80d8
[driver] Remove redundant cases due to overlapping commits between Ted (r165531, 165532) and I 
(r165534), but leave the test case in place.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165537 91177308-0d34-0410-b5e6-96231b3b80d8
Simplify the code using SmallVector::append(), as suggested by Benjamin Kramer.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165538 91177308-0d34-0410-b5e6-96231b3b80d8
The clang driver has a fairly fancy support for executing gcc instead of
clang itself. This dates back to clang's early days and while it looks like
some of it is still used (for kext for example), other parts are probably dead.

Remove the -ccc-clang-archs option and associated code. I don't think there
is any remaining setup where clang doesn't support an architecture but it can
expect an working gcc cross compiler to be available.

A nice side effect is that tests no longer need to differentiate architectures
that are included in production builds of clang and those that are not.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165545 91177308-0d34-0410-b5e6-96231b3b80d8
Initialize the end loc in ObjCInterfaceTypeLoc.

Found by valgrind.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165546 91177308-0d34-0410-b5e6-96231b3b80d8
People put pragmas in crazy places; add more handling.  PR14046.

I think our general framework for parser pragmas needs a bit more work,
but I'm not planning on working on it at the moment.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165558 91177308-0d34-0410-b5e6-96231b3b80d8
Rework the (de-)serialization of macros, as stored in
MacroInfo*. Instead of simply dumping an offset into the current file,
give each macro definition a proper ID with all of the standard
modules-remapping facilities. Additionally, when a macro is modified
in a subsequent AST file (e.g., #undef'ing a macro loaded from another
module or from a precompiled header), provide a macro update record
rather than rewriting the entire macro definition. This gives us
greater consistency with the way we handle declarations, and ties
together macro definitions much more cleanly.

Note that we're still not actually deserializing macro history (we
never were), but it's far easy to do properly now.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165560 91177308-0d34-0410-b5e6-96231b3b80d8
Add extra vim swap file pattern



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165570 91177308-0d34-0410-b5e6-96231b3b80d8
-fcatch-undefined-behavior: store the type name directly at the end of a type descriptor. 5% binary size reduction due to fewer relocations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165572 91177308-0d34-0410-b5e6-96231b3b80d8
Revert "Use a special path to place the .o files in."

This reverts commit 165429 in an attempt to get our buildbots going.

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