If a class template specialization from one module has its definition
instantiated in another module, and the instantiation uses a partial
specialization, include the partial specialization and its template arguments
in the update record. We'll need them if someone imports the second module and
tries to instantiate a member of the template.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@209472 91177308-0d34-0410-b5e6-96231b3b80d8
Unify the name of compiler-rt builtins library on Linux.

Call it "libclang_rt.builtins-<arch>.a" to be consistent
with sanitizers/profile libraries naming. Modify Makefile
and CMake build systems and Clang driver accordingly.

Fixes PR19822.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@209474 91177308-0d34-0410-b5e6-96231b3b80d8
Use error_code::success() instead of make_error_code(llvm::errc::success).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@209477 91177308-0d34-0410-b5e6-96231b3b80d8
Don't reduce the stack protector level given -fstack-protector.

Before -fstack-protector would always force a level of 1, even if the default
was 2.

Patch by Brad Smith.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@209479 91177308-0d34-0410-b5e6-96231b3b80d8
Avoid allocating extra memory to handle the lazy definition data pointer for
CXXRecordDecls when modules is enabled.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@209482 91177308-0d34-0410-b5e6-96231b3b80d8
Don't set unnamed_addr in CreateRuntimeVariable.

This was fairly broken. For example,

@__dso_handle would or would not get an unnamed_addr depending on how many
global destructors were used in a translation unit.

The consensus was that not every runtime variable is unnamed_addr and that
__dso_handle handle should not be, so just don't add unnamed_addr in
CreateRuntimeVariable.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@209484 91177308-0d34-0410-b5e6-96231b3b80d8
Fix a bug in xmmintrin.h.

The last step of _mm_cvtps_pi16 should use _mm_packs_pi32, which is a function
that reads two __m64 values and packs four 32-bit values into four 16-bit
values.  

<rdar://problem/16873717>


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@209489 91177308-0d34-0410-b5e6-96231b3b80d8
Clean DiagRanges. Fix a possible problem introduced in r209468.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@209491 91177308-0d34-0410-b5e6-96231b3b80d8
Fix '-main-file-name <name>' so that it is used for the ModuleID.

Summary:
Previously, you could not specify the original file name when passing a preprocessed file into the compiler
Now you can use 'clang -Xclang -main-file-name -Xclang <original file name> ...'
Or 'clang -cc1 -main-file-name <original file name> ...'

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@209503 91177308-0d34-0410-b5e6-96231b3b80d8
Implemented support for "pragma clang optimize on/off", based on attribute 'optnone'.

This patch implements support for selectively disabling optimizations on a
range of function definitions through a pragma. The implementation is that
all function definitions in the range are decorated with attribute
'optnone'.

    #pragma clang optimize off
    // All function definitions in here are decorated with 'optnone'.
    #pragma clang optimize on
    // Compilation resumes as normal.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@209510 91177308-0d34-0410-b5e6-96231b3b80d8
PR19352 - getLocation() points to the wrong position for FriendDecls

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@209511 91177308-0d34-0410-b5e6-96231b3b80d8
[test] Force a triple in the pragma optimize test due to expected mangled names.

No functional change to the compiler.
This should just make the test pass on all buildbots.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@209515 91177308-0d34-0410-b5e6-96231b3b80d8
[MS-ABI] Implements MS-compatible RTTI
Enables the emission of MS-compatible RTTI data structures for use with 
typeid, dynamic_cast and exceptions.  Does not implement dynamic_cast 
or exceptions.  As an artiface, typeid works in some cases but proper 
support an testing will coming in a subsequent patch.

majnemer has fuzzed the results.  Test cases included.

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




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@209523 91177308-0d34-0410-b5e6-96231b3b80d8
Replace system() by native perl calls

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@209524 91177308-0d34-0410-b5e6-96231b3b80d8
[MS-ABI] Silence warning from r209523
no functional change.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@209525 91177308-0d34-0410-b5e6-96231b3b80d8
List the function/method name in the index page of scan-build 

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@209526 91177308-0d34-0410-b5e6-96231b3b80d8
revert "r209526 List the function/method name in the index page of scan-build "
Depends on http://reviews.llvm.org/D3762



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@209527 91177308-0d34-0410-b5e6-96231b3b80d8
Make the ParentVector default to size 2.

As Jordan noted, it makes more sense when we store it in the ParentMap,
and doesn't really make a difference when we return it from getParents.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@209530 91177308-0d34-0410-b5e6-96231b3b80d8
Make dead return statement detection more robust against changes in the CFG.

This change is a precondition to the proposed change to handle temporary
dtors correctly.

The idea is to explicitly search for the next return that doesn't have other
paths into it (that is, if the current block is dead, the block containing the
return must be dead, too). Thus, introducing non-control-flow block
transitions will not break the logic.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@209531 91177308-0d34-0410-b5e6-96231b3b80d8
Test case for r209489.

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