revert patch r216469.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@216485 91177308-0d34-0410-b5e6-96231b3b80d8
Update for llvm api change

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@216489 91177308-0d34-0410-b5e6-96231b3b80d8
Clarify comment so this doesn't appear to be a C11-only rule.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@216490 91177308-0d34-0410-b5e6-96231b3b80d8
Win64 ABI shouldn't extend integer type arguments.

Summary:
MSVC doesn't extend integer types smaller than 64bit, so to preserve
binary compatibility, clang shouldn't either.

For example, the following C code built with MSVC:

unsigned test(unsigned v);
unsigned foobar(unsigned short);
int main() { return test(0xffffffff) + foobar(28); }

Produces the following:

  0000000000000004: B9 FF FF FF FF     mov         ecx,0FFFFFFFFh
  0000000000000009: E8 00 00 00 00     call        test
  000000000000000E: 89 44 24 20        mov         dword ptr [rsp+20h],eax
  0000000000000012: 66 B9 1C 00        mov         cx,1Ch
  0000000000000016: E8 00 00 00 00     call        foobar

And as you can see, when setting up the call to foobar, only cx is overwritten.

If foobar is compiled with clang, then the zero extension added by clang means
the rest of the register, which contains garbage, could be used.

For example if foobar is:

unsigned foobar(unsigned short v) {
    return v;
}

Compiled with clang -fomit-frame-pointer -O3 gives the following assembly:

foobar:
  0000000000000000: 89 C8              mov         eax,ecx
  0000000000000002: C3                 ret

And that function would return garbage because the 16 most significant bits of
ecx still contain garbage from the first call.

With this change, the code for that function is now:

foobar:
  0000000000000000: 0F B7 C1           movzx       eax,cx
  0000000000000003: C3                 ret

Reviewers: chapuni, rnk

Reviewed By: rnk

Subscribers: majnemer, cfe-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@216491 91177308-0d34-0410-b5e6-96231b3b80d8
Update for llvm api change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@216493 91177308-0d34-0410-b5e6-96231b3b80d8
Don't segfault in EmitCXXGlobalInitFunc when main file is a membuf

Summary: When the main file is created from a membuffer, there is no file entry that can be retrieved. This uses "__GLOBAL_I_a" in that case which is what was always used before r208128.

Reviewers: majnemer, thakis

Reviewed By: thakis

Subscribers: yaron.keren, rsmith, cfe-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@216495 91177308-0d34-0410-b5e6-96231b3b80d8
Revert 216491, it breaks CodeGenCXX/microsoft-abi-member-pointers.cpp


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@216496 91177308-0d34-0410-b5e6-96231b3b80d8
Attempt to address cmake buildbot failure

CMake gets confused by the fact that both LLVM and Clang now have
a CodeGen unittest. Rename the target to avoid that. The new test
was also missing ProfileData (thanks to Julien Lerouge for
pointing that out)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@216499 91177308-0d34-0410-b5e6-96231b3b80d8
clang-format: Don't butcher __asm blocks.

Instead completely cop out of formatting them for now.

This fixes llvm.org/PR20618.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@216501 91177308-0d34-0410-b5e6-96231b3b80d8
[modules] Don't assert when merging virtual functions that override other
functions. Also don't needlessly pull in non-canonical declarations of the
overridden virtual functions.


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


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@216506 91177308-0d34-0410-b5e6-96231b3b80d8
Re-apply r216491 (Win64 ABI shouldn't extend integer type arguments.)

This time though, preserve the extension for bool types since that's compatible
with what MSVC expects.

See http://reviews.llvm.org/D4380


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@216507 91177308-0d34-0410-b5e6-96231b3b80d8
ClangCodeGenTests: Quick fix to USEDLIBS. clangCodeGen requires, at least, AST, Basic, Frontend, and Lex.

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

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@216514 91177308-0d34-0410-b5e6-96231b3b80d8
[CMake] ClangCodeGenTests: Add Core. It's referenced by the test.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@216515 91177308-0d34-0410-b5e6-96231b3b80d8
ClangCodeGenTests: Prune redundant libdeps.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@216516 91177308-0d34-0410-b5e6-96231b3b80d8
Refactor the diagnostic DeclContext printing.  No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@216517 91177308-0d34-0410-b5e6-96231b3b80d8
PR20760: Don't assert (and produce better diagnostics) if a default initializer
contains an unmatched closing bracket token.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@216518 91177308-0d34-0410-b5e6-96231b3b80d8
Change a few methods to static methods.  No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@216519 91177308-0d34-0410-b5e6-96231b3b80d8
Fix representation of __attribute__((nonnull)) to support correctly modeling
the no-arguments case. Don't expand this to an __attribute__((nonnull(A, B,
C))) attribute, since that does the wrong thing for function templates and
varargs functions.

In passing, fix a grammar error in the diagnostic, a crash if
__attribute__((nonnull(N))) is applied to a varargs function,
a bug where the same null argument could be diagnosed multiple
times if there were multiple nonnull attributes referring to it,
and a bug where nonnull attributes would not be accumulated correctly
across redeclarations.


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