• Home
  • History
  • Annotate
  • only in /external/clang/test/CodeGenCXX/
History log of /external/clang/test/CodeGenCXX/
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
c8645e38bfe5ab46e424b7aaca53c064105c4265 15-Oct-2011 Eli Friedman <eli.friedman@gmail.com> Handle an edge case involving the conditional operator and throw expressions. PR10582.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142047 91177308-0d34-0410-b5e6-96231b3b80d8
hrow-expressions.cpp
8eb5b29ec11f5f6922132a68f8e88a9b0f69a489 15-Oct-2011 Anton Korobeynikov <asl@math.spbu.ru> Missed tests for half FP support


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142017 91177308-0d34-0410-b5e6-96231b3b80d8
p16-mangle.cpp
p16-overload.cpp
2ed7cb649aa709b875c519f4a980a1e2b5712370 14-Oct-2011 Eli Friedman <eli.friedman@gmail.com> PR11124: Don't overwrite memory outside of a base class when performing zero-initialization before running its constructor.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141933 91177308-0d34-0410-b5e6-96231b3b80d8
alue-init.cpp
762bb9d0ad20320b9f97a841dce57ba5e8e48b07 14-Oct-2011 Richard Smith <richard-llvm@metafoo.co.uk> Update all tests other than Driver/std.cpp to use -std=c++11 rather than
-std=c++0x. Patch by Ahmed Charles!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141900 91177308-0d34-0410-b5e6-96231b3b80d8
R5050-constructor-conversion.cpp
rray-construction.cpp
rray-operator-delete-call.cpp
ast-conversion.cpp
onstructor-conversion.cpp
onstructor-default-arg.cpp
onstructor-for-array-members.cpp
onstructor-init.cpp
onstructor-template.cpp
onversion-function.cpp
onvert-to-fptr.cpp
opy-assign-synthesis-1.cpp
xx0x-defaulted-templates.cpp
xx0x-delegating-ctors.cpp
xx0x-initializer-scalars.cpp
ebug-info-char16.cpp
ebug-info-cxx0x.cpp
ebug-info-nullptr.cpp
erived-to-base-conv.cpp
ynamic-cast-always-null.cpp
h.cpp
or-range-temporaries.cpp
or-range.cpp
lobal-array-destruction.cpp
angle-alias-template.cpp
angle-exprs.cpp
angle-ref-qualifiers.cpp
angle-unnameable-conversions.cpp
angle-variadic-templates.cpp
angle.cpp
ember-init-anon-union.cpp
ember-init-ctor.cpp
ullptr.cpp
r9965.cpp
tr-to-member-function.cpp
einterpret-cast.cpp
value-references.cpp
coped-enums.cpp
tatic-assert.cpp
nion-dtor.cpp
ararg-conversion-ctor.cpp
ariadic-templates.cpp
13e1bca90dc227e1e9c30900841f8bf976c0c83e 11-Oct-2011 Douglas Gregor <dgregor@apple.com> When performing a user-defined conversion via a constructor, be sure
to check whether the constructor is accessible. Fixes
<rdar://problem/10202900>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141588 91177308-0d34-0410-b5e6-96231b3b80d8
onstructor-convert.cpp
6595935602f57b4f2115785bb39dabc83e4232dc 07-Oct-2011 John McCall <rjmccall@apple.com> Record layout requires not just a definition, but a complete
definition. Assert this. Change IR generation to not try to
aggressively emit the IR translation of a record during its
own definition. Fixes PR10912.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141350 91177308-0d34-0410-b5e6-96231b3b80d8
lass-layout.cpp
8ed3adec26af254dd6df6b34546737045f353670 27-Sep-2011 Eli Friedman <eli.friedman@gmail.com> Move test, so it actually tests what it is supposed to (given that we don't have an AST verifier).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140620 91177308-0d34-0410-b5e6-96231b3b80d8
value-references.cpp
9984d12729206c9c8d8009ed7eaab5be18c7ce89 26-Sep-2011 Peter Collingbourne <peter@pcc.me.uk> Move vtable dumper call to VTableBuilder ctor

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140508 91177308-0d34-0410-b5e6-96231b3b80d8
table-layout-abi-examples.cpp
bf1c5aeadc5d4bb7fca5b0ee12208a94971f8492 26-Sep-2011 Peter Collingbourne <peter@pcc.me.uk> Remove CodeGenVTables::ComputeVTableRelatedInformation dependency on CodeGen

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140503 91177308-0d34-0410-b5e6-96231b3b80d8
angle-subst-std.cpp
isibility.cpp
cea8d966f826554f0679595e9371e314e8dbc1cf 24-Sep-2011 Sebastian Redl <sebastian.redl@getdesigned.at> Treat list-initialization of scalars as a first-class citizen in C++11.
Allow empty initializer lists for scalars, which mean value-initialization.
Constant evaluation for single-element and empty initializer lists for scalars.
Codegen for empty initializer lists for scalars.
Test case comes in next commit.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140459 91177308-0d34-0410-b5e6-96231b3b80d8
xx0x-initializer-scalars.cpp
b681fb180dd1d1e8659006f1987711dcc92a6241 22-Sep-2011 Douglas Gregor <dgregor@apple.com> Explicitly-defaulted copy/move constructors are not "implicit", but
they still need the logic to cope with array member
initialization. Fixes PR10720.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140302 91177308-0d34-0410-b5e6-96231b3b80d8
onstructor-init.cpp
ca82a82082edc982a1fb5fcfef2dd2c8cf9bc824 21-Sep-2011 John McCall <rjmccall@apple.com> Enforce access control for conversion operators used in contextual
conversions (rather than just call-arguments).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140244 91177308-0d34-0410-b5e6-96231b3b80d8
elete.cpp
285cfd8953d4ca4da613a47a0d691f7234068f8c 19-Sep-2011 Bill Wendling <isanbard@gmail.com> Throw the switch to convert clang to the new exception handling model!

This model uses the 'landingpad' instruction, which is pinned to the top of the
landing pad. (A landing pad is defined as the destination of the unwind branch
of an invoke instruction.) All of the information needed to generate the correct
exception handling metadata during code generation is encoded into the
landingpad instruction.

The new 'resume' instruction takes the place of the llvm.eh.resume intrinsic
call. It's lowered in much the same way as the intrinsic is.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140049 91177308-0d34-0410-b5e6-96231b3b80d8
rm.cpp
estructors.cpp
ynamic-cast.cpp
h.cpp
rvo.cpp
artial-destruction.cpp
hreadsafe-statics-exceptions.cpp
ypeid.cpp
5584d91c938384b57563edbca5c2d4f1c66ff02a 19-Sep-2011 John McCall <rjmccall@apple.com> In apple-kext mode, use external linkage for explicit template instantiations
instead of internal linkage.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140030 91177308-0d34-0410-b5e6-96231b3b80d8
pple-kext-linkage.C
416f63e42d4c34a38833a3aa8fa1ebb3c847722b 18-Sep-2011 Richard Smith <richard-llvm@metafoo.co.uk> PR10304: Do not call destructors for data members from union destructors. Prior to C++11, this
has no effect since any such destructors must be trivial, and in C++11 such destructors must not
be called.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139997 91177308-0d34-0410-b5e6-96231b3b80d8
nion-dtor.cpp
16ee8191ca6953e173c983e3175a8d7504b5baae 18-Sep-2011 Richard Smith <richard-llvm@metafoo.co.uk> Fix PR10531. Attach an initializer to anonymous unions, since the default constructor might not be trivial (if there is an in-class initializer for some member) and might be deleted.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139991 91177308-0d34-0410-b5e6-96231b3b80d8
angle.cpp
ember-init-anon-union.cpp
f60dca355d3e754b7a51726c7455d1e7583a65ba 15-Sep-2011 Devang Patel <dpatel@apple.com> Emit debug info for c++0x nullptr.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139752 91177308-0d34-0410-b5e6-96231b3b80d8
ebug-info-char16.cpp
ebug-info-nullptr.cpp
eb43f4a8f133c2bc510ae136a556e92b68a6ff44 14-Sep-2011 Eli Friedman <eli.friedman@gmail.com> Re-commit r139643.

Make clang use Acquire loads and Release stores where necessary.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139650 91177308-0d34-0410-b5e6-96231b3b80d8
tatic-init.cpp
a179b531f4728b91291bfbf639ddf71ed7db810a 14-Sep-2011 Eli Friedman <eli.friedman@gmail.com> Revert r139643 while I look into it; it's breaking selfhost.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139648 91177308-0d34-0410-b5e6-96231b3b80d8
tatic-init.cpp
93013b235680b184be3cda150bcd6456944415f4 13-Sep-2011 Eli Friedman <eli.friedman@gmail.com> Make clang use Acquire loads and Release stores where necessary.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139643 91177308-0d34-0410-b5e6-96231b3b80d8
tatic-init.cpp
74a292f2bb0129abba4a5de71d6eebf65ce37803 12-Sep-2011 Devang Patel <dpatel@apple.com> Update test to fix windows buildbot.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139513 91177308-0d34-0410-b5e6-96231b3b80d8
ebug-info-char16.cpp
e8ee3f2cda32818f30004226f7d8d27bada9b509 12-Sep-2011 Devang Patel <dpatel@apple.com> Fix debug info encodings for char16_t and char32_t.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139502 91177308-0d34-0410-b5e6-96231b3b80d8
ebug-info-char16.cpp
68f76b112cb50b6dd6cf6935680bc8f242f43441 10-Sep-2011 Devang Patel <dpatel@apple.com> Emit debug info for wchar_t.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139443 91177308-0d34-0410-b5e6-96231b3b80d8
ebug-info-wchar.cpp
1ddc9c4674b7c737ec65241a531df8c64e40b0a9 06-Sep-2011 Douglas Gregor <dgregor@apple.com> When extracting the callee declaration from a call expression, be sure
to look through SubstNonTypeTemplateParmExprs. Then, update the IR
generation of CallExprs to actually use CallExpr::getCalleeDecl()
rather than attempting to mimick its behavior (badly).

Fixes <rdar://problem/10063539>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139185 91177308-0d34-0410-b5e6-96231b3b80d8
uiltins.cpp
576cf17055c92e7d1ae8fb9fd9f79433a16a4394 06-Sep-2011 Eli Friedman <eli.friedman@gmail.com> Rearrange code so that we pass the right pointer to delete[] when an exception is thrown constructing the array elements in an array new expression. Fixes PR10870.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139158 91177308-0d34-0410-b5e6-96231b3b80d8
xceptions.cpp
f747ce6235e9257230846f52b5fc79e65c210444 05-Sep-2011 Richard Smith <richard-llvm@metafoo.co.uk> PR10506: Extend test for temporary cleanups in range-based for loop to cover the dependent case.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139109 91177308-0d34-0410-b5e6-96231b3b80d8
or-range-temporaries.cpp
7803ec829d1cc657e21bb0d1afb8596a81bfd542 01-Sep-2011 Nick Lewycky <nicholas@mxc.ca> Don't try to emit unsupported templated friend declarations. They're unsupported
and may very well be dependent-types, triggering an assertion in debug info
codegen.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138970 91177308-0d34-0410-b5e6-96231b3b80d8
ebug-info.cpp
49e34be6ae0c25b9843610cdd2fd6fea9cd8b870 30-Aug-2011 John McCall <rjmccall@apple.com> The size of struct UnwindException varies by platform with no
apparent general rule. Just special-case it as appropriate.
PR10789.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138792 91177308-0d34-0410-b5e6-96231b3b80d8
izeof-unwind-exception.cpp
2148011bffc011f8e5f5b6dc1e312fa4afbc10a9 30-Aug-2011 John McCall <rjmccall@apple.com> Be sure to emit lvalue-to-rvalue casts for loads from x-values.
Doing this happens to disrupt the pattern that ARC was looking for
for move optimizations, so we need to fix that simultaneously.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138789 91177308-0d34-0410-b5e6-96231b3b80d8
value-references.cpp
5f8d604246976a93a73549b07bbc8ee0b2061b50 27-Aug-2011 John McCall <rjmccall@apple.com> The lvalue-to-rvalue on structs in C++ is actually part
of default argument promotion and needs to happen unconditionally.
This is particularly semantically important in C++0x.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138691 91177308-0d34-0410-b5e6-96231b3b80d8
arargs.cpp
4418439220a8f8e0b1deffdccce2354854c702f5 26-Aug-2011 John McCall <rjmccall@apple.com> Since the 'is aliased' bit is critical for correctness in C++, it
really shouldn't be optional. Fix the remaining place where a
temporary was being passed as potentially-aliased memory.

Fixes PR10756.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138627 91177308-0d34-0410-b5e6-96231b3b80d8
onditional-expr-lvalue.cpp
90b2bdf3b96892ea44e5bf6869a92a08d09a6545 26-Aug-2011 John McCall <rjmccall@apple.com> An initialization does not alias.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138624 91177308-0d34-0410-b5e6-96231b3b80d8
xceptions.cpp
1366862c3f5d390140b5978380d9ac7317d60fc6 26-Aug-2011 John McCall <rjmccall@apple.com> The allocated exception slot does not alias anything; should fix self-host.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138615 91177308-0d34-0410-b5e6-96231b3b80d8
xceptions.cpp
410ffb2bc5f072d58a73c14560345bcf77dec1cc 26-Aug-2011 John McCall <rjmccall@apple.com> Track whether an AggValueSlot is potentially aliased, and do not
emit call results into potentially aliased slots. This allows us
to properly mark indirect return slots as noalias, at the cost
of requiring an extra memcpy when assigning an aggregate call
result into a l-value. It also brings us into compliance with
the x86-64 ABI.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138599 91177308-0d34-0410-b5e6-96231b3b80d8
emporaries.cpp
86_32-arguments.cpp
c44e94143e7c73542d370f9de3f4cf3b84518e61 20-Aug-2011 Chandler Carruth <chandlerc@gmail.com> Remove this test. It requires C++ standard library headers, which we'd
like to avoid within the Clang test suite, it doesn't verify the output
at all so it only servers as a test that Clang doesn't crash, and
finally all it does is declare a function that returns a vector and call
it. Probably the biggest thing being tested here is Clang's parsing of
the vector template, and we have lots of good template parsing tests. We
don't need another in codegen.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138197 91177308-0d34-0410-b5e6-96231b3b80d8
003-11-25-ReturningOpaqueByValue.cpp
3526e47a4a1c668374fb5ce79d62a8d39bb43d73 20-Aug-2011 NAKAMURA Takumi <geek4civic@gmail.com> test/CodeGenCXX/2003-11-25-ReturningOpaqueByValue.cpp: Mark XFAIL: win32.

FIXME: Avoid using system headers. clang cannot handle MS <vector> yet.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138190 91177308-0d34-0410-b5e6-96231b3b80d8
003-11-25-ReturningOpaqueByValue.cpp
f9a642f47e51ac66b91097f1f123e8ab0a06eb97 20-Aug-2011 Eric Christopher <echristo@apple.com> Remove this file, it's not much of a test and string headers cause
problems on windows.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138166 91177308-0d34-0410-b5e6-96231b3b80d8
004-09-27-CompilerCrash.cpp
aeac10e7b074d87522ccc5fad919417092971c57 20-Aug-2011 Eric Christopher <echristo@apple.com> Migrate, FileCheckize and update:

2003-11-02-WeakLinkage.cpp
2003-11-18-PtrMemConstantInitializer.cpp
2003-11-25-ReturningOpaqueByValue.cpp
2003-11-27-MultipleInheritanceThunk.cpp
2003-11-29-DuplicatedCleanupTest.cpp
2003-12-08-ArrayOfPtrToMemberFunc.cpp
2004-01-11-DynamicInitializedConstant.cpp

from llvm/test/FrontendC++.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138162 91177308-0d34-0410-b5e6-96231b3b80d8
003-11-02-WeakLinkage.cpp
003-11-18-PtrMemConstantInitializer.cpp
003-11-25-ReturningOpaqueByValue.cpp
003-11-27-MultipleInheritanceThunk.cpp
003-11-29-DuplicatedCleanupTest.cpp
003-12-08-ArrayOfPtrToMemberFunc.cpp
004-01-11-DynamicInitializedConstant.cpp
2368b6af4a5f0c07c7b77f8900a956dce75bbf84 20-Aug-2011 Eric Christopher <echristo@apple.com> Migrate, FileCheckize and update:

2004-03-08-ReinterpretCastCopy.cpp
2004-03-09-UnmangledBuiltinMethods.cpp
2004-03-15-CleanupsAndGotos.cpp
2004-06-08-LateTemplateInstantiation.cpp
2004-09-27-CompilerCrash.cpp
2004-09-27-DidntEmitTemplate.cpp
2004-11-27-ExceptionCleanupAssertion.cpp
2004-11-27-FriendDefaultArgCrash.cpp
2005-01-03-StaticInitializers.cpp

from llvm/test/FrontendC++.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138157 91177308-0d34-0410-b5e6-96231b3b80d8
004-03-08-ReinterpretCastCopy.cpp
004-03-09-UnmangledBuiltinMethods.cpp
004-03-15-CleanupsAndGotos.cpp
004-06-08-LateTemplateInstantiation.cpp
004-09-27-CompilerCrash.cpp
004-09-27-DidntEmitTemplate.cpp
004-11-27-ExceptionCleanupAssertion.cpp
004-11-27-FriendDefaultArgCrash.cpp
005-01-03-StaticInitializers.cpp
51abac1f2cbc10cf1bf38727e05ea9716b4c79a3 20-Aug-2011 Eric Christopher <echristo@apple.com> Modify the check line to be happier on windows.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138152 91177308-0d34-0410-b5e6-96231b3b80d8
006-11-20-GlobalSymbols.cpp
56a89eace2c91a9ef2fe8fb6cf43c630859a2a1e 20-Aug-2011 Eric Christopher <echristo@apple.com> Remove dead file.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138150 91177308-0d34-0410-b5e6-96231b3b80d8
006-11-20-GlobalSymbols.ll
16d482ebe8abb5a8eaf5d3407e90c96e6afa397b 20-Aug-2011 Eric Christopher <echristo@apple.com> Migrate, FileCheckize and update:

2005-02-11-AnonymousUnion.cpp
2005-02-13-BadDynamicInit.cpp
2005-02-14-BitFieldOffset.cpp
2005-02-19-BitfieldStructCrash.cpp
2005-02-19-UnnamedVirtualThunkArgument.cpp
2005-02-20-BrokenReferenceTest.cpp
2006-03-01-GimplifyCrash.cpp
2006-03-06-C++RecurseCrash.cpp
2006-09-12-OpaqueStructCrash.cpp
2006-10-30-ClassBitfield.cpp
2006-11-20-GlobalSymbols.cpp
2006-11-20-GlobalSymbols.ll
2006-11-30-ConstantExprCrash.cpp

from llvm/test/FrontendC++.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138148 91177308-0d34-0410-b5e6-96231b3b80d8
005-02-11-AnonymousUnion.cpp
005-02-13-BadDynamicInit.cpp
005-02-14-BitFieldOffset.cpp
005-02-19-BitfieldStructCrash.cpp
005-02-19-UnnamedVirtualThunkArgument.cpp
005-02-20-BrokenReferenceTest.cpp
006-03-01-GimplifyCrash.cpp
006-03-06-C++RecurseCrash.cpp
006-09-12-OpaqueStructCrash.cpp
006-10-30-ClassBitfield.cpp
006-11-20-GlobalSymbols.cpp
006-11-20-GlobalSymbols.ll
006-11-30-ConstantExprCrash.cpp
2ba4fde1915029f97c44e562e354320a5c10ac65 20-Aug-2011 Eric Christopher <echristo@apple.com> Try removing xfail and xtarget to see if this brings back a couple of bots.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138139 91177308-0d34-0410-b5e6-96231b3b80d8
009-03-17-dbg.cpp
3b20b9ee0da7f840369088874e3f806d71309d77 20-Aug-2011 Eric Christopher <echristo@apple.com> Migrate 2007-01-02-UnboundedArray.cpp from llvm/test/FrontendC++.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138138 91177308-0d34-0410-b5e6-96231b3b80d8
007-01-02-UnboundedArray.cpp
335552e3fff9f41067cccfd72557f801d398949a 20-Aug-2011 Eric Christopher <echristo@apple.com> Migrate:

2007-01-06-PtrMethodInit.cpp
2007-04-05-PackedBitFields-1.cpp
2007-04-05-PackedBitFieldsOverlap-2.cpp
2007-04-05-PackedBitFieldsOverlap.cpp
2007-04-05-PackedBitFieldsSmall.cpp
2007-04-05-StructPackedFieldUnpacked.cpp
2007-04-10-PackedUnion.cpp
2007-04-14-FNoBuiltin.cpp
2007-05-03-VectorInit.cpp
2007-07-29-RestrictPtrArg.cpp
2007-07-29-RestrictRefArg.cpp
2007-09-10-RecursiveTypeResolution.cpp

from llvm/test/FrontendC++ and FileCheckize where appropriate.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138134 91177308-0d34-0410-b5e6-96231b3b80d8
007-01-06-PtrMethodInit.cpp
007-04-05-PackedBitFields-1.cpp
007-04-05-PackedBitFieldsOverlap-2.cpp
007-04-05-PackedBitFieldsOverlap.cpp
007-04-05-PackedBitFieldsSmall.cpp
007-04-05-StructPackedFieldUnpacked.cpp
007-04-10-PackedUnion.cpp
007-04-14-FNoBuiltin.cpp
007-05-03-VectorInit.cpp
007-07-29-RestrictPtrArg.cpp
007-07-29-RestrictRefArg.cpp
007-09-10-RecursiveTypeResolution.cpp
e6452785f095db92887ad403299bfa616ce198e2 20-Aug-2011 Eric Christopher <echristo@apple.com> Remove 2008-10-29-WrongOffset.cpp since it requires a header file on all
platforms.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138118 91177308-0d34-0410-b5e6-96231b3b80d8
008-10-29-WrongOffset.cpp
97b02c5b69faf19b052f2f54062c00d3ee508e85 20-Aug-2011 Eric Christopher <echristo@apple.com> Migrate 2007-10-01-StructResize.cpp from llvm/test/FrontendC++.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138117 91177308-0d34-0410-b5e6-96231b3b80d8
007-10-01-StructResize.cpp
44f609cb821ca41505d748ec26006ff88a07d14b 20-Aug-2011 Eric Christopher <echristo@apple.com> Migrate 2008-01-12-VecInit.cpp from llvm/test/FrontendC++.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138114 91177308-0d34-0410-b5e6-96231b3b80d8
008-01-12-VecInit.cpp
3d8838033abf3e101fc6043da4b0907bec54a4ad 20-Aug-2011 Eric Christopher <echristo@apple.com> Migrate 2008-05-07-CrazyOffsetOf.cpp from llvm/test/FrontendC++.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138113 91177308-0d34-0410-b5e6-96231b3b80d8
008-05-07-CrazyOffsetOf.cpp
7b9bb7239efc46914980c94c2f63eacb70332d88 20-Aug-2011 Eric Christopher <echristo@apple.com> Migrate 2008-10-29-WrongOffset.cpp from llvm/test/FrontendC++.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138112 91177308-0d34-0410-b5e6-96231b3b80d8
008-10-29-WrongOffset.cpp
723665f4aef3f205efd52c4ea5ae3e96f21debc3 20-Aug-2011 Eric Christopher <echristo@apple.com> Migrate 2009-03-17-dbg.cpp from llvm/test/FrontendC++.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138111 91177308-0d34-0410-b5e6-96231b3b80d8
009-03-17-dbg.cpp
f54a225e288153687966d878aa3ad3a670f50a3b 20-Aug-2011 Eric Christopher <echristo@apple.com> Migrate 2009-04-23-bool2.cpp from llvm/test/FrontendC++.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138110 91177308-0d34-0410-b5e6-96231b3b80d8
009-04-23-bool2.cpp
e90e9c3856599ad700119f0fcf21ada8513b6484 20-Aug-2011 Eric Christopher <echristo@apple.com> Remove this test. It's failing and it's not that good of a test.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138106 91177308-0d34-0410-b5e6-96231b3b80d8
009-07-16-PrivateCopyConstructor.cpp
28e7d2ac03c33182dd748747f0038c30edfd0cb4 19-Aug-2011 Eric Christopher <echristo@apple.com> Migrate 2009-06-16-DebugInfoCrash.cpp from llvm/test/FrontendC++.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138099 91177308-0d34-0410-b5e6-96231b3b80d8
009-06-16-DebugInfoCrash.cpp
c0791f182496b8417e56b9766673e1e761d23eb1 19-Aug-2011 Eric Christopher <echristo@apple.com> Migrate 2009-07-16-PrivateCopyConstructor.cpp from llvm/test/FrontendC++.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138098 91177308-0d34-0410-b5e6-96231b3b80d8
009-07-16-PrivateCopyConstructor.cpp
59de6831d7150eef2420532b067b1dda02ae0d62 19-Aug-2011 Eric Christopher <echristo@apple.com> Migrate 2009-08-05-ZeroInitWidth.cpp from llvm/test/FrontendC++.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138097 91177308-0d34-0410-b5e6-96231b3b80d8
009-08-05-ZeroInitWidth.cpp
3592f64d12e1984cc5beba5c8ee73f96171094b8 19-Aug-2011 Eric Christopher <echristo@apple.com> Migrate 2009-07-16-Using.cpp from llvm/test/FrontendC++.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138096 91177308-0d34-0410-b5e6-96231b3b80d8
009-07-16-Using.cpp
07881a2bc0a3b6dfa3e902c36edd21f405d806bf 19-Aug-2011 Eric Christopher <echristo@apple.com> Migrate 2009-08-11-VectorRetTy.cpp from llvm/test/FrontendC++.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138095 91177308-0d34-0410-b5e6-96231b3b80d8
009-08-11-VectorRetTy.cpp
ea6de30238b26f4a318db92ce69b3776b707e363 19-Aug-2011 Eric Christopher <echristo@apple.com> Migrate 2009-09-09-packed-layout.cpp test from llvm/test/FrontendC++.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138090 91177308-0d34-0410-b5e6-96231b3b80d8
009-09-09-packed-layout.cpp
2c56377faf55ecd9afa7319297536d8a884f0d8b 19-Aug-2011 Eric Christopher <echristo@apple.com> Migrate 2009-10-27-crash.cpp from llvm/test/FrontendC++.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138089 91177308-0d34-0410-b5e6-96231b3b80d8
009-10-27-crash.cpp
8a8d6d829b84e2321e5f68392401e0cdf1942fee 19-Aug-2011 Eric Christopher <echristo@apple.com> Migrate 2009-12-23-MissingSext.cpp from test/FrontendC++ and modify
for sext -> and difference.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138088 91177308-0d34-0410-b5e6-96231b3b80d8
009-12-23-MissingSext.cpp
1999c7c8fa8393e0986b12328b2366a18d6038ff 19-Aug-2011 Nick Lewycky <nicholas@mxc.ca> Do not depend on the standard library on the system. Replace the #include with
the relevant section of libcxx.

As an aside, I am not at all confident that this test is still testing that it's
supposed to.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138075 91177308-0d34-0410-b5e6-96231b3b80d8
eak-external.cpp
80f5b16efb658dabbcf971f42ed8b789aaaa6baa 18-Aug-2011 Chandler Carruth <chandlerc@gmail.com> Always mark friend function declarations in class templates as
implicitly instantiable, even if we don't see a body on the friend
function declaration. The body may simply have not yet been attached.
This fixes PR10666.

There may be an alternate, preferred implementation strategy, see my
FIXME. Review would definitely be appreciated Doug. =D

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137934 91177308-0d34-0410-b5e6-96231b3b80d8
emplate-instantiation.cpp
5d6a4ad65726c1825134800cfb7cb5e81b4dc0f3 18-Aug-2011 John McCall <rjmccall@apple.com> Somehow I fouled up this test.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137882 91177308-0d34-0410-b5e6-96231b3b80d8
locks.cpp
d963c37eb912342c8325048749e449861cf0a6e3 17-Aug-2011 John McCall <rjmccall@apple.com> Gather cleanups correctly in block return statements.
Thanks to Ted for finding this with magic tools.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137877 91177308-0d34-0410-b5e6-96231b3b80d8
locks.cpp
4cbac2ace8db75b093e0b37b97aa4a751615020f 16-Aug-2011 Eric Christopher <echristo@apple.com> Migrate test from llvm/test/FrontendC++.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137773 91177308-0d34-0410-b5e6-96231b3b80d8
010-05-10-Var-DbgInfo.cpp
1c8346cebe574d07f94322de2e87739907f09c56 16-Aug-2011 Eric Christopher <echristo@apple.com> Migrate from llvm/test/FrontendC++ and FileCheckize.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137772 91177308-0d34-0410-b5e6-96231b3b80d8
010-05-11-alwaysinlineinstantiation.cpp
02394ff54d976b66e8301ed9b3bff8d8e6f50170 16-Aug-2011 Eric Christopher <echristo@apple.com> Migrate from llvm/test/FrontendC++.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137771 91177308-0d34-0410-b5e6-96231b3b80d8
010-05-12-PtrToMember-Dbg.cpp
6ddb0402ee416f477684c983512800a16db66a8e 16-Aug-2011 Eric Christopher <echristo@apple.com> Migrate test from llvm/test/FrontendC++ and FileCheckize.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137770 91177308-0d34-0410-b5e6-96231b3b80d8
010-06-21-LocalVarDbg.cpp
ffe57aafe6b3b034547831134f7899848a88353e 16-Aug-2011 Eric Christopher <echristo@apple.com> Migrate test from llvm/test/FrontendC++.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137769 91177308-0d34-0410-b5e6-96231b3b80d8
010-06-22-BitfieldInit.cpp
2b94c6954dc4040736c378dda869b685452ce1e0 16-Aug-2011 Eric Christopher <echristo@apple.com> Migrate from llvm/test/FrontendC++.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137768 91177308-0d34-0410-b5e6-96231b3b80d8
010-06-22-ZeroBitfield.cpp
b7f124c7452fb81fe869dc9eb0b4f58a81c067ca 16-Aug-2011 Eric Christopher <echristo@apple.com> Migrate from llvm/test/FrontendC++.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137767 91177308-0d34-0410-b5e6-96231b3b80d8
010-07-23-DeclLoc.cpp
61329d6c371365ad07fc8b5fb72fbaea453d05bf 16-Aug-2011 Eric Christopher <echristo@apple.com> Migrate test from llvm/test/FrontendC++.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137766 91177308-0d34-0410-b5e6-96231b3b80d8
64-ptr.cpp
b5715827f530579809f31d88be7ea9e5f337c2c3 16-Aug-2011 Eric Christopher <echristo@apple.com> Migrate from llvm/test/FrontendC++.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137765 91177308-0d34-0410-b5e6-96231b3b80d8
ember-alignment.cpp
b06cf89e0d7f5184dbc9e6a40b82ac4eafc12c61 16-Aug-2011 Eric Christopher <echristo@apple.com> Migrate varargs.cpp from llvm/test/FrontendC++.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137764 91177308-0d34-0410-b5e6-96231b3b80d8
arargs.cpp
41f001f0fcb665dd83fe19776fb1fb9997a1a242 16-Aug-2011 Eric Christopher <echristo@apple.com> Migrate weak-external.cpp from llvm/test/FrontendC++.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137763 91177308-0d34-0410-b5e6-96231b3b80d8
eak-external.cpp
32e48a363f33fcb1a728bb0d0424349c26cdc576 16-Aug-2011 Eric Christopher <echristo@apple.com> Migrate x86-64-abi-sret-vs-2word-struct-param.cpp from
llvm/test/FrontendC++ and FileCheckize.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137762 91177308-0d34-0410-b5e6-96231b3b80d8
86-64-abi-sret-vs-2word-struct-param.cpp
230768d5faef20e38083801e8a5c72c693958bad 16-Aug-2011 Eric Christopher <echristo@apple.com> Migrate thunk-linkonce-odr.cpp from llvm/test/FrontendC++.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137761 91177308-0d34-0410-b5e6-96231b3b80d8
hunk-linkonce-odr.cpp
d946bda308fa62804ec2007b2c2426e9c90e94c4 16-Aug-2011 Eric Christopher <echristo@apple.com> FileCheckize this test.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137671 91177308-0d34-0410-b5e6-96231b3b80d8
009-05-04-PureConstNounwind.cpp
041087caec03e8855770695d3eabc0feb031f6ed 16-Aug-2011 Eric Christopher <echristo@apple.com> 'pure' and 'const' functions should also be marked nounwind. Migrate
test over from llvm/test/FrontendC++ and update others to account for
the change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137669 91177308-0d34-0410-b5e6-96231b3b80d8
009-05-04-PureConstNounwind.cpp
ec24b0ed9ccf8b34986eadeb98dd0b4a0a50f6f2 14-Aug-2011 Eli Friedman <eli.friedman@gmail.com> Fix r137086 to actually work properly in general. PR10650.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137574 91177308-0d34-0410-b5e6-96231b3b80d8
eference-cast.cpp
a40b7f2c4a968a0f35f088cd009d671389b09ac2 13-Aug-2011 Eli Friedman <eli.friedman@gmail.com> Update clang tests for r137527.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137535 91177308-0d34-0410-b5e6-96231b3b80d8
ember-function-pointers.cpp
olatile-1.cpp
777d6e56ad9b1fed9866daf3ee6486d85c5b7d32 11-Aug-2011 John McCall <rjmccall@apple.com> Simplify EH control flow by observing that EH scopes form a simple
hierarchy of delegation, and that EH selector values are meaningful
function-wide (good thing, too, or inlining wouldn't work).
2,3d
1a
hierarchy of delegation and that EH selector values have the same
meaning everywhere in the function instead of being meaningful only
in the context of a specific selector.

This removes the need for routing edges through EH cleanups,
since a cleanup simply always branches to its enclosing scope.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137293 91177308-0d34-0410-b5e6-96231b3b80d8
estructors.cpp
h.cpp
xceptions.cpp
oto.cpp
artial-destruction.cpp
4dc41c9b766140b507980a13acccf2f05ed19cd3 10-Aug-2011 Douglas Gregor <dgregor@apple.com> Rewrite default initialization of anonymous structs/unions within a
constructor. Previously, we did some bogus recursion into the fields
of anonymous structs (recursively), which ended up building invalid
ASTs that would cause CodeGen to crash due to invalid GEPs.

Now, we instead build the default initializations based on the
indirect field declarations at the top level, which properly generates
the sequence of GEPs needed to initialize the proper member. Fixes
PR10512 and <rdar://problem/9924046>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137212 91177308-0d34-0410-b5e6-96231b3b80d8
nonymous-union-member-initializer.cpp
3f86ce1dc64a46d9cd3675787b8af32c9158abe6 09-Aug-2011 Douglas Gregor <dgregor@apple.com> Hand materialization of temporary expressions when emitting a scalar
expression. Fxies PR10592.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137086 91177308-0d34-0410-b5e6-96231b3b80d8
eference-cast.cpp
6b167f4fc40477847687c004b73166f53eeda8da 09-Aug-2011 Fariborz Jahanian <fjahanian@apple.com> Don't emit memcpy for copying fields of arrays of volatile elements.
Use the the path that generates a loop. This fixes
bogus error that clang puts out. // rdar://9894548



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137080 91177308-0d34-0410-b5e6-96231b3b80d8
opy-assign-volatile-synthesis.cpp
82cd2e5c15aa909ec9613c4228ab69e07f1c6f7a 06-Aug-2011 John McCall <rjmccall@apple.com> Be sure to destroy the normal entry block of a cleanup that we
aren't actually going to make a normal cleanup for. Sometimes
we optimistically create branches to such blocks for fixups,
and then we resolve the fixup to somewhere within the cleanup's
scope, and then the cleanup is actually not reachable for some
reason. The process of resolving the fixup leaves us with
switches whose default edge leads to the cleanup; we can
replace that with unreachable, then (in many cases) turn
the switch into an unconditional branch.

Fixes PR10467.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137011 91177308-0d34-0410-b5e6-96231b3b80d8
estructors.cpp
h.cpp
aebab72698ce5283395e61597a266fb04e62e390 02-Aug-2011 Eli Friedman <eli.friedman@gmail.com> PR10566: Make sure codegen for deleting an pointer to an incomplete type actually works.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136703 91177308-0d34-0410-b5e6-96231b3b80d8
elete.cpp
8c83031d91e36480e013eae5e31b62a3af5bd95e 27-Jul-2011 Eli Friedman <eli.friedman@gmail.com> Fix typo in test.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136251 91177308-0d34-0410-b5e6-96231b3b80d8
elete.cpp
91873b72bf01b7170f80154f3118300ff2eacd34 27-Jul-2011 Eli Friedman <eli.friedman@gmail.com> Make CodeGen for array delete involving incomplete class work without crashing. Should fix regression on g++.dg/init/delete1.C.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136241 91177308-0d34-0410-b5e6-96231b3b80d8
elete.cpp
3e23d68e2e642db107b78aac2bb27585ed0ef337 27-Jul-2011 Douglas Gregor <dgregor@apple.com> Disable the optimization that skips emission of complete, non-virtual
destructors of abstract classes. It's undefined behavior to actually
call the destructor (e.g., via delete), but the presence of code that
calls this destructor doesn't make the program
ill-formed. Fixes <rdar://problem/9819242>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136180 91177308-0d34-0410-b5e6-96231b3b80d8
bstract-class-ctors-dtors.cpp
01c5d1ddc8bd589b629b8c0185c279d090bba115 22-Jul-2011 Chris Lattner <sabre@nondot.org> fix PR10384: C++ allows external arrays of incomplete type as well.
Many thanks to Eli for reducing this great testcase.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135752 91177308-0d34-0410-b5e6-96231b3b80d8
ncomplete-types.cpp
018ec4172ee2a021dc38bb274c8b21ff610e2b44 22-Jul-2011 Chris Lattner <sabre@nondot.org> rename test.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135751 91177308-0d34-0410-b5e6-96231b3b80d8
ncomplete-types.cpp
nit-incomplete-type.cpp
410b12e55395216a02a848a791a38b0f153eba87 20-Jul-2011 Chris Lattner <sabre@nondot.org> fix PR10395 - array decay can produce an interesting type when
decaying an array of incomplete type (which has type [0 x i8]*) to a
normal pointer (which has incompletetype*).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135565 91177308-0d34-0410-b5e6-96231b3b80d8
nit-incomplete-type.cpp
b8981df0ed2886dfa221f2fad6d86872c39d3549 13-Jul-2011 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Reapply r134946 with fixes. Tested on Benjamin testcase and other test-suite failures.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135091 91177308-0d34-0410-b5e6-96231b3b80d8
86_64-arguments.cpp
84ff0fccb180098b70504c03c3072a19e6d573af 13-Jul-2011 John McCall <rjmccall@apple.com> Enforce access control for the destructor in a new[] expression and mark
it as used. Otherwise, we can fail to instantiate or validate the destructor,
which can lead to crashes in IR gen like PR10351.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135073 91177308-0d34-0410-b5e6-96231b3b80d8
artial-destruction.cpp
fbf780a9d1dbb191fc40c8af967c590e08724b74 13-Jul-2011 John McCall <rjmccall@apple.com> Okay, that rule about zero-length arrays applies to destroying
them, too.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135038 91177308-0d34-0410-b5e6-96231b3b80d8
elete.cpp
dd376cae98ce4d0ab92c90d3e9c01ee19e919f44 13-Jul-2011 John McCall <rjmccall@apple.com> Arrays are permitted to be zero-length in some situations.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135036 91177308-0d34-0410-b5e6-96231b3b80d8
onstructors.cpp
c3c0766277cd64bf117450a1519c9cf762d994d4 13-Jul-2011 John McCall <rjmccall@apple.com> Convert the standard default-construction loops to use phis and
partial destruction.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135033 91177308-0d34-0410-b5e6-96231b3b80d8
ew-overflow.cpp
ew.cpp
artial-destruction.cpp
alue-init.cpp
e7003b72e691c4d83ba5516c58bccc2f2a4b3fe0 13-Jul-2011 Douglas Gregor <dgregor@apple.com> Eliminate an incomplete/incorrect attempt to provide support for C++0x
unrestricted unions, which ended up attempting to initialize objects
in a union (which CodeGen isn't prepared for). Fixes PR9683.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135027 91177308-0d34-0410-b5e6-96231b3b80d8
nonymous-union-member-initializer.cpp
7cfd76cb5cec2aa7aaa4176339c806de6ec85a79 13-Jul-2011 John McCall <rjmccall@apple.com> Switch delete[] IR-generation over to the destroy framework,
which implicitly makes it EH-safe as well.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135025 91177308-0d34-0410-b5e6-96231b3b80d8
elete.cpp
a8b20f70d562cdc2679f82d409832b79fc415277 13-Jul-2011 Douglas Gregor <dgregor@apple.com> When compiling ::delete for a class with a virtual destructor, call
the complete destructor and then invoke the global delete
operator. Previously, we would invoke the deleting destructor, which
calls the wrong delete operator. Fixes PR10341.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135021 91177308-0d34-0410-b5e6-96231b3b80d8
elete.cpp
f1588660c109610e6a79c786b83b7c9bbd6ed31e 12-Jul-2011 Douglas Gregor <dgregor@apple.com> Improve name mangling for instantiation-dependent types that are not
dependent. This covers an odd class of types such as

int (&)[sizeof(sizeof(T() + T()))];

which involve template parameters but, because of some trick typically
involving a form of expression that is never type-dependent, resolve
down to a non-dependent type. Such types need to be mangled
essentially as they were written in the source code (involving
template parameters), rather than via their canonical type.

In general, instantiation-dependent types should be mangled as
they were written in the source. However, since we can't do that now
without non-trivial refactoring of the AST (see the new FIXME), I've
gone for this partial solution: only use the as-written-in-the-source
mangling for these strange types that are instantiation-dependent but
not dependent. This provides better compatibility with previous
incarnations of Clang and with GCC. In the future, we'd like to get
this right.

Fixes <rdar://problem/9663282>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134984 91177308-0d34-0410-b5e6-96231b3b80d8
angle.cpp
91832368ef1c1158c4351bdccaa141dac818f04e 12-Jul-2011 Douglas Gregor <dgregor@apple.com> Implement name mangling for sizeof...(function parameter pack).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134974 91177308-0d34-0410-b5e6-96231b3b80d8
angle.cpp
3a2b657088de9413714a51bff153a59565adb3ef 12-Jul-2011 Chris Lattner <sabre@nondot.org> Fix a problem Eli ran into where we now reject incomplete arrays of
uncompleted struct types. We now do what llvm-gcc does and compile
them into [i8 x 0]. If the type is later completed, we make sure that
it is appropriately cast.

We compile the terrible example to something like this now:

%struct.A = type { i32, i32, i32 }

@g = external global [0 x i8]

define void @_Z1fv() nounwind {
entry:
call void @_Z3fooP1A(%struct.A* bitcast ([0 x i8]* @g to %struct.A*))
ret void
}

declare void @_Z3fooP1A(%struct.A*)

define %struct.A* @_Z2f2v() nounwind {
entry:
ret %struct.A* getelementptr inbounds ([0 x %struct.A]* bitcast ([0 x i8]* @g to [0 x %struct.A]*), i32 0, i64 1)
}





git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134972 91177308-0d34-0410-b5e6-96231b3b80d8
nit-incomplete-type.cpp
cd87d1e4d1b0097877b0f9c2065900717d2aacba 12-Jul-2011 Chris Lattner <sabre@nondot.org> fix an unintended behavior change in the type system rewrite, which caused us to compile
stuff like this:

typedef struct {
int x, y, z;
} foo_t;

foo_t g;

into:
%"struct.<anonymous>" = type { i32, i32, i32 }
we now get:
%struct.foo_t = type { i32, i32, i32 }

This doesn't change the behavior of the compiler, but makes the IR much easier to read.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134969 91177308-0d34-0410-b5e6-96231b3b80d8
ointers-to-data-members.cpp
1961791626ab0ebbd8bf901a37476d527def4edb 12-Jul-2011 Douglas Gregor <dgregor@apple.com> Mangle dependent template names of unknown arity

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134967 91177308-0d34-0410-b5e6-96231b3b80d8
angle.cpp
edee94b615059ad178b06a489312eca6e049609a 12-Jul-2011 Douglas Gregor <dgregor@apple.com> Implement the Itanium C++ ABI's mangling rule for
non-instantiation-dependent sizeof and alignof expressions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134963 91177308-0d34-0410-b5e6-96231b3b80d8
angle.cpp
5e78cd43a033b3dedf741fca4fa1652f9cb3e41c 12-Jul-2011 Douglas Gregor <dgregor@apple.com> Allow us to compute linkage et al for instantiation-dependent types.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134932 91177308-0d34-0410-b5e6-96231b3b80d8
angle.cpp
2b30dcfb769e4015f8d41c5c9a4e723ff3d522a0 11-Jul-2011 John McCall <rjmccall@apple.com> Emit partial destruction of structs with initializer lists.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134913 91177308-0d34-0410-b5e6-96231b3b80d8
artial-destruction.cpp
2673c68aa58e277ebc755b71d81aca618cdedbf9 11-Jul-2011 John McCall <rjmccall@apple.com> Fix a lot of problems with the partial destruction of arrays:
- an off-by-one error in emission of irregular array limits for
InitListExprs
- use an EH partial-destruction cleanup within the normal
array-destruction cleanup
- get the branch destinations right for the empty check
Also some refactoring which unfortunately obscures these changes.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134890 91177308-0d34-0410-b5e6-96231b3b80d8
estructors.cpp
artial-destruction.cpp
04af8aa157c55198bba9231dd6d811cf7ecda9a5 10-Jul-2011 Chris Lattner <sabre@nondot.org> relax this test a bit to hopefully work with VC++


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134870 91177308-0d34-0410-b5e6-96231b3b80d8
nonymous-union-member-initializer.cpp
3ade97504790bbc5a148baa5b3f7e577aed9c1c6 10-Jul-2011 Chris Lattner <sabre@nondot.org> implement a nice new optimization: CodeGenTypes::UpdateCompletedType
is called whenever a tag type is completed. We previously used that
as the sign to layout the codegen representation for the tag type,
which worked but meant that we laid out *every* completed type, whether
it was used or not.

Now we just lay out the type if we've already seen it somehow else.
This means that we lay out types we've used but haven't seen a body
for, but we don't lay out tons of stuff that noone cares about.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134866 91177308-0d34-0410-b5e6-96231b3b80d8
emplate-anonymous-types.cpp
57eb23f34ed2586069273c66f1a9994fe2b42967 10-Jul-2011 Chris Lattner <sabre@nondot.org> keep track of whether being in a RS_StructPointer state
caused us to skip layout out a function accurately. If
so, flush the type cache for both the function and struct
case to ensure that any pointers to the functions get
recomputed. This is overconservative, but with this patch
clang can build itself again.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134863 91177308-0d34-0410-b5e6-96231b3b80d8
nonymous-union-member-initializer.cpp
f0a8679b6e6635117533b89894646f1450cea25b 10-Jul-2011 Chris Lattner <sabre@nondot.org> Fix the clang bootstrap and Jay's testcase from llvm-dev by being completely
conservative when converting a functiontype to IR when in a "pointer within
a struct" context. This has the unfortunate sideeffect of compiling all
function pointers inside of structs into "{}*" which, though correct, is
ugly. This has the positive side effect of being correct, and it is pretty
straight-forward to improve on this.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134861 91177308-0d34-0410-b5e6-96231b3b80d8
nonymous-union-member-initializer.cpp
063481a3ed951a0be68a5ba9225176c3eb8fa320 09-Jul-2011 Chris Lattner <sabre@nondot.org> fix this on 32-bit hosts.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134840 91177308-0d34-0410-b5e6-96231b3b80d8
irt-call-offsets.cpp
9cbe4f0ba01ec304e1e3d071c071f7bca33631c0 09-Jul-2011 Chris Lattner <sabre@nondot.org> clang side to match the LLVM IR type system rewrite patch.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134831 91177308-0d34-0410-b5e6-96231b3b80d8
locks.cpp
lass-layout.cpp
onstructors.cpp
opy-constructor-elim-2.cpp
opy-initialization.cpp
elete.cpp
estructors.cpp
h.cpp
or-range.cpp
lobal-init.cpp
angle-subst-std.cpp
angle-template.cpp
ember-function-pointers.cpp
ew-overflow.cpp
ointers-to-data-members.cpp
eferences.cpp
tatic-init-3.cpp
emplate-anonymous-types.cpp
irt-call-offsets.cpp
irtual-bases.cpp
irtual-functions-incomplete-types.cpp
olatile-1.cpp
table-pointer-initialization.cpp
86_32-arguments.cpp
bdc4d80956c83a486e58d3df6bb524a1f66ff574 09-Jul-2011 John McCall <rjmccall@apple.com> A number of array-related IR-gen cleanups.
- Emit default-initialization of arrays that were partially initialized
with initializer lists with a loop, rather than emitting the default
initializer N times;
- support destroying VLAs of non-trivial type, although this is not
yet exposed to users; and
- support the partial destruction of arrays initialized with
initializer lists when an initializer throws an exception.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134784 91177308-0d34-0410-b5e6-96231b3b80d8
estructors.cpp
emporaries.cpp
alue-init.cpp
19f74acdf8842ceece578b7307884f5ba22d7f59 06-Jul-2011 Rafael Espindola <rafael.espindola@gmail.com> Use attributes from the definition (if available) when
instantiating functions.

Fixes PR10272.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134491 91177308-0d34-0410-b5e6-96231b3b80d8
oinline-template.cpp
c8fc90a854b4ccba21c85884676a80334159dd94 06-Jul-2011 John McCall <rjmccall@apple.com> When tree-transforming an expression sequence, always flag expanded
variadic argument pack expansions as having changed, rather than doing
it for each changed expansion, which leaves out zero-argument packs
with catastrophic consequences.

Fixes PR10260.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134483 91177308-0d34-0410-b5e6-96231b3b80d8
ariadic-templates.cpp
e67d1512f299e7f32182553f9941d61dae4f433e 01-Jul-2011 Douglas Gregor <dgregor@apple.com> Emit guard variables for any weak global that has a run-time
initializer. Previously, we only used guard variables for weak static
data members. Fixes <rdar://problem/9692249>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134266 91177308-0d34-0410-b5e6-96231b3b80d8
lobal-init.cpp
df9a41f3c1d1ca5aec6e2c17e38c29cff72b8726 01-Jul-2011 Douglas Gregor <dgregor@apple.com> Fix testcase

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134262 91177308-0d34-0410-b5e6-96231b3b80d8
onstructor-init.cpp
bcc3e660a1fdc19722157ef3e2f133418856ca3d 01-Jul-2011 Douglas Gregor <dgregor@apple.com> Don't zero-initialize default-initialized local variables that have
trivial default constructors. This generated-code regression was
caused by r131796, which had simplified the handling of default
initialization in Sema. Fixes <rdar://problem/9694300>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134260 91177308-0d34-0410-b5e6-96231b3b80d8
onstructor-init.cpp
35ee32e800145a535f2676898f8f06f7ae6e9b43 01-Jul-2011 John McCall <rjmccall@apple.com> Just mangle substituted template parameter types as unresolved types.
This is kindof questionable but seems to do more-or-less the right thing.
This is not a particularly friendly part of the ABI.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134227 91177308-0d34-0410-b5e6-96231b3b80d8
angle.cpp
561f81243f665cf2001caadc45df505f826b72d6 01-Jul-2011 Douglas Gregor <dgregor@apple.com> Introduce the notion of instantiation dependence into Clang's AST. A
type/expression/template argument/etc. is instantiation-dependent if
it somehow involves a template parameter, even if it doesn't meet the
requirements for the more common kinds of dependence (dependent type,
type-dependent expression, value-dependent expression).

When we see an instantiation-dependent type, we know we always need to
perform substitution into that instantiation-dependent type. This
keeps us from short-circuiting evaluation in places where we
shouldn't, and lets us properly implement C++0x [temp.type]p2.

In theory, this would also allow us to properly mangle
instantiation-dependent-but-not-dependent decltype types per the
Itanium C++ ABI, but we aren't quite there because we still mangle
based on the canonical type in cases like, e.g.,

template<unsigned> struct A { };
template<typename T>
void f(A<sizeof(sizeof(decltype(T() + T())))>) { }
template void f<int>(A<sizeof(sizeof(int))>);

and therefore get the wrong answer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134225 91177308-0d34-0410-b5e6-96231b3b80d8
angle.cpp
68a51a7f9c01ccbe7232d41beeb4deb26f40b013 01-Jul-2011 John McCall <rjmccall@apple.com> Change the mangling of enclosing template template parameters
that serve as the base template name of an unresolved-name to
be mangled as a substitution.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134213 91177308-0d34-0410-b5e6-96231b3b80d8
angle.cpp
ded137fcab19f0aace08a28b5c91574e6b23debc 29-Jun-2011 Eli Friedman <eli.friedman@gmail.com> We don't pass classes with a copy-constructor or destructor byval, so the address takes up an integer register (if one is available). Make sure the x86-64 ABI implementation takes that into account properly.

The fixed implementation is compatible with the implementation both gcc and llvm-gcc use.

rdar://9686430 . (This is the issue that was reported in the thread "[LLVMdev] Segfault calling LLVM libs from a clang-compiled executable".)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134059 91177308-0d34-0410-b5e6-96231b3b80d8
86_64-arguments.cpp
d3d49bb27c7ffd9accc0a6c00e887111c0348845 28-Jun-2011 John McCall <rjmccall@apple.com> Be more thorough about mangling unresolved types.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134011 91177308-0d34-0410-b5e6-96231b3b80d8
angle.cpp
6ce51ee94bd300c5f30930d96436fd53e4ea89a7 28-Jun-2011 John McCall <rjmccall@apple.com> Don't factor in visibility for templates and template arguments
for explicit specializations with their own explicit visibility.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133958 91177308-0d34-0410-b5e6-96231b3b80d8
isibility.cpp
d0e8b782787638bcc9c57022e47c28d3529f02d4 27-Jun-2011 Douglas Gregor <dgregor@apple.com> When instantiating a C++ "new" expression, don't fake source locations
for the '(' and ')' around the initializer unless we actually have an
initializer. Fixes PR10197, an issue where we were value-initializing
rather than default-initializing.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133913 91177308-0d34-0410-b5e6-96231b3b80d8
ew.cpp
913dab2525cc705e5238023a446f5371fa411883 25-Jun-2011 John McCall <rjmccall@apple.com> Mark the multiply which occurs as part of performing pointer
arithmetic on a VLA as 'nsw', per discussion with djg, and
implement pointer arithmetic (other than array accesses) and
pointer subtraction for VLA types.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133855 91177308-0d34-0410-b5e6-96231b3b80d8
la.cpp
88c1dfccf8c5d487408e3365c752ed24c867c7ce 25-Jun-2011 John McCall <rjmccall@apple.com> Two more test cases which have been long uncommitted.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133842 91177308-0d34-0410-b5e6-96231b3b80d8
ew-overflow.cpp
bc8d40d85f3fa1e34569834916f18fecaa635152 24-Jun-2011 John McCall <rjmccall@apple.com> Change the IR-generation of VLAs so that we capture bounds,
not sizes; so that we use well-typed allocas; and so that we
properly recurse through the full set of variably-modified types.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133827 91177308-0d34-0410-b5e6-96231b3b80d8
la.cpp
26a6ec7be5ad57aa380f62aa2c39cd073e22d9dc 22-Jun-2011 John McCall <rjmccall@apple.com> Fix the mangling of dependent-scope decl ref expressions so that they
use the unresolved-name production correctly.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133554 91177308-0d34-0410-b5e6-96231b3b80d8
angle-template.cpp
angle.cpp
03e80030515c800d1ab44125b9052dfffd1bd04c 21-Jun-2011 Douglas Gregor <dgregor@apple.com> Introduce a new AST node describing reference binding to temporaries.

MaterializeTemporaryExpr captures a reference binding to a temporary
value, making explicit that the temporary value (a prvalue) needs to
be materialized into memory so that its address can be used. The
intended AST invariant here is that a reference will always bind to a
glvalue, and MaterializeTemporaryExpr will be used to convert prvalues
into glvalues for that binding to happen. For example, given

const int& r = 1.0;

The initializer of "r" will be a MaterializeTemporaryExpr whose
subexpression is an implicit conversion from the double literal "1.0"
to an integer value.

IR generation benefits most from this new node, since it was
previously guessing (badly) when to materialize temporaries for the
purposes of reference binding. There are likely more refactoring and
cleanups we could perform there, but the introduction of
MaterializeTemporaryExpr fixes PR9565, a case where IR generation
would effectively bind a const reference directly to a bitfield in a
struct. Addresses <rdar://problem/9552231>.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133521 91177308-0d34-0410-b5e6-96231b3b80d8
eferences.cpp
c5cbb909e8a27deb8f1a2b6b7bf56a96051af81a 20-Jun-2011 Chris Lattner <sabre@nondot.org> Update to match mainline ConstantStruct::get API change. Also, use
ConvertType on InitListExprs as they are being converted. This is
needed for a forthcoming patch, and improves the IR generated anyway
(see additional type names in testcases).

This patch also converts a bunch of std::vector's in CGObjCMac to use
C arrays. There are a ton more that should be converted as well.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133413 91177308-0d34-0410-b5e6-96231b3b80d8
onst-init.cpp
0502a224984a26087ea4d64e8e5d2dd4dca432f6 17-Jun-2011 John McCall <rjmccall@apple.com> Perform an acquire memory barrier on the fast path of a thread-safe
static initializer check, as required by the Itanium ABI.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133250 91177308-0d34-0410-b5e6-96231b3b80d8
tatic-init.cpp
751ec9be961888f14342fb63b39bf8727f0dee49 17-Jun-2011 Douglas Gregor <dgregor@apple.com> Implement proper support for generating code for compound literals in
C++, which means:
- binding the temporary as needed in Sema, so that we generate the
appropriate call to the destructor, and
- emitting the compound literal into the appropriate location for
the aggregate, rather than trying to emit it as a temporary and
memcpy() it.

Fixes PR10138 / <rdar://problem/9615901>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133235 91177308-0d34-0410-b5e6-96231b3b80d8
ompound-literals.cpp
b77115d7b988f55f961e24129a62f20dfd066a94 17-Jun-2011 John McCall <rjmccall@apple.com> When synthesizing implicit copy/move constructors and copy/move assignment
operators, don't make an initializer or sub-operation for zero-width
bitfields.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133221 91177308-0d34-0410-b5e6-96231b3b80d8
mplicit-copy-constructor.cpp
065bb5e034e2a5b6041c3a1a2df9a0ad5bf85722 15-Jun-2011 Eli Friedman <eli.friedman@gmail.com> Fix a couple more tests with ARM ABI.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133073 91177308-0d34-0410-b5e6-96231b3b80d8
ember-init-assignment.cpp
isibility-inlines-hidden.cpp
12e9f8edcfdafcc78bd30f607c10fef8b3fa9fa6 14-Jun-2011 Eli Friedman <eli.friedman@gmail.com> Whack a bunch of tests in CodeGenCXX to work on ARM (using ARM ABI). Batch 2 of 3.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133011 91177308-0d34-0410-b5e6-96231b3b80d8
opy-constructor-elim-2.cpp
efault-constructor-default-argument.cpp
angle-template.cpp
ember-init-assignment.cpp
ember-init-ctor.cpp
rvo.cpp
r9965.cpp
tmtexpr.cpp
irtual-base-destructor-call.cpp
irtual-pseudo-destructor-call.cpp
41f1fd40a962c2abea0324f05dffaad4e770d84d 14-Jun-2011 Eli Friedman <eli.friedman@gmail.com> Whack a bunch of tests in CodeGenCXX to work on ARM (using ARM ABI). Batch 1 of 3 or so.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132945 91177308-0d34-0410-b5e6-96231b3b80d8
ttr-used.cpp
lock-byref-cxx-objc.cpp
opy-constructor-elim-2.cpp
opy-constructor-synthesis-2.cpp
xx0x-defaulted-templates.cpp
xx0x-delegating-ctors.cpp
efault-constructor-template-member.cpp
lide-call-reference.cpp
7a614d8380297fcd2bc23986241905d97222948c 11-Jun-2011 Richard Smith <richard-llvm@metafoo.co.uk> Implement support for C++11 in-class initialization of non-static data members.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132878 91177308-0d34-0410-b5e6-96231b3b80d8
ember-init-ctor.cpp
cb5d2d0647fdab2e36c85b417e03bf18916ce10c 10-Jun-2011 Eli Friedman <eli.friedman@gmail.com> PR10120: Make CodeGenModule::getVTableLinkage use NamedDecl::getLinkage to determine whether the vtable should be externally visible, instead of a rough approximation of it which messes up with templates.

While I'm here, zap the other user of isInAnonymousNamespace outside of Decl.cpp.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132861 91177308-0d34-0410-b5e6-96231b3b80d8
nternal-linkage.cpp
63f62df485de57c6b0db167d96bb0f92562adb7b 05-Jun-2011 Douglas Gregor <dgregor@apple.com> Add name mangling for expr .* expr. Fixes PR9983 / <rdar://problem/9486332>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132659 91177308-0d34-0410-b5e6-96231b3b80d8
angle-exprs.cpp
5a2675d23796e8b75089acc8199b60ab61c2a19f 04-Jun-2011 Galina Kistanova <gkistanova@gmail.com> These tests require particular registered targets. Declared as such.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132623 91177308-0d34-0410-b5e6-96231b3b80d8
ebug-info-pubtypes.cpp
lobal-array-destruction.cpp
0ccb31c389a09216a5b60cf05bd01516ddbe8d4f 04-Jun-2011 Galina Kistanova <gkistanova@gmail.com> These tests require particular registered targets. Declared as such.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132600 91177308-0d34-0410-b5e6-96231b3b80d8
R5050-constructor-conversion.cpp
rray-construction.cpp
rray-operator-delete-call.cpp
all-arg-zero-temp.cpp
ast-conversion.cpp
onstructor-conversion.cpp
onstructor-default-arg.cpp
onstructor-for-array-members.cpp
onstructor-template.cpp
onvert-to-fptr.cpp
opy-assign-synthesis-1.cpp
ecl-ref-init.cpp
efault-constructor-for-members.cpp
erived-to-base-conv.cpp
tr-to-member-function.cpp
1c29652fbcd097aa6c21511c9f4f886bb3f3a8af 31-May-2011 Devang Patel <dpatel@apple.com> List c++ class type as public type in dwarf debug info output.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132357 91177308-0d34-0410-b5e6-96231b3b80d8
ebug-info-pubtypes.cpp
0683a1418b28b289eca4cb602ac69780f9e0a609 31-May-2011 Chandler Carruth <chandlerc@gmail.com> Expand the coverage of the warning for constants on the RHS of logical operands:

return f() || -1;

where the user meant to write '|'.

This bootstraps without any additional warnings.

Patch by Richard Trieu.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132327 91177308-0d34-0410-b5e6-96231b3b80d8
tatic-init-2.cpp
93c332a8ba2c193c435b293966d343dab15f555b 28-May-2011 John McCall <rjmccall@apple.com> Convert Clang over to resuming from landing pads with llvm.eh.resume.
It's quite likely that this will explode, but I need to know how. :)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132269 91177308-0d34-0410-b5e6-96231b3b80d8
rm.cpp
estructors.cpp
h.cpp
xceptions.cpp
oto.cpp
rvo.cpp
hreadsafe-statics-exceptions.cpp
addd80d1c80d1e9f249988452103c93a564945f0 27-May-2011 Eli Friedman <eli.friedman@gmail.com> Back out r132209; it's breaking nightly tests.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132219 91177308-0d34-0410-b5e6-96231b3b80d8
rm.cpp
estructors.cpp
h.cpp
rvo.cpp
hreadsafe-statics-exceptions.cpp
0903421e36c174a82597f83bd296f3cd5b5f169b 27-May-2011 John McCall <rjmccall@apple.com> Implement a new, much improved version of the cleanup hack. We just need
to be careful to emit landing pads that are always prepared to handle a
cleanup path. This is correct mostly because of the fix to the LLVM
inliner, r132200.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132209 91177308-0d34-0410-b5e6-96231b3b80d8
rm.cpp
estructors.cpp
h.cpp
rvo.cpp
hreadsafe-statics-exceptions.cpp
e4d645cbe073042d8abc1a4eb600af4ff7a8dffb 27-May-2011 Chandler Carruth <chandlerc@gmail.com> Enhance Clang to start instantiating static data member definitions
within class templates when they are necessary to complete the type of
the member. The canonical example is code like:

template <typename T> struct S {
static const int arr[];
static const int x;
static int f();
};

template <typename T> const int S<T>::arr[] = { 1, 2, 3 };
template <typename T> const int S<T>::x = sizeof(arr) / sizeof(arr[0]);
template <typename T> int S<T>::f() { return x; }

int x = S<int>::f();

We need to instantiate S<T>::arr's definition to pick up its initializer
and complete the array type. This involves new code to specially handle
completing the type of an expression where the type alone is
insufficient. It also requires *updating* the expression with the newly
completed type. Fortunately, all the other infrastructure is already in
Clang to do the instantiation, do the completion, and prune out the
unused bits of code that result from this instantiation.

This addresses the initial bug in PR10001, and will be a step to
fleshing out other cases where we need to work harder to complete an
expression's type. Who knew we still had missing C++03 "features"?

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132172 91177308-0d34-0410-b5e6-96231b3b80d8
emplate-instantiation.cpp
2545ce1c76236c2277b90dbd4f7d01ef13fe0823 24-May-2011 Sean Hunt <scshunt@csclub.uwaterloo.ca> Delete the extraneous return statement that was causing my earlier
issues and also add a test.

We should now handle defaulted members of templates properly. No
comment as to whether or not this also holds for templated functions,
but defaulting those is kind of insane.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131938 91177308-0d34-0410-b5e6-96231b3b80d8
xx0x-defaulted-templates.cpp
eb88ae5f9acdd17ec76fb83e151a77e25e4e8f31 23-May-2011 Sean Hunt <scshunt@csclub.uwaterloo.ca> Correctly propagate defaultedness across template instantiation. This
fixes PR9965, but we're not out of the water yet, as we do not
successfully handle out-of-line definitions, due to my utter
misunderstanding of how we manage templates.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131920 91177308-0d34-0410-b5e6-96231b3b80d8
r9965.cpp
de92d739ba0ef42a5a7dcfd6e170329549d0716b 23-May-2011 Chris Lattner <sabre@nondot.org> make the x86-32 backend specify a byval alignment, even when the
code generator will do it. With this patch, clang compiles the example
in PR9794 to not have an alloca temporary.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131881 91177308-0d34-0410-b5e6-96231b3b80d8
86_32-arguments.cpp
930a9abb7eb171d706c9e17a27bbcd267f0d9b3d 21-May-2011 Douglas Gregor <dgregor@apple.com> Fix our handling of the warning when one tries to pass a
non-POD/non-trivial object throuugh a C-style varargs. The warning
itself was default-mapped to error, but can be downgraded, but we were
treating it in Sema like a hard error, silently dropping the call.

Instead, treat this problem like a warning, and do what the warning
says we do: abort at runtime. To do so, we fake up a __builtin_trap()
expression that gets evaluated as part of the argument.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131805 91177308-0d34-0410-b5e6-96231b3b80d8
ararg-non-pod.cpp
575a1c9dc8dc5b4977194993e289f9eda7295c39 20-May-2011 Douglas Gregor <dgregor@apple.com> Introduce Type::isSignedIntegerOrEnumerationType() and
Type::isUnsignedIntegerOrEnumerationType(), which are like
Type::isSignedIntegerType() and Type::isUnsignedIntegerType() but also
consider the underlying type of a C++0x scoped enumeration type.

Audited all callers to the existing functions, switching those that
need to also handle scoped enumeration types (e.g., those that deal
with constant values) over to the new functions. Fixes PR9923 /
<rdar://problem/9447851>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131735 91177308-0d34-0410-b5e6-96231b3b80d8
coped-enums.cpp
0ee33912f8ec3453856c8a32ed2c2e8007bed614 19-May-2011 Sebastian Redl <sebastian.redl@getdesigned.at> Reapply r121528, fixing PR9941 by delaying the exception specification check for destructors until the class is complete and destructors have been adjusted.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131632 91177308-0d34-0410-b5e6-96231b3b80d8
xx0x-delegating-ctors.cpp
h.cpp
1d78032167c2f2d470e4270aadcb07ff71e6c7e1 18-May-2011 Sean Hunt <scshunt@csclub.uwaterloo.ca> Revert r121528 as it breaks a simple testcase, which leads to, among
other things, libcxx not building.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131573 91177308-0d34-0410-b5e6-96231b3b80d8
xx0x-delegating-ctors.cpp
h.cpp
0320a1d7b3305d1aef36ee68b77bebe170e1d30a 18-May-2011 Sebastian Redl <sebastian.redl@getdesigned.at> Implement implicit exception specifications of destructors.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131528 91177308-0d34-0410-b5e6-96231b3b80d8
xx0x-delegating-ctors.cpp
h.cpp
492bafc66bdd22128327aab11804db476688b44e 17-May-2011 John McCall <rjmccall@apple.com> Revert r131434, my commit disabling the complete-object constructor
optimization for abstract classes; there was a misunderstanding, and
it turns out that there are no kexts which rely on this.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131489 91177308-0d34-0410-b5e6-96231b3b80d8
pple-kext-symbols.cpp
7aa488a7fc5c3a8cd1a2b93476150e9737760713 17-May-2011 Ted Kremenek <kremenek@apple.com> Fix crash on C++ code when compiling with -finstrument-functions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131435 91177308-0d34-0410-b5e6-96231b3b80d8
nstrument-functions.cpp
3217395e88e661e2a1c2b7eecb59629f67945b41 17-May-2011 John McCall <rjmccall@apple.com> Emit complete-object constructors for abstract classes in kext mode for
reasons that honestly really, really need to be looked into.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131434 91177308-0d34-0410-b5e6-96231b3b80d8
pple-kext-symbols.cpp
e3d6cf2149beb1c215ea6e87023c27b4f37712ad 16-May-2011 Anders Carlsson <andersca@mac.com> Fix another regression from the "skip vtable pointer initialization"
optimization. Make sure to require a vtable when trying to get the address
of a VTT, otherwise we would never end up emitting the VTT.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131400 91177308-0d34-0410-b5e6-96231b3b80d8
angle-subst-std.cpp
kip-vtable-pointer-initialization.cpp
irtual-base-destructor-call.cpp
b1c98a35fbd49d6404a72db4aca2ceda352380c7 16-May-2011 John McCall <rjmccall@apple.com> Don't actually emit calls to the reserved global placement new and delete
operators; their semantics are guaranteed by the language.

If someone wants to argue that freestanding compiles shouldn't recognize
this, I might be convinceable.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131395 91177308-0d34-0410-b5e6-96231b3b80d8
ew.cpp
adf5dc340db3ea99de5fe3f6c42cfee1807d445e 15-May-2011 Anders Carlsson <andersca@mac.com> Re-enable the fix for PR9181 now that all the edge cases are handled.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131385 91177308-0d34-0410-b5e6-96231b3b80d8
angle-subst-std.cpp
kip-vtable-pointer-initialization.cpp
7d16627081caede9691a6f46b796da4073ac14ad 15-May-2011 John McCall <rjmccall@apple.com> The array-size operand to a new-expression is not necessarily a size_t.
It can be larger, it can be smaller, it can be signed, whatever. Handle
all the crazy cases with grace and spirit.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131378 91177308-0d34-0410-b5e6-96231b3b80d8
rm.cpp
1493e2369cb426da9d916949f45e62a6e6ac5ab4 15-May-2011 Anders Carlsson <andersca@mac.com> Disable the optimization until the bug noticed by Sean Hunt has been fixed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131372 91177308-0d34-0410-b5e6-96231b3b80d8
angle-subst-std.cpp
kip-vtable-pointer-initialization.cpp
ffb945ffb5d29b80fd93649c3572b6d87abce3fc 15-May-2011 Anders Carlsson <andersca@mac.com> When emitting the destructor for a class with a vtable, if we can determine
that the destructor body is trivial and that all member variables also have either
trivial destructors or trivial destructor bodies, we don't need to initialize the
vtable pointers since no virtual member functions will be called on the destructor.

Fixes PR9181.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131368 91177308-0d34-0410-b5e6-96231b3b80d8
angle-subst-std.cpp
kip-vtable-pointer-initialization.cpp
2bb110125e0e5adb7c1c65d12adfa34151ca1c47 13-May-2011 Douglas Gregor <dgregor@apple.com> When determining whether we can make a declaration into a global
constant, also consider whether it's a class type that has any mutable
fields. If so, it can't be a global constant.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131276 91177308-0d34-0410-b5e6-96231b3b80d8
lobal-llvm-constant.cpp
8e0397a39eaf9db83cbd9a3a459893fd12a3a05e 08-May-2011 Anders Carlsson <andersca@mac.com> Don't emit complete constructors for abstract classes. Also, don't emit
complete destructors for abstract classes unless the destructor is virtual
and thus needs to be in the vtable.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131068 91177308-0d34-0410-b5e6-96231b3b80d8
bstract-class-ctors-dtors.cpp
da55074866ca2fe7f718c5d3334648d6e340fb15 08-May-2011 Douglas Gregor <dgregor@apple.com> In C++, allow us to emit a global as 'constant' even if it has class
type, so long as it is known to have a constant initializer and the
class type is a POD class. Fixes <rdar://problem/9306265>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131060 91177308-0d34-0410-b5e6-96231b3b80d8
lobal-llvm-constant.cpp
7dcdf5ba9324a9577461eae302e88fdd52e310c5 06-May-2011 Eli Friedman <eli.friedman@gmail.com> Add an implementation of thunks for varargs methods. The implementation is a bit messy, but it is correct as long as the method in question doesn't use indirect gotos. A couple of possible alternative implementations are outlined in FIXME's in this patch. rdar://problem/8077308 .



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130993 91177308-0d34-0410-b5e6-96231b3b80d8
hunks.cpp
3e4c6c4c79a03f5cb0c4671d7c282d623c6dc35e 05-May-2011 Richard Smith <richard-llvm@metafoo.co.uk> Implement support for C++0x alias templates.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130953 91177308-0d34-0410-b5e6-96231b3b80d8
angle-alias-template.cpp
angle-unnameable-conversions.cpp
4f4e413f282609d4a488b44fc8669c28636a7aba 04-May-2011 John McCall <rjmccall@apple.com> Type prefixes of unresolved-names should only be mangled as unresolved-types
if they match that production, i.e. if they're template type parameters
or decltypes (or, as an obvious case not yet described in the ABI document,
if they're template template parameters applied to template arguments).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130824 91177308-0d34-0410-b5e6-96231b3b80d8
angle.cpp
3afa9753fa1243bb652bc5387ecf71044c24fd90 04-May-2011 Sean Hunt <scshunt@csclub.uwaterloo.ca> Fix the delegating constructors test to not rely on basic block names.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130813 91177308-0d34-0410-b5e6-96231b3b80d8
xx0x-delegating-ctors.cpp
b76af9c969558b4484be87933e89e76e7ee87e21 04-May-2011 Sean Hunt <scshunt@csclub.uwaterloo.ca> Ensure that destructors are properly inovked when an exception leaves
the body of a delegating constructor call.

This means that the delegating constructor implementation should be
complete and correct, though there are some rough edges (diagnostic
quality with the cycle detection and using a deleted destructor).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130803 91177308-0d34-0410-b5e6-96231b3b80d8
xx0x-delegating-ctors.cpp
e95a8662a63b823043a582ce5d862542afe8b21e 02-May-2011 NAKAMURA Takumi <geek4civic@gmail.com> test/CodeGenCXX/vtable-debug-info.cpp: It does not crash on mingw.

FIXME: It would crash with -integrated-as. Implement -g on MCCOFF.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130682 91177308-0d34-0410-b5e6-96231b3b80d8
table-debug-info.cpp
45dce81969fe8915e53b13b81ab75a02ffe641e0 02-May-2011 NAKAMURA Takumi <geek4civic@gmail.com> test/CodeGenCXX/debug-info-namespace.cpp: Add explicit -fverbose-asm to cc1 to let cygming pass.

This test seeks a verbose comment in output. By default, "-integrated-as" sets verbose-asm. Cygming is not ready for -integrated-as yet.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130681 91177308-0d34-0410-b5e6-96231b3b80d8
ebug-info-namespace.cpp
fb44de956f27875def889482b5393475060392af 02-May-2011 John McCall <rjmccall@apple.com> Store a parameter index and function prototype depth in every
parameter node and use this to correctly mangle parameter
references in function template signatures.

A follow-up patch will improve the storage usage of these
fields; here I've just done the lazy thing.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130669 91177308-0d34-0410-b5e6-96231b3b80d8
angle-exprs.cpp
059ce0d92eb5a7da900ae735dc0a2ea3d64f4b0b 01-May-2011 Sean Hunt <scshunt@csclub.uwaterloo.ca> Fully implement delegating constructors!

As far as I know, this implementation is complete but might be missing a
few optimizations. Exceptions and virtual bases are handled correctly.

Because I'm an optimist, the web page has appropriately been updated. If
I'm wrong, feel free to downgrade its support categories.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130642 91177308-0d34-0410-b5e6-96231b3b80d8
xx0x-delegating-ctors.cpp
657baf19ca8a48a926bd3bc148b6ad1b17e53199 29-Apr-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Cut down unnecessary zero'ing when value-initializing arrays of C++ objects.

-C++ objects with user-declared constructor don't need zero'ing.
-We can zero-initialize arrays of C++ objects in "bulk" now, in which case don't zero-initialize each object again.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130453 91177308-0d34-0410-b5e6-96231b3b80d8
alue-init.cpp
3b4d490b09347e0b68ec0511ddfae79dfaba77a6 28-Apr-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> When value-initializing the elements of an array not not included in the initializer make sure
that a non-trivial C++ constructor gets called.

Fixes rdar://9347552 & http://llvm.org/PR9801

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130421 91177308-0d34-0410-b5e6-96231b3b80d8
alue-init.cpp
5a7e6f781afc53f3c04c146d74aa7eff15f1338e 28-Apr-2011 John McCall <rjmccall@apple.com> Implement the mangling for non-ADL call expressions that we just
worked out.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130376 91177308-0d34-0410-b5e6-96231b3b80d8
angle-exprs.cpp
642a75f883e644bcfbb82e7af0313776ad1ce33c 28-Apr-2011 John McCall <rjmccall@apple.com> When block-capturing a variable with a non-trivial destructor,
make sure to mark the destructor. This normally isn't required,
because the destructor should have been marked as part of the
declaration of the local, but it's necessary when the variable
is a parameter because it's the call sites that are responsible
for those destructors.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130372 91177308-0d34-0410-b5e6-96231b3b80d8
locks.cpp
20c0da7787c9a7d2529e42a4a91d777778595d74 28-Apr-2011 John Wiegley <johnw@boostpro.com> t/clang/type-traits

Patch authored by John Wiegley.

These type traits are used for parsing code that employs certain features of
the Embarcadero C++ compiler. Several of these constructs are also desired by
libc++, according to its project pages (such as __is_standard_layout).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130342 91177308-0d34-0410-b5e6-96231b3b80d8
angle.cpp
173d51286bcaff4b6b76eebf6542d3b1311142e2 27-Apr-2011 Anders Carlsson <andersca@mac.com> When compiling with -fno-threadsafe-statics, guard variables for globals with internal linkage don't have to be i64, i8 works just fine!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130286 91177308-0d34-0410-b5e6-96231b3b80d8
hreadsafe-statics.cpp
c0a455942453a37dd7db83eb354f40a49872ab06 24-Apr-2011 John McCall <rjmccall@apple.com> GCC seems to create address-of expression manglings when passing *any*
function as a template argument where a pointer to function is wanted.
Just extend the existing hack.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130084 91177308-0d34-0410-b5e6-96231b3b80d8
angle.cpp
a0ce15c13a69c430d8980a1fcf03f420855c18ca 24-Apr-2011 John McCall <rjmccall@apple.com> Update the mangler for some of the "new" unresolved-name manglings.
I've sent off an email requesting clarification on a few things that
I wasn't sure how to handle.

This also necessitated making prefixes and unresolved-prefixes get
mangled separately.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130083 91177308-0d34-0410-b5e6-96231b3b80d8
angle.cpp
1b6005285e234bc30698917b2d3abb2f1f98bc77 24-Apr-2011 John McCall <rjmccall@apple.com> The ABI settled on mangling float literals with lowercase hex dumps.
APInt::toString doesn't do those, but it's easy to postprocess that output,
and that's probably better than adding another knob to that method.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130081 91177308-0d34-0410-b5e6-96231b3b80d8
angle.cpp
120bf32525829be4622fc85b67e38b2ff0276744 23-Apr-2011 Devang Patel <dpatel@apple.com> Tie debug information for method declaration with debug information for method definition.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130037 91177308-0d34-0410-b5e6-96231b3b80d8
ebug-info-method-spec.cpp
3a01693f9e05207a3ba6dfca49b457649979e3e2 18-Apr-2011 Anders Carlsson <andersca@mac.com> Put a typeid test in its own namespace.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129681 91177308-0d34-0410-b5e6-96231b3b80d8
ypeid.cpp
f54d81f516ee01467ab0ed54b5031e552c857ff7 17-Apr-2011 Anders Carlsson <andersca@mac.com> Use the right type name.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129674 91177308-0d34-0410-b5e6-96231b3b80d8
lass-layout.cpp
eb9d81dff99d4996f41c93ce71b08aaf753cbae8 17-Apr-2011 Anders Carlsson <andersca@mac.com> When laying out bases in, always try the "base subobject" LLVM type. If it
turns out that a field or base needs to be laid out in the tail padding of
the base, CGRecordLayoutBuilder::ResizeLastBaseFieldIfNecessary will convert
it to an array of i8.

I've audited the new test results to make sure that they are still valid. I've
also verified that we pass a self-host with this change.

This (finally) fixes PR5589!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129673 91177308-0d34-0410-b5e6-96231b3b80d8
lass-layout.cpp
lobal-init.cpp
ointers-to-data-members.cpp
ragma-pack.cpp
86_64-arguments.cpp
1741d7b3c88eda8891d30f5c920d55dfd54c62f0 17-Apr-2011 Anders Carlsson <andersca@mac.com> Cleanup tests, no functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129672 91177308-0d34-0410-b5e6-96231b3b80d8
erived-to-virtual-base-class-calls-final.cpp
ynamic-cast-always-null.cpp
alue-init.cpp
8b8b84dd9196a0a3cf6b34f5d259605e5ec0e143 15-Apr-2011 Richard Smith <richard-llvm@metafoo.co.uk> Apply NAKAMURA Takumi's workaround to fix thses tests on -Asserts build. The labels there are numbered, not named, and numbered labels are formatted differently.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129562 91177308-0d34-0410-b5e6-96231b3b80d8
or-range-temporaries.cpp
or-range.cpp
fc8f0e14ad142ed811e90fbd9a30e419e301c717 15-Apr-2011 Chris Lattner <sabre@nondot.org> fix a bunch of comment typos found by codespell. Patch by
Luis Felipe Strano Moraes!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129559 91177308-0d34-0410-b5e6-96231b3b80d8
ebug-info-byval.cpp
table-linkage.cpp
ad762fcdc16b9e4705b12b09d92b8c026212b906 15-Apr-2011 Richard Smith <richard-llvm@metafoo.co.uk> Add support for C++0x's range-based for loops, as specified by the C++11 draft standard (N3291).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129541 91177308-0d34-0410-b5e6-96231b3b80d8
or-range-temporaries.cpp
or-range.cpp
99ace16bc6962f1fc3dc45bbbdf2eb74e555a8ad 12-Apr-2011 John McCall <rjmccall@apple.com> Template static data members can have weak_odr linkage, not just
weak linkage. Also, fix a problem where global weak variables
with non-trivial initializers were getting guard variables, or at
least were checking for them and then crashing.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129342 91177308-0d34-0410-b5e6-96231b3b80d8
xplicit-instantiation.cpp
lobal-init.cpp
pecialized-static-data-mem-init.cpp
tatic-data-member.cpp
tatic-init-3.cpp
emplate-inner-struct-visibility-hidden.cpp
1d1a679090afe8468c6c95f8ab9c3192683ac69f 12-Apr-2011 John McCall <rjmccall@apple.com> Whoops.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129341 91177308-0d34-0410-b5e6-96231b3b80d8
lobal-init.cpp
26fbc72b33bdbd20b0145bf117c64d373f8051e3 12-Apr-2011 John McCall <rjmccall@apple.com> Ignore indirect field declarations. Fixes PR9570.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129337 91177308-0d34-0410-b5e6-96231b3b80d8
lobal-init.cpp
4955e57cd5de1e47be4e2f3e6c733beac166bbd8 12-Apr-2011 John McCall <rjmccall@apple.com> Formatting.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129336 91177308-0d34-0410-b5e6-96231b3b80d8
nonymous-union-member-initializer.cpp
755d8497e39071aa24acc173ff07083e3256b8f8 12-Apr-2011 John McCall <rjmccall@apple.com> After some discussion with Doug, we decided that it made a lot more sense
for __unknown_anytype resolution to destructively modify the AST. So that's
what it does now, which significantly simplifies some of the implementation.
Normal member calls work pretty cleanly now, and I added support for
propagating unknown-ness through &.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129331 91177308-0d34-0410-b5e6-96231b3b80d8
nknown-anytype.cpp
4bdbc0cb1e29ac870b7e7985cf4a1b5c34176e8c 11-Apr-2011 Anders Carlsson <andersca@mac.com> If there's an invoke destination, we should use invoke instead of call when calling the __cxa_bad_typeid function. Fixes PR7400.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129273 91177308-0d34-0410-b5e6-96231b3b80d8
ypeid.cpp
379b5155b4566f63679e1da6b0ceb5fdfa2aec6d 11-Apr-2011 John McCall <rjmccall@apple.com> More __unknown_anytype work.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129269 91177308-0d34-0410-b5e6-96231b3b80d8
nknown-anytype.cpp
3ddcdd5d6c88902d24baa9e6bb240a3da88e68d4 11-Apr-2011 Anders Carlsson <andersca@mac.com> When we know that a dynamic_cast always returns null, we can make
CodeGenFunction::EmitDynamicCast always return null or throw a bad_cast
exception.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129264 91177308-0d34-0410-b5e6-96231b3b80d8
ynamic-cast-always-null.cpp
3d1eee2f234ce798996c2d524b1e6f82f9f51b66 11-Apr-2011 Anders Carlsson <andersca@mac.com> Remove the CodeGenCXX/dyncast.cpp test; it isn't really super useful to match on huge chunks of LLVM output.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129258 91177308-0d34-0410-b5e6-96231b3b80d8
yncast.cpp
cd0b32e73a66a20a8dab7a7f0ce963dc669f7c0a 10-Apr-2011 Anders Carlsson <andersca@mac.com> Strip off parens and no-op casts when deciding if an expr can be devirtualized. Fixes the second half of PR9660.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129253 91177308-0d34-0410-b5e6-96231b3b80d8
evirtualize-virtual-function-calls.cpp
b8bced0b75fa4188c91753d5a1de6d164af45450 10-Apr-2011 Anders Carlsson <andersca@mac.com> Change CollectPrimaryBases to collect the bases in the right order. Fixes one half of PR9660.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129252 91177308-0d34-0410-b5e6-96231b3b80d8
table-layout.cpp
a5fc472b353b88be3b4981da946fb01f5a5cc0c6 10-Apr-2011 John McCall <rjmccall@apple.com> Fix a bunch of major problems with __unknown_anytype and properly test
for them. The only major missing feature is references.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129234 91177308-0d34-0410-b5e6-96231b3b80d8
nknown-anytype.cpp
5536daa627b508299007b735a588bf4e88825bb3 09-Apr-2011 Eli Friedman <eli.friedman@gmail.com> Make sure we or together the overflow flags of the multiply and add, so the
check is triggered appropriately. Reported on cfe-dev.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129231 91177308-0d34-0410-b5e6-96231b3b80d8
rm.cpp
97edcb639347a4770e59af66d20abcd2b37bb4e5 06-Apr-2011 Devang Patel <dpatel@apple.com> Add a test case for r128957. It fixed a bug!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128966 91177308-0d34-0410-b5e6-96231b3b80d8
ebug-info-this.cpp
5ecb1dfb303c58138fdabeea00e73bee075b21ee 06-Apr-2011 Devang Patel <dpatel@apple.com> Emit debug info for function template parameters.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128948 91177308-0d34-0410-b5e6-96231b3b80d8
ebug-info-fn-template.cpp
ba690a4112be4f0abde48ce51d41e92c79f96f3e 05-Apr-2011 Devang Patel <dpatel@apple.com> Incomplete type does not have any size.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128855 91177308-0d34-0410-b5e6-96231b3b80d8
ebug-info-template.cpp
ae503df62bde42440a9c4495d26d6142c4af7bcb 01-Apr-2011 Devang Patel <dpatel@apple.com> Do not try calculate the size of forward-declared template type array.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128725 91177308-0d34-0410-b5e6-96231b3b80d8
ebug-info-template.cpp
f0c11f7e6848f023ced6a5b51399ba787c7d4d0b 31-Mar-2011 John McCall <rjmccall@apple.com> After much contemplation, I've decided that we probably shouldn't "unique"
__block object copy/dispose helpers for C++ objects with those for
different variables with completely different semantics simply because
they happen to both be no more aligned than a pointer.

Found by inspection.

Also, internalize most of the helper generation logic within CGBlocks.cpp,
and refactor it to fit my peculiar aesthetic sense.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128618 91177308-0d34-0410-b5e6-96231b3b80d8
locks.cpp
bda0d6bda0f1a08a9fdf3ee4cf550b6b10d454ec 27-Mar-2011 John McCall <rjmccall@apple.com> We were emitting construction v-tables with internal linkage all the time.
Emit them instead with the linkage of the VTT.

I'm actually really ambivalent about this; it's what GCC does, but outside
of improving code size (if the linkage is coalescing), I'm not sure it's
at all relevant. Construction vtables are naturally referenced only by the
VTT, which is itself only referenced by complete-object constructors and
destructors; giving the construction vtables possibly-external linkage is
important if you have an optimization that drills through the VTT to a
reference to a particular construction vtable which it cannot just emit
itself.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128374 91177308-0d34-0410-b5e6-96231b3b80d8
angle-subst-std.cpp
78951941f31d3c63c4178a1275e1a2db2e20da11 22-Mar-2011 John McCall <rjmccall@apple.com> Fix a test case and teach ClearLinkageCache() to clear the linkage of
a function template decl's pattern, which was suddenly exposed by my
last patch.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128073 91177308-0d34-0410-b5e6-96231b3b80d8
tatic-init.cpp
74990f45b0bc57fca81f908efb13d2b6c6350f03 22-Mar-2011 John McCall <rjmccall@apple.com> File-scope static functions need to be mangled with 'L' so that
they don't collide with file-scope extern functions from the same
translation unit. This is basically a matter of applying the same
logic to FunctionDecls as we were previously applying to VarDecls.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128072 91177308-0d34-0410-b5e6-96231b3b80d8
angle.cpp
90e23204dbc4005736069ba821c5c8b403777500 22-Mar-2011 Matt Beaumont-Gay <matthewbg@google.com> Output to tempfile

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128043 91177308-0d34-0410-b5e6-96231b3b80d8
pple-kext-guard-variable.cpp
a9d129329b36660417af8f43fd5dfc75d9a5f0a1 18-Mar-2011 NAKAMURA Takumi <geek4civic@gmail.com> test/CodeGenCXX/apple-kext-guard-variable.cpp: May I appease non-darwin hosts?

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127869 91177308-0d34-0410-b5e6-96231b3b80d8
pple-kext-guard-variable.cpp
32096695c76033a6b0b1747c439f7378a11e8312 18-Mar-2011 John McCall <rjmccall@apple.com> The Darwin kernel does not provide useful guard variable support.
Issue this as an IR-gen error; it's not really worthwhile doing this
"right", i.e. in Sema, because IR gen knows a lot of tricks beyond
what the constant evaluator knows.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127854 91177308-0d34-0410-b5e6-96231b3b80d8
pple-kext-guard-variable.cpp
545aa7a0f57d2bb2fc0eef83daa499300273d983 16-Mar-2011 Eli Friedman <eli.friedman@gmail.com> PR9494: Get rid of bitcast which was both unnecessary and written incorrectly.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127768 91177308-0d34-0410-b5e6-96231b3b80d8
eferences.cpp
8bba1f4ab1f06864fec627befdf7cf8e1ad017be 15-Mar-2011 John McCall <rjmccall@apple.com> Reorganize the emission of (unfoldable) constant casts a bit, and
make sure that upcasts of member pointer types are covered as constants.
Fixed rdar://problem/9130221



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127702 91177308-0d34-0410-b5e6-96231b3b80d8
ember-function-pointers.cpp
c2f3e7f42c8bf9e8d4393a6e8c4762dafc4f28dd 07-Mar-2011 John McCall <rjmccall@apple.com> The conditional needs to be pushed before the branch. Make the test less
trivial to check this. Adjust for style.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127151 91177308-0d34-0410-b5e6-96231b3b80d8
xceptions.cpp
a7f633f522af786e80dc08dbd63e222c9414095b 07-Mar-2011 John McCall <rjmccall@apple.com> An operator new with an empty exception specifier returns null on a bad
allocation and therefore requires a null-check. We were doing that, but
we weren't treating the new-initializer as being conditionally executed,
which means it was possible to get ill-formed IR as in PR9298.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127147 91177308-0d34-0410-b5e6-96231b3b80d8
xceptions.cpp
ebc327977645f03e12aaeba82f7f53299e47ad3a 06-Mar-2011 Anders Carlsson <andersca@mac.com> Correctly unwrap 'auto' types. Fixes PR9414.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127121 91177308-0d34-0410-b5e6-96231b3b80d8
ebug-info-cxx0x.cpp
884b9dd182378c9d3ae4385ccf9030b989b3d028 05-Mar-2011 NAKAMURA Takumi <geek4civic@gmail.com> test: Mark 3 tests as XFAIL:cygwin,mingw.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127077 91177308-0d34-0410-b5e6-96231b3b80d8
ebug-info-namespace.cpp
6f48d12aaa8c71400ebf6e9d498b13492e64bf9d 05-Mar-2011 NAKAMURA Takumi <geek4civic@gmail.com> test: Mark two tests as XFAIL:mingw.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127076 91177308-0d34-0410-b5e6-96231b3b80d8
table-debug-info.cpp
1a0918ade0a3490c7aff243f9cd519156dfcb0bd 04-Mar-2011 John McCall <rjmccall@apple.com> Don't consider visibility from template parameter lists if we're
computing for a nested decl with explicit visibility. This is all part
of the general philosophy of explicit visibility attributes, where
any information that was obviously available at the attribute site
should probably be ignored. Fixes PR9371.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126992 91177308-0d34-0410-b5e6-96231b3b80d8
isibility.cpp
abea951c34876a5374d0e3678c7989b225c5c895 28-Feb-2011 Anders Carlsson <andersca@mac.com> Add -fcxx-exceptions to all tests that use C++ exceptions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126599 91177308-0d34-0410-b5e6-96231b3b80d8
R5863-unreachable-block.cpp
nonymous-namespaces.cpp
estructors.cpp
ynamic-cast.cpp
h.cpp
xceptions-no-rtti.cpp
xceptions.cpp
oto.cpp
rvo.cpp
hreadsafe-statics-exceptions.cpp
hrow-expression-dtor.cpp
hrow-expressions.cpp
ry-catch.cpp
bc7fbf0d37b286b37d96b033dfaaabf9c729bca8 26-Feb-2011 John McCall <rjmccall@apple.com> Pretty up the emission of field l-values and use volatile and TBAA when
loading references as part of that. Use 'char' TBAA when accessing
(immediate!) fields of a may_alias struct; fixes PR9307.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126540 91177308-0d34-0410-b5e6-96231b3b80d8
nonymous-union-member-initializer.cpp
27f8d703e65095ca9c8c5d08a5a835b5510a730d 25-Feb-2011 John McCall <rjmccall@apple.com> Tame an assert; the scope depth of a jump destination does not
necessarily enclose the innermost normal cleanup depth, because
the top of the jump scope stack might be an EH cleanup or EH scope.
Fixes PR9303.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126472 91177308-0d34-0410-b5e6-96231b3b80d8
xceptions.cpp
3ee36af5bbb8c2cd203a140c3785215539cd56b4 22-Feb-2011 Devang Patel <dpatel@apple.com> A constructor call should force class's debug info even if -flimit-debug-info is enabled.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126246 91177308-0d34-0410-b5e6-96231b3b80d8
ebug-info-limit.cpp
967ecd3bed2b7f6ea04a1592dced6fc5d44d0b5d 21-Feb-2011 Richard Smith <richard-llvm@metafoo.co.uk> Mangling of undeduced 'auto' types, as specified by Itanium C++ ABI.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126140 91177308-0d34-0410-b5e6-96231b3b80d8
angle-exprs.cpp
7cc25fe47290dc302157e15b04a1f95395f43ab5 21-Feb-2011 John McCall <rjmccall@apple.com> Bind references to opaque r-values correctly. Add a few test cases
for ?: on record types.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126113 91177308-0d34-0410-b5e6-96231b3b80d8
onditional-gnu-ext.cpp
aa46fe44a8b8f41d92a4ee006d6e370222c8bc87 21-Feb-2011 John McCall <rjmccall@apple.com> Rename test/CodeGenCXX/gnu-conditional-scalar-ext.cpp to conditional-gnu-ext.cpp
for consistency with other tests (and to remove "scalar" from the name).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126104 91177308-0d34-0410-b5e6-96231b3b80d8
onditional-gnu-ext.cpp
nu-conditional-scalar-ext.cpp
944ed3b8dba3a129937a4e627d235ad99d225da9 19-Feb-2011 Douglas Gregor <dgregor@apple.com> In addition to in-class member functions marked with the "used"
attribute, we also care about those with the "constructor"
attribute. Fixes PR6521.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126055 91177308-0d34-0410-b5e6-96231b3b80d8
onstructor-attr.cpp
e41721e7dfabcc15cb50be9075a4153f1ad648ea 19-Feb-2011 Anders Carlsson <andersca@mac.com> Pass -fexceptions to all tests that use try/catch/throw.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126037 91177308-0d34-0410-b5e6-96231b3b80d8
R5863-unreachable-block.cpp
nonymous-namespaces.cpp
rvo.cpp
hrow-expressions.cpp
15e310a3b970b64a84cb30f0005bc396b4d978cb 19-Feb-2011 John McCall <rjmccall@apple.com> Warn about code that uses variables and functions with internal linkage
without defining them. This should be an error, but I'm paranoid about
"uses" that end up not actually requiring a definition. I'll revisit later.

Also, teach IR generation to not set internal linkage on variable
declarations, just for safety's sake. Doing so produces an invalid module
if the variable is not ultimately defined.

Also, fix several places in the test suite where we were using internal
functions without definitions.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126016 91177308-0d34-0410-b5e6-96231b3b80d8
onstructor-convert.cpp
nternal-linkage.cpp
ey-function-vtable.cpp
hunks.cpp
56ca35d396d8692c384c785f9aeebcf22563fe1e 17-Feb-2011 John McCall <rjmccall@apple.com> Change the representation of GNU ?: expressions to use a different expression
class and to bind the shared value using OpaqueValueExpr. This fixes an
unnoticed problem with deserialization of these expressions where the
deserialized form would lose the vital pointer-equality trait; or rather,
it fixes it because this patch also does the right thing for deserializing
OVEs.

Change OVEs to not be a "temporary object" in the sense that copy elision is
permitted.

This new representation is not totally unawkward to work with, but I think
that's really part and parcel with the semantics we're modelling here. In
particular, it's much easier to fix things like the copy elision bug and to
make the CFG look right.

I've tried to update the analyzer to deal with this in at least some
obvious cases, and I think we get a much better CFG out, but the printing
of OpaqueValueExprs probably needs some work.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125744 91177308-0d34-0410-b5e6-96231b3b80d8
nu-conditional-scalar-ext.cpp
a03733b28b7c0a6dde83561a8a391c1067f404a5 17-Feb-2011 Nick Lewycky <nicholas@mxc.ca> Ensure that the NRVO flag has some block to insert into. Fixes PR9178!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125694 91177308-0d34-0410-b5e6-96231b3b80d8
rvo-noreturn.cc
e996ffd240f20a1048179d7727a6ee3227261921 16-Feb-2011 John McCall <rjmccall@apple.com> Save a copy expression for non-trivial copy constructions of catch variables.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125661 91177308-0d34-0410-b5e6-96231b3b80d8
xceptions.cpp
d6c9a0f06ce7e164024d8e4dbf2423a5c5035084 15-Feb-2011 Fariborz Jahanian <fjahanian@apple.com> In -fapple-kext mode, global object construction code
ends up in the text segment. // rdar://8825235.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125585 91177308-0d34-0410-b5e6-96231b3b80d8
pple-kext-no-staticinit-section.C
f552c20b3dd21855054010e29882e563fdcccff6 15-Feb-2011 Douglas Gregor <dgregor@apple.com> Emit in-class member function definitions that are marked
"used". Fixes <rdar://problem/8684363>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125579 91177308-0d34-0410-b5e6-96231b3b80d8
ttr-used.cpp
9b7da1c46d6d2849f9cb51328d7fcddf2c417672 15-Feb-2011 John McCall <rjmccall@apple.com> Perform zero-initialization of virtual base classes when emitting
a zero constant for a complete class. rdar://problem/8424975

To make this happen, track the field indexes for virtual bases
in the complete object. I'm curious whether we might be better
off making CGRecordLayoutBuilder *much* more reliant on
ASTRecordLayout; we're currently duplicating an awful lot of the ABI
layout logic.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125555 91177308-0d34-0410-b5e6-96231b3b80d8
ointers-to-data-members.cpp
0d70d71ccbc4f7f59cadb759f61b7172a149676c 13-Feb-2011 John McCall <rjmccall@apple.com> Look through array types when deciding whether a field requires non-trivial
destruction in the destructor-aliases logic. Fixes PR 9197.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125447 91177308-0d34-0410-b5e6-96231b3b80d8
estructors.cpp
a29bf41b8f49578207ce36f6b21ff9bb7ee77bab 09-Feb-2011 Douglas Gregor <dgregor@apple.com> When IRgen refers to a function declaration that is not a definition,
and we later find the definition, make sure that we add the definition
(not the declaration) to the list of deferred definitions to
emit. Fixes PR8864.

Thanks to Nick Lewycky for testing this patch out



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125157 91177308-0d34-0410-b5e6-96231b3b80d8
riend-redecl.cpp
461c9c1bc39ed8cbe8311f396f7ee3839e9fda53 08-Feb-2011 John McCall <rjmccall@apple.com> Extend the const capture optimization to C++ record types with no
mutable fields and with trivial destructors and copy constructors.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125073 91177308-0d34-0410-b5e6-96231b3b80d8
locks.cpp
bb699b07426be017056c2c549ac3ffb488cab6e3 07-Feb-2011 John McCall <rjmccall@apple.com> When copy-capturing values for a nested capture, use a BlockDeclRefExpr.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125021 91177308-0d34-0410-b5e6-96231b3b80d8
locks.cpp
976d91177a83101434c1985ea3b14f682f0f38c4 06-Feb-2011 Anders Carlsson <andersca@mac.com> Add another test that we can fully devirtualize now.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124988 91177308-0d34-0410-b5e6-96231b3b80d8
table-available-externally.cpp
22df7b17f1b086f4347256406703d259753a0cbf 06-Feb-2011 Anders Carlsson <andersca@mac.com> Fix self-host; if a thunk already exists and has available_externally linkage, we should change its linkage instead of asserting.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124986 91177308-0d34-0410-b5e6-96231b3b80d8
hunks-available-externally.cpp
14e82fd91c6d5041aa840574143521d244f185cd 06-Feb-2011 Anders Carlsson <andersca@mac.com> When building with optimizations, emit thunks with available_externally linkage so devirtualized function calls can also be de-thunked.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124984 91177308-0d34-0410-b5e6-96231b3b80d8
hunks-available-externally.cpp
bbfd5babab059af14eed20b63b2aabedaa6a6ac7 05-Feb-2011 Anders Carlsson <andersca@mac.com> Pass a 'ForVTable' flag to GetAddrOfThunk and pass it along to GetOrCreateLLVMFunction so that we
won't assert when building a thunk for an implicit virtual member function that is not marked used.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124967 91177308-0d34-0410-b5e6-96231b3b80d8
table-available-externally.cpp
1faa89f9c619e4b2411fab4af7e22ee7a2bd9009 05-Feb-2011 Anders Carlsson <andersca@mac.com> Re-land r124768, with a fix for PR9130.

We now emit everything except unused implicit virtual member functions when building the vtable.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124935 91177308-0d34-0410-b5e6-96231b3b80d8
table-available-externally.cpp
142f9e99018a85105cee570133c111a52f2053ec 04-Feb-2011 Fariborz Jahanian <fjahanian@apple.com> -fapple-kext cannot have 'weak' visibility in this
abi.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124834 91177308-0d34-0410-b5e6-96231b3b80d8
pple-kext-linkage.C
59d89c3b1f042e8d02872ab9700d162b13887eeb 03-Feb-2011 Rafael Espindola <rafael.espindola@gmail.com> Add test from PR9130.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124781 91177308-0d34-0410-b5e6-96231b3b80d8
r9130.cpp
01de7a44cea9f77cbcda65faad8edc8b48a3b617 03-Feb-2011 Rafael Espindola <rafael.espindola@gmail.com> Revert 124768.
This reopens PR99114, but that one at least can be avoided with an #include.
PR9130 cannot.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124780 91177308-0d34-0410-b5e6-96231b3b80d8
table-available-externally.cpp
aedd9d5ad3cc776fd61457050bcd54cac4c5ea66 03-Feb-2011 Anders Carlsson <andersca@mac.com> Don't try to mark virtual members referenced for classes where the key function
is not defined in the current translation unit. Doing so lead to compile errors
such as PR9114.

Instead, when CodeGen is building the vtable, don't try to emit a definition
for functions that aren't marked used in the current translation unit.
Fixes PR9114.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124768 91177308-0d34-0410-b5e6-96231b3b80d8
table-available-externally.cpp
5abec14a235bff4026c030672701a9853350e8cf 03-Feb-2011 Fariborz Jahanian <fjahanian@apple.com> -fapple-kext, elimination of all direct calls to virtual dtors.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124757 91177308-0d34-0410-b5e6-96231b3b80d8
pple-kext-indirect-virtual-dtor-call.cpp
0ce34c6ba0aa79708a62179c0fdf96891b62b5dc 02-Feb-2011 Devang Patel <dpatel@apple.com> Emit debug info for template value parameters.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124756 91177308-0d34-0410-b5e6-96231b3b80d8
ebug-info-template.cpp
fa275dfad7c4eb053ffef423a863afbe15534476 02-Feb-2011 Devang Patel <dpatel@apple.com> Emit debug info for template type parameters.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124753 91177308-0d34-0410-b5e6-96231b3b80d8
ebug-info-template.cpp
8d2968cc527fc775e1e1e72a25b581820a51225d 02-Feb-2011 Fariborz Jahanian <fjahanian@apple.com> Turn test for // rdar://8945175 into a sema test.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124748 91177308-0d34-0410-b5e6-96231b3b80d8
on-empty-class-size-zero.cpp
adf082e829eb71871b6043009888df3b79055dba 02-Feb-2011 Fariborz Jahanian <fjahanian@apple.com> For gcc compatibility, size of a class which is zero
but has non-empty data fields, such as array of zero length,
remains zero.
// rdar://8945175


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124741 91177308-0d34-0410-b5e6-96231b3b80d8
on-empty-class-size-zero.cpp
7143325db76d6c3dabce82500f8cc7c93a941970 01-Feb-2011 John McCall <rjmccall@apple.com> Do the right thing for zero-initializing VLAs that don't have a zero
bit-pattern. It's not clear that this is actually useful given current
language restrictions.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124685 91177308-0d34-0410-b5e6-96231b3b80d8
99-variable-length-array.cpp
38ca4f762aa6e6add4f6bdf6adcddfe1afe37a25 01-Feb-2011 John McCall <rjmccall@apple.com> Make that test case actually test something, and add another test.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124654 91177308-0d34-0410-b5e6-96231b3b80d8
angle-unnamed.cpp
cde5a400dbc9655eddf0f383585d3cf67c11c539 01-Feb-2011 John McCall <rjmccall@apple.com> The code trying to assign a typedef to an anonymous tag declaration was
extremely rambunctious, both on parsing and on template instantiation.
Calm it down, fixing an internal consistency assert on anonymous enum
instantiation manglings.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124653 91177308-0d34-0410-b5e6-96231b3b80d8
angle-unnamed.cpp
071d3af0de273b1079d79f7f979264f28d567373 01-Feb-2011 Rafael Espindola <rafael.espindola@gmail.com> Revert 124633. The linker has been told how to merge available_externally.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124651 91177308-0d34-0410-b5e6-96231b3b80d8
isibility-hidden-extern-templates.cpp
517ebc6e13c41dc9115bc0eece93f6fc1155743e 01-Feb-2011 Rafael Espindola <rafael.espindola@gmail.com> Set visibility for available_externally globals. This is important for two reasons:

* llvm-link would complains about mismatched visibility
* If we produce a relocation with an available_externally, it is good to know that
it is hidden.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124633 91177308-0d34-0410-b5e6-96231b3b80d8
isibility-hidden-extern-templates.cpp
0413db4a26b0a1577b75c2979b0eb21f3490d17a 31-Jan-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Amazing that there are still issues with the fields of anonymous struct/unions..
Allow taking the address of such a field for a pointer-to-member constant. Fixes rdar://8818236.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124575 91177308-0d34-0410-b5e6-96231b3b80d8
nonymous-union-member-initializer.cpp
d4d3ce6ed8d4981a18d013f8694c762c47b44c77 31-Jan-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Fix test that didn't actually test what it wanted to test.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124574 91177308-0d34-0410-b5e6-96231b3b80d8
nonymous-union-member-initializer.cpp
6d7f8473cd6e967b3676948894ce72472102f9cb 30-Jan-2011 Anders Carlsson <andersca@mac.com> When building with optimizations, emit vtables where the key is not in the
current translation unit as available_externally.

This helps devirtualize the second example in PR3100, comment 18:

struct S { S() {}; virtual void xyzzy(); };
inline void foo(S *s) { s->xyzzy(); }
void bar() { S s; foo(&s); }

This involved four major changes:

1. In DefineUsedVTables, always mark virtual member functions as referenced for
non-template classes and class template specializations.
2. In CodeGenVTables::ShouldEmitVTableInThisTU return true if optimizations are
enabled, even if the key function is not implemented in this translation
unit. We don't ever do this for code compiled with -fapple-kext, because we
don't ever want to devirtualize virtual member function calls in that case.
3. Give the correct linkage for vtables where the key function is not defined.
4. Update the linkage for RTTI structures when necessary.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124565 91177308-0d34-0410-b5e6-96231b3b80d8
table-available-externally.cpp
806f9a3d08c08acd79fe92a335ae24cbc271e626 29-Jan-2011 Anders Carlsson <andersca@mac.com> Fix test.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124555 91177308-0d34-0410-b5e6-96231b3b80d8
tti-visibility.cpp
907c828b080332854826a87451e838930f4be788 29-Jan-2011 Anders Carlsson <andersca@mac.com> When emitting RTTI for a non-class type, compute the visibility of the RTTI data based on the explicit visibility of the type.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124553 91177308-0d34-0410-b5e6-96231b3b80d8
tti-linkage.cpp
tti-visibility.cpp
6329e20058cb7a4ecbbafed3aa61437b9683eb08 29-Jan-2011 Anders Carlsson <andersca@mac.com> Update tests.

I'm still not sure if having the typenames be visible with -hidden-weak-vtables, but I think it makes sense.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124549 91177308-0d34-0410-b5e6-96231b3b80d8
tti-linkage.cpp
tti-visibility.cpp
3361cff6021195dc29aa9082ff8a0e5628de5f31 29-Jan-2011 Anders Carlsson <andersca@mac.com> Add a test for RTTI visibility.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124543 91177308-0d34-0410-b5e6-96231b3b80d8
tti-visibility.cpp
691222d5c9de39e785f604c41c872279831a507e 29-Jan-2011 Anders Carlsson <andersca@mac.com> Give VTTs the right visibility.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124540 91177308-0d34-0410-b5e6-96231b3b80d8
table-linkage.cpp
1cbce125b91cad81c8be3f8bbae8df917211176c 29-Jan-2011 Anders Carlsson <andersca@mac.com> Make emitting a VTT a two-step process, much like emitting a VTable. You first get the address of the VTT, and then pass it to EmitVTTDefinition.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124539 91177308-0d34-0410-b5e6-96231b3b80d8
angle-subst-std.cpp
268ab8c6b92dc40c678d8458a335698fa34915c9 29-Jan-2011 Anders Carlsson <andersca@mac.com> When trying to get the most derived class, don't assume that we can ignore all casts. We can only ignore derived-to-base and no-op casts. Fixes selfhost.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124528 91177308-0d34-0410-b5e6-96231b3b80d8
evirtualize-virtual-function-calls-final.cpp
1679f5a84ae1e578b0de347c89eaf31e0465f33c 29-Jan-2011 Anders Carlsson <andersca@mac.com> When calling a virtual member function on a base class and the most derived class is marked 'final', we can devirtualize the call.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124524 91177308-0d34-0410-b5e6-96231b3b80d8
evirtualize-virtual-function-calls-final.cpp
336a7dc56871ccfeceecc296c9624f66f7ac01ec 29-Jan-2011 Anders Carlsson <andersca@mac.com> When doing a derived-to-base class through a virtual class, we don't have to get the vbase offset from the vtable if the derived class is marked final.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124523 91177308-0d34-0410-b5e6-96231b3b80d8
erived-to-virtual-base-class-calls-final.cpp
a50e33eb0ff7b73d44aebce88de3732583a7e960 29-Jan-2011 Fariborz Jahanian <fjahanian@apple.com> More work to support -fapple-kext regarding
indirect vf calls and addition of extra entry
at bottom of vtbls.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124507 91177308-0d34-0410-b5e6-96231b3b80d8
pple-kext-indirect-call-2.C
3ad32c8d93eb65d1d4943d7df567fc9b4f55d137 28-Jan-2011 John McCall <rjmccall@apple.com> Convert the exception-freeing cleanup over to the conditional cleanups code,
fixing a crash which probably nobody was ever going to see. In doing so,
fix a horrendous number of problems with the conditional-cleanups code.
Also, make conditional cleanups re-use the cleanup's activation variable,
which avoids some unfortunate repetitiveness.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124481 91177308-0d34-0410-b5e6-96231b3b80d8
h.cpp
70a21de5b4c6ca4883ed58093e71e7884d5218fb 28-Jan-2011 Douglas Gregor <dgregor@apple.com> Allow elision of invocations of move constructors from temporary objects.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124455 91177308-0d34-0410-b5e6-96231b3b80d8
value-references.cpp
b3d5e2f181269656c1b2dbc09eab1f449d5074aa 28-Jan-2011 Douglas Gregor <dgregor@apple.com> When producing IR for a lvalue-to-rvalue cast *as an lvalue*, only
non-class prvalues actually require the realization of a
temporary. For everything else, we already have an lvalue (or class
prvalue) in the subexpression.

Note: we're missing some move elision in this case. I'll tackle that next.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124453 91177308-0d34-0410-b5e6-96231b3b80d8
value-references.cpp
6ec278d1a354517e20f13a877481453ee7940c78 27-Jan-2011 John McCall <rjmccall@apple.com> Do a proper recursive lookup when deciding whether a class's usual
deallocation function has a two-argument form. Store the result of this
check in new[] and delete[] nodes.

Fixes rdar://problem/8913519



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124373 91177308-0d34-0410-b5e6-96231b3b80d8
elete-two-arg.cpp
b47f74818094fabd8f150fb4d6d0fa8a6c52cde1 26-Jan-2011 John McCall <rjmccall@apple.com> When mangling a qualified array type, push the qualifiers down to the
element type. Fixes rdar://problem/8913416.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124315 91177308-0d34-0410-b5e6-96231b3b80d8
angle.cpp
4bbcbda302cba8b1b0d88c20d735d09b483bd005 26-Jan-2011 John McCall <rjmccall@apple.com> Fix some obvious bugs in the conditional-cleanup code and then make the
dtor cleanup use it.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124309 91177308-0d34-0410-b5e6-96231b3b80d8
xceptions.cpp
emporaries.cpp
0a9a6d68979619a621fedc5089674487f720f765 26-Jan-2011 Douglas Gregor <dgregor@apple.com> Rvalue references for *this: add name mangling for ref-qualifiers,
using rules that I just made up this morning. This encoding has now
been proposed to the Itanium C++ ABI group for inclusion, but of
course it's still possible that the mangling will change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124296 91177308-0d34-0410-b5e6-96231b3b80d8
angle-ref-qualifiers.cpp
150b462afc7a713edd19bcbbbb22381fe060d4f5 26-Jan-2011 John McCall <rjmccall@apple.com> Better framework for conditional cleanups; untested as yet.
I'm separately committing this because it incidentally changes some
block orderings and minor IR issues, like using a phi instead of
an unnecessary alloca.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124277 91177308-0d34-0410-b5e6-96231b3b80d8
olatile-1.cpp
0691a5c83246604a89654e0dfc25870e742035b4 25-Jan-2011 Rafael Espindola <rafael.espindola@gmail.com> Move unnamed_addr after the function arguments on Sabre's request.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124210 91177308-0d34-0410-b5e6-96231b3b80d8
rm.cpp
onstructor-init.cpp
onstructors.cpp
opy-constructor-elim-2.cpp
opy-constructor-synthesis-2.cpp
opy-constructor-synthesis.cpp
efault-arg-temps.cpp
efault-arguments.cpp
efault-constructor-template-member.cpp
elete.cpp
estructors.cpp
h.cpp
mplicit-copy-constructor.cpp
angle-subst-std.cpp
angle-template.cpp
ember-functions.cpp
ember-init-assignment.cpp
ember-templates.cpp
ointers-to-data-members.cpp
emplate-anonymous-types.cpp
emplate-instantiation.cpp
emplate-linkage.cpp
alue-init.cpp
irt-dtor-gen.cpp
irtual-base-destructor-call.cpp
irtual-bases.cpp
irtual-destructor-calls.cpp
table-pointer-initialization.cpp
88b22a432549e315662f96abe148923c921970cb 25-Jan-2011 Douglas Gregor <dgregor@apple.com> When performing a glvalue-to-xvalue static_cast that involves a
derived-to-base conversion, set the cast kind and base path
appropriately.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124189 91177308-0d34-0410-b5e6-96231b3b80d8
value-references.cpp
f502d93b0ea970bfbd897e657f8d940a20984de2 24-Jan-2011 Anders Carlsson <andersca@mac.com> Mark VTables and RTTI data linkonce_odr instead of weak_odr, with the exception of explicit template instantiations, which have to be weak_odr.

This fixes PR6996.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124089 91177308-0d34-0410-b5e6-96231b3b80d8
xceptions-no-rtti.cpp
ey-function-vtable.cpp
angle-subst-std.cpp
tti-linkage.cpp
irt-template-vtable.cpp
isibility.cpp
table-key-function.cpp
table-linkage.cpp
tt-layout.cpp
f89e0424b8903438179f4a2f16dddd5e5bdc814e 23-Jan-2011 Anders Carlsson <andersca@mac.com> Get rid of the [[final]] C++0x attribute.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124083 91177308-0d34-0410-b5e6-96231b3b80d8
ttr-final-devirtualize-virtual-function-calls.cpp
evirtualize-virtual-function-calls-final.cpp
f5d8f466c3eebaffc51468812bdcbe7f0fe4891a 21-Jan-2011 Douglas Gregor <dgregor@apple.com> Promote the static getNRVOCandidate() function, which computed the
NRVO candidate for a return statement, to
Sema::getCopyElisionCandidate(), and teach it enough to also determine
the NRVO candidate for a throw expression. We still don't use the
latter information, however.

Along the way, implement core issue 1148, which eliminates copy
elision from catch parameters and clarifies that copy elision cannot
occur from function parameters (which we already implemented).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123982 91177308-0d34-0410-b5e6-96231b3b80d8
rvo.cpp
7ac0ff2a8791280102a557761dbb931deb21a1dc 21-Jan-2011 Fariborz Jahanian <fjahanian@apple.com> Move cheking of kext into canDevirtualizeMemberFunctionCalls().
Improve on test case. Per Doug's comment. wip.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123954 91177308-0d34-0410-b5e6-96231b3b80d8
pple-kext-indirect-call.C
2726267f094a0c1f5ac5b501ec5a9898c58876bf 20-Jan-2011 Fariborz Jahanian <fjahanian@apple.com> apple kext abi requires all vf calls, including qualified
vf calls, be made indirect. This patch is towards that goal.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123922 91177308-0d34-0410-b5e6-96231b3b80d8
pple-kext-indirect-call.C
c532b502858032f377056dc8cba2fe43cba8702b 18-Jan-2011 Rafael Espindola <rafael.espindola@gmail.com> Add unnamed_addr in CreateRuntimeVariable.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123773 91177308-0d34-0410-b5e6-96231b3b80d8
lobal-init.cpp
8e26222104a3fbdbed5322dc60800e32620a2a90 18-Jan-2011 Daniel Dunbar <daniel@zuster.org> Fix newlines.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123742 91177308-0d34-0410-b5e6-96231b3b80d8
onstructor-direct-call.cpp
7a051b2bd32c7c9072d245055d0fa0893c259109 18-Jan-2011 Daniel Dunbar <daniel@zuster.org> tests: Force a triple.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123741 91177308-0d34-0410-b5e6-96231b3b80d8
onstructor-direct-call.cpp
dbee3411a22b0dbb03267f5445f7b796104991bb 18-Jan-2011 Francois Pichet <pichet2000@gmail.com> Add support for explicit constructor calls in Microsoft mode.
For example:

class A{
public:
A& operator=(const A& that) {
if (this != &that) {
this->A::~A();
this->A::A(that); // <=== explicit constructor call.
}
return *this;
}
};

More work will be needed to support an explicit call to a template constructor.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123735 91177308-0d34-0410-b5e6-96231b3b80d8
onstructor-direct-call.cpp
cd3ac4bd96cb19af5117eded84bfe8320c5d787e 15-Jan-2011 Rafael Espindola <rafael.espindola@gmail.com> Also set unnamed_addr on declarations.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123531 91177308-0d34-0410-b5e6-96231b3b80d8
isibility.cpp
table-linkage.cpp
02fff572fdba94b31d8da0c538cb758380384b3b 14-Jan-2011 Owen Anderson <resistor@mac.com> Fixed by r123477.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123478 91177308-0d34-0410-b5e6-96231b3b80d8
irtual-base-ctor.cpp
161e40c150e1629fe2861bcfc82ea0dffc00b72f 14-Jan-2011 Chris Lattner <sabre@nondot.org> temporarily xfail, this was broken by r123418


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123430 91177308-0d34-0410-b5e6-96231b3b80d8
irtual-base-ctor.cpp
dce73976163207916d5e6eb9529090ea7f70219e 13-Jan-2011 Douglas Gregor <dgregor@apple.com> Fix a test case

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123382 91177308-0d34-0410-b5e6-96231b3b80d8
ariadic-templates.cpp
255c269f35928a8194fb591656c67ec4ebd846eb 13-Jan-2011 Douglas Gregor <dgregor@apple.com> When your comments and your code are out-of-sync, the test case is wrong.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123379 91177308-0d34-0410-b5e6-96231b3b80d8
angle-variadic-templates.cpp
4fc4866945de9b0f1f77a17557060f0ff959b0b1 13-Jan-2011 Douglas Gregor <dgregor@apple.com> Add tests for name mangling of variadic templates.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123378 91177308-0d34-0410-b5e6-96231b3b80d8
angle-variadic-templates.cpp
62b1607e440b26f3683c92be887e8fd94af9c904 13-Jan-2011 Rafael Espindola <rafael.espindola@gmail.com> Only add unnamed_addr to definitions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123354 91177308-0d34-0410-b5e6-96231b3b80d8
isibility.cpp
table-linkage.cpp
9370c8f4af43a98a6f16e65f5d88d58db846e374 12-Jan-2011 Douglas Gregor <dgregor@apple.com> Add IR generation support for SizeOfPackExpr.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123332 91177308-0d34-0410-b5e6-96231b3b80d8
ariadic-templates.cpp
57244f69e2e780bb5584a37a12e31be83b1eaadb 12-Jan-2011 Rafael Espindola <rafael.espindola@gmail.com> Set unnamed_addr in every type info.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123293 91177308-0d34-0410-b5e6-96231b3b80d8
xceptions-no-rtti.cpp
tti-fundamental.cpp
tti-linkage.cpp
irt-dtor-key.cpp
table-linkage.cpp
82a0f4e93c055fb12f5ad7c3d146d50eb201308f 11-Jan-2011 Rafael Espindola <rafael.espindola@gmail.com> Set unnamed_addr in VTTs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123280 91177308-0d34-0410-b5e6-96231b3b80d8
angle-subst-std.cpp
isibility.cpp
tt-layout.cpp
b1c65ff108de47a89585ad37874bd6cb232664cd 11-Jan-2011 Rafael Espindola <rafael.espindola@gmail.com> Set unnamed_addr for type infos that we are confortable marking as hidden. I
think it is safe to mark all type infos with unnamed_addr, but I am not sure.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123275 91177308-0d34-0410-b5e6-96231b3b80d8
tti-linkage.cpp
table-linkage.cpp
9f959db60e8913abafe7d5f5f5a83dc6a5c8d87e 11-Jan-2011 Rafael Espindola <rafael.espindola@gmail.com> Add unnamed_addr to vtables.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123272 91177308-0d34-0410-b5e6-96231b3b80d8
ey-function-vtable.cpp
angle-subst-std.cpp
emplate-instantiation.cpp
irt-template-vtable.cpp
isibility.cpp
table-key-function.cpp
table-linkage.cpp
c5f657fe308f22243f674fc1dfbe24915944d8bf 11-Jan-2011 Rafael Espindola <rafael.espindola@gmail.com> Add unnamed_addr to constructors and destructors.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123197 91177308-0d34-0410-b5e6-96231b3b80d8
rm.cpp
onstructor-init.cpp
onstructors.cpp
opy-constructor-elim-2.cpp
opy-constructor-synthesis-2.cpp
opy-constructor-synthesis.cpp
efault-arg-temps.cpp
efault-arguments.cpp
efault-constructor-template-member.cpp
elete.cpp
estructors.cpp
h.cpp
mplicit-copy-constructor.cpp
angle-subst-std.cpp
angle-template.cpp
ember-functions.cpp
ember-init-assignment.cpp
ember-templates.cpp
ointers-to-data-members.cpp
emplate-anonymous-types.cpp
emplate-instantiation.cpp
emplate-linkage.cpp
alue-init.cpp
irt-dtor-gen.cpp
irtual-base-destructor-call.cpp
irtual-bases.cpp
irtual-destructor-calls.cpp
table-pointer-initialization.cpp
1257bc6ee76b931e3f8e51a88298b95379963d24 10-Jan-2011 Rafael Espindola <rafael.espindola@gmail.com> Add unnamed_addr when creating artificial string globals. For example, in

static const char foo[] = "foo";
static const char *bar = "bar";

the global created to hold "bar" will have it, but foo will not.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123192 91177308-0d34-0410-b5e6-96231b3b80d8
redefined-expr.cpp
666b3e9858d1c4a72e2c228588fbabf1a5a629ff 06-Jan-2011 Devang Patel <dpatel@apple.com> Add target triple.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122980 91177308-0d34-0410-b5e6-96231b3b80d8
ebug-info-large-constant.cpp
150d2df7b659105cfbab39cc85af225391952815 06-Jan-2011 Devang Patel <dpatel@apple.com> test case for r122971.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122972 91177308-0d34-0410-b5e6-96231b3b80d8
ebug-info-large-constant.cpp
a490c47a1e6ba224aceba3ddf1a4e92093d733b8 04-Jan-2011 Douglas Gregor <dgregor@apple.com> Tweak test for portability

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122850 91177308-0d34-0410-b5e6-96231b3b80d8
angle-variadic-templates.cpp
46268675d3f8900b1b2c1392601aa50918bfef88 04-Jan-2011 Douglas Gregor <dgregor@apple.com> Simplistic test case for mangling of variadic templates. There is more to be done in this area

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122845 91177308-0d34-0410-b5e6-96231b3b80d8
angle-variadic-templates.cpp
272324bc881450a71873d2f4e72f17837d8998df 30-Dec-2010 Rafael Espindola <rafael.espindola@gmail.com> Fix PR8796.

The problem was that we were asserting the we never added an empty class
to the same offset twice. This is not true for unions, where two members, empty
or not, can have the some offset.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122633 91177308-0d34-0410-b5e6-96231b3b80d8
mpty-classes.cpp
b68e39930d06ed81a2b431dc09e4cb97e5c0d57a 21-Dec-2010 Douglas Gregor <dgregor@apple.com> In C++, if the user redeclares a builtin function with a type that is
inconsistent with the type that the builtin *should* have, forget
about the builtin altogether: we don't want subsequence analyses,
CodeGen, etc., to think that we have a proper builtin function.

C is protected from errors here because it allows one to use a
library builtin without having a declaration, and detects inconsistent
(re-)declarations of builtins during declaration merging. C++ was
unprotected, and therefore would crash.

Fixes PR8839.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122351 91177308-0d34-0410-b5e6-96231b3b80d8
uiltins.cpp
124b3def9ed99dc844225aeb6b17f789307500ee 21-Dec-2010 Chris Lattner <sabre@nondot.org> add missing newlines at end of file.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122309 91177308-0d34-0410-b5e6-96231b3b80d8
rray-value-initialize.cpp
ullptr.cpp
alue-init.cpp
d8039129f3da19819696209e4005cc73907f5c3b 20-Dec-2010 Francois Pichet <pichet2000@gmail.com> XFAIL vtable-debug-info.cpp on WIN32 and fix curly brace.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122230 91177308-0d34-0410-b5e6-96231b3b80d8
table-debug-info.cpp
743d9ad3a4fb06f3ca1e32abdd648618fe1627b5 20-Dec-2010 Francois Pichet <pichet2000@gmail.com> Disable this test on Windows; it crashes and popup an dialog on each lit test run.
I have no idea how to fix it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122227 91177308-0d34-0410-b5e6-96231b3b80d8
table-debug-info.cpp
2b364a43f50efd3d82177c29a79e66895ab335ad 18-Dec-2010 John McCall <rjmccall@apple.com> Fix test. I added one last test and then forget to re-check.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122137 91177308-0d34-0410-b5e6-96231b3b80d8
isibility.cpp
7f1b98760d419a09b2261c1ef901f6bc1ff33e19 18-Dec-2010 John McCall <rjmccall@apple.com> Apply attributes to explicit specializations. Specializations which
don't provide their own explicit visibility attributes should get them
from the template. Fixes rdar://problem/8778497.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122136 91177308-0d34-0410-b5e6-96231b3b80d8
isibility.cpp
9c39acfda88268bcc7fb5521b55ce41942dcb3b0 17-Dec-2010 John McCall <rjmccall@apple.com> Give hidden visibility to RTTI for derived types. This is kindof a hacky
way to do this, but it fixes rdar://problem/8778973



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122033 91177308-0d34-0410-b5e6-96231b3b80d8
tti-linkage.cpp
bfdcdc8e26097c9dbb4c40d78296f6ccc3e6684c 15-Dec-2010 John McCall <rjmccall@apple.com> Set the "implicitly inline" bit on a method as soon as we see a definition
within the class. Teach IR gen to look for function definitions in record
lexical contexts when deciding whether to emit a function whose address
was taken. Fixes PR8789.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121833 91177308-0d34-0410-b5e6-96231b3b80d8
nline-functions.cpp
90f1450c109fbbd333001165bbd986061f7c4513 10-Dec-2010 John McCall <rjmccall@apple.com> Treat visibility on an enclosing namespace as a non-explicit source of
visibility. Fixes PR8713.

I've disabled a test which was testing that you can #pragma pop visibility
to get out of a namespace's visibility attribute. We should probably just
diagnose that as an error unless it's instrumental to someone's system
headers.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121459 91177308-0d34-0410-b5e6-96231b3b80d8
ragma-visibility.cpp
isibility-inlines-hidden.cpp
db2b42fb4d43be5af14ba33d49bbd163f01646ec 10-Dec-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Fix another obscure corner layout case.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121436 91177308-0d34-0410-b5e6-96231b3b80d8
ragma-pack.cpp
4d936ecf803f44d74d7ad92599efe2ac4213a442 09-Dec-2010 Devang Patel <dpatel@apple.com> Update test.
This test intends to catch invalid use of ".byte 256" in output. Now, the assert in MC will be triggered in such cases.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121403 91177308-0d34-0410-b5e6-96231b3b80d8
table-debug-info.cpp
8f1509446fc51db0473ea1241910c06353a153b8 09-Dec-2010 Douglas Gregor <dgregor@apple.com> When an "inline" declaration was followed by a definition not marked
"inline", we weren't giving the definition weak linkage because the
"inline" bit wasn't propagated. This was a longstanding FIXME that,
somehow, hadn't triggered a bug in the wild. Fix this problem by
tracking whether any declaration was marked "inline", and clean up the
semantics of GNU's "extern inline" semantics calculation based on this
change.

Fixes <rdar://problem/8740363>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121373 91177308-0d34-0410-b5e6-96231b3b80d8
nline-functions.cpp
40e17752086c2c497951d64f5ac6ab5039466113 09-Dec-2010 Francois Pichet <pichet2000@gmail.com> Fix PR8760: IndirectFieldDecl Type was not updated during template instantiation.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121363 91177308-0d34-0410-b5e6-96231b3b80d8
nonymous-union-member-initializer.cpp
048b905644a3a43e3daa41213a23563bec1782b2 09-Dec-2010 Devang Patel <dpatel@apple.com> Test case for r121323.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121324 91177308-0d34-0410-b5e6-96231b3b80d8
table-debug-info.cpp
f5fe2925b87cf382f2f13983c81679e38067122b 07-Dec-2010 Rafael Espindola <rafael.espindola@gmail.com> Fix PR8720 by printing an error message with a substring that the gcc testsuite searches for.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121137 91177308-0d34-0410-b5e6-96231b3b80d8
ttr.cpp
cd940a1e13e588a43973cd7ae33b5c33a3062739 06-Dec-2010 John McCall <rjmccall@apple.com> __block variables require us to evaluate the RHS of an assignment before
the LHS, or else the pointer might be invalid. This is kindof dumb, but
go ahead and make sure we're doing that for l-value scalar assignment,
which fixes a miscompile of obj-c++.dg/block-seq.mm.

Leave a FIXME for how to solve this problem for agg __blocks.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120992 91177308-0d34-0410-b5e6-96231b3b80d8
olatile-1.cpp
2a41637a995affa1563f4d82a8b026e326a2faa0 05-Dec-2010 John McCall <rjmccall@apple.com> Fix a bug in the emission of __real/__imag l-values on scalar operands.
Fix a bug in the emission of complex compound assignment l-values.
Introduce a method to emit an expression whose value isn't relevant.
Make that method evaluate its operand as an l-value if it is one.
Fixes our volatile compliance in C++.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120931 91177308-0d34-0410-b5e6-96231b3b80d8
olatile-1.cpp
olatile.cpp
560bf12e97773ba19e55382c32f8b64cd8315315 05-Dec-2010 Anders Carlsson <andersca@mac.com> Put each test in class-layout.cpp into a separate namespace.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120925 91177308-0d34-0410-b5e6-96231b3b80d8
lass-layout.cpp
d1d56df188e25c633f9bc65d229897b42442b0f7 02-Dec-2010 Chris Lattner <sabre@nondot.org> fix PR8726 by teaching the aggregate init optimization code to handle
structs with references in them correctly.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120722 91177308-0d34-0410-b5e6-96231b3b80d8
alue-init.cpp
2575585b79d3380ae5175437da160e5b56385fa8 02-Dec-2010 Fariborz Jahanian <fjahanian@apple.com> Test for // rdar://8594790


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120717 91177308-0d34-0410-b5e6-96231b3b80d8
lock-byref-cxx-objc.cpp
0ae287a498b8cec2086fe6b7e753cbb3df63e74a 01-Dec-2010 John McCall <rjmccall@apple.com> Restore the lvalue-to-rvalue conversion patch with a minimal fix.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120555 91177308-0d34-0410-b5e6-96231b3b80d8
erived-to-base.cpp
f8b3015060096a946d91578d0f3b65d3097a4ebb 28-Nov-2010 Anders Carlsson <andersca@mac.com> Look through parentheses when deciding whether an expr is a temporary object. Fixes PR8683.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120247 91177308-0d34-0410-b5e6-96231b3b80d8
opy-constructor-elim-2.cpp
74fb0edb44b7ed52af9b8053032ccaab29b5c0cc 17-Nov-2010 John McCall <rjmccall@apple.com> Reset the lifetime-managed flag between emission of the agg conditional
branches. Fixes PR8623.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119408 91177308-0d34-0410-b5e6-96231b3b80d8
emporaries.cpp
83ce9d4a552987d34cbd500e983db8d770232379 17-Nov-2010 John McCall <rjmccall@apple.com> Support compound complex operations as l-values in C++. Add a test
case based on CodeGen/volatile-1.c which tests the current C++
semantics, and note the many, many places we fall short of them.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119402 91177308-0d34-0410-b5e6-96231b3b80d8
olatile-1.cpp
560ba1472cb6dc574ad726bbe01c8311f6fa9187 16-Nov-2010 Bob Wilson <bob.wilson@apple.com> Add a test for Neon vector mangling

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119304 91177308-0d34-0410-b5e6-96231b3b80d8
angle-neon-vectors.cpp
af5fd25a808f3059f988cced0d30fa3b19d027fd 14-Nov-2010 NAKAMURA Takumi <geek4civic@gmail.com> test/CodeGenCXX/dyncast.cpp: Remove XFAIL:win32 with tweaking llvm/utils/FileCheck in r119023, due to DOSish crlf issue.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119024 91177308-0d34-0410-b5e6-96231b3b80d8
yncast.cpp
34999876e215b22febc240b1a6dc054215d12f9c 13-Nov-2010 Fariborz Jahanian <fjahanian@apple.com> Block API patch to do copy ctor of copied-in cxx objects in
copy helper function and dtor of copied cxx objects
in dispose helper functions. __block variables
TBD next.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119011 91177308-0d34-0410-b5e6-96231b3b80d8
xx-block-objects.cpp
ee743f903858e337434ac0335f147f4de4ecae05 09-Nov-2010 Charles Davis <cdavis@mines.edu> Use the right calling convention when mangling names in the Microsoft C++
mangler. Now member functions and pointers thereof have their calling
convention mangled as __thiscall if they have the default CC (even though,
they technically still have the __cdecl CC).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118598 91177308-0d34-0410-b5e6-96231b3b80d8
angle-ms.cpp
4e3b17c9ce4a198eaeac4355b12e4b523185ecb5 09-Nov-2010 John McCall <rjmccall@apple.com> When re-using a vtable slot for the nearest overridden method, just because
there's no return adjustment from the overridden to the overrider doesn't
mean there isn't a return adjustment from the overrider to the final
overrider. This matters if we're emitting a virtual this-adjustment thunk
because the overrider virtually inherits from the class providing the
nearest overridden method. Do the appropriate return adjustment in this case.

Fixes PR7611.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118466 91177308-0d34-0410-b5e6-96231b3b80d8
hunks.cpp
fd4524b4452d5dcda9c7cb9b1b665fd0f4b6267e 08-Nov-2010 NAKAMURA Takumi <geek4civic@gmail.com> test/CodeGenCXX/rtti-linkage.cpp: Get rid of sort(1) to remove XFAIL: win32.

On the certain system, bogus SORT.EXE is picked up. Its sort-order is incompatible to POSIX.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118391 91177308-0d34-0410-b5e6-96231b3b80d8
tti-linkage.cpp
3030eb82593097502469a8b3fc26112c79c75605 06-Nov-2010 John McCall <rjmccall@apple.com> Simplify the logic for emitting guard variables for template static
data members by delaying the emission of the initializer until after
linkage and visibility have been set on the global. Also, don't
emit a guard unless the variable actually ends up with vague linkage,
and don't use thread-safe statics in any case.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118336 91177308-0d34-0410-b5e6-96231b3b80d8
tatic-data-member.cpp
c9d557301cc910d0562876e6a7b4595e3d2fb846 04-Nov-2010 Anders Carlsson <andersca@mac.com> Pass a -I flag when compiling nullptr.cpp so the typeinfo header can be found. This should fix the errors seen on the bot.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118246 91177308-0d34-0410-b5e6-96231b3b80d8
ullptr.cpp
2bd6250f8e14750033362664ee298c2cc0e64853 04-Nov-2010 Anders Carlsson <andersca@mac.com> std::nullptr_t is a fundamental type for RTTI purposes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118238 91177308-0d34-0410-b5e6-96231b3b80d8
ullptr.cpp
tti-fundamental.cpp
e292368afa63337f5ff64c967857a898d6f868da 04-Nov-2010 Anders Carlsson <andersca@mac.com> Mangle std::nullptr_t as specified by the Itanium C++ ABI.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118236 91177308-0d34-0410-b5e6-96231b3b80d8
angle.cpp
bb5e431bf187a9f3cabb72045694fbaea414a702 04-Nov-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Don't instantiate members not belonging in the semantic context of the template.
e.g. for:

template <int i> class A {
class B *g;
};

'class B' has the template as lexical context but semantically it is
introduced in namespace scope.

Fixes rdar://8611125 & http://llvm.org/PR8505

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118235 91177308-0d34-0410-b5e6-96231b3b80d8
emplate-instantiation.cpp
b8e39236f05b2f71fb2632673948499fd54e2a34 02-Nov-2010 Fariborz Jahanian <fjahanian@apple.com> Fixes an assertion violation when bind to temporary
expression is a dependent expression.
// rdar: // 8620524 and PR7851


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118066 91177308-0d34-0410-b5e6-96231b3b80d8
emplate-dependent-bind-temporary.cpp
112c967bd5c862a0f5d7913aa06700c048807db8 02-Nov-2010 John McCall <rjmccall@apple.com> Ensure that static local variables in function templates inherit the
visibility of their function.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118065 91177308-0d34-0410-b5e6-96231b3b80d8
isibility.cpp
7281d1fbea62a4549b045bb7dc434904f2b609d8 02-Nov-2010 Fariborz Jahanian <fjahanian@apple.com> Fix a crash mangling decayed val argument-typed function.
// rdar: //8620510 and PR7666


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118019 91177308-0d34-0410-b5e6-96231b3b80d8
angle.cpp
bf8cafadb9d4e0d7a90fe78fc175efb80ae34d42 02-Nov-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Properly handle temporaries that are created in a AsmStmt.

Previously the temporaries would get destroyed before the asm call.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118001 91177308-0d34-0410-b5e6-96231b3b80d8
sm.cpp
3698748400478880d2a146ef9eaa111cd0e60522 02-Nov-2010 John McCall <rjmccall@apple.com> Ignore attributes on classes when calculating visibility for members
with their own explicit visibility attributes. Basically we only want to
apply a single visibility attribute from any particular ancestry.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117998 91177308-0d34-0410-b5e6-96231b3b80d8
isibility.cpp
66cbcf3f150d075fead7c5935b6e9c61a32cf3d4 01-Nov-2010 John McCall <rjmccall@apple.com> Only apply -fvisibility-inlines-hidden to definitions. Apparently
isInlined() just gives meaningless results for non-definitions.

Fixes rdar://problem/8614470



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117887 91177308-0d34-0410-b5e6-96231b3b80d8
isibility-inlines-hidden.cpp
5c5a764fcd256df6f6cfbce5cdd2a2dfb2c45e95 31-Oct-2010 Anders Carlsson <andersca@mac.com> Teach the constant expr evaluator about derived-to-base casts when no virtual bases are involved. Fixes PR5974.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117868 91177308-0d34-0410-b5e6-96231b3b80d8
lobal-init.cpp
96e93660124c8028a4c3bcc038ab0cdd18cd7ab2 31-Oct-2010 Anders Carlsson <andersca@mac.com> Don't try to evaluate the LHS or RHS of a member pointer binary operation. Fixes PR8507.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117850 91177308-0d34-0410-b5e6-96231b3b80d8
ointers-to-data-members.cpp
af14603ca61757cf4361b583b45639a04c57e651 30-Oct-2010 John McCall <rjmccall@apple.com> Better solution: calculate the visibility of functions and variables
independently of whether they're definitions, then teach IR generation to
ignore non-explicit visibility when emitting declarations. Use this to
make sure that RTTI, vtables, and VTTs get the right visibility.

More of rdar://problem/8613093



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117781 91177308-0d34-0410-b5e6-96231b3b80d8
isibility.cpp
ee30102a9ef32cdbf0afe0e4c07a53d265a18f98 30-Oct-2010 John McCall <rjmccall@apple.com> GCC faithfully calculates visibility for variables independently of
whether it's a declaration or not, then ignores that information for
declarations unless it was explicitly given. It's not totally clear
how that should be mapped into a sane system, but make an effort.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117780 91177308-0d34-0410-b5e6-96231b3b80d8
isibility.cpp
110e8e56af30363072c140285961592b0107f789 30-Oct-2010 John McCall <rjmccall@apple.com> Restore r117644, this time properly ignoring -fvisibility and type visibility
for namespace-scope variable declarations.

Apply visibility in IR gen to variables that are merely declared
and never defined. We were previously emitting these with default
visibility unless they were declared with private_extern.

Ignore global visibility settings when computing visibility for
a declaration's context, and key several conditions on whether a
visibility attribute exists anywhere in the hierarchy as opposed
to whether it exists at the current level.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117729 91177308-0d34-0410-b5e6-96231b3b80d8
isibility.cpp
1af67f33f32444d7b344c67e03a196cd5e8c03ea 29-Oct-2010 Rafael Espindola <rafael.espindola@gmail.com> Update tests to not search of as.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117711 91177308-0d34-0410-b5e6-96231b3b80d8
ebug-info-namespace.cpp
034f55c1eb93aee61cef5a015eb1d5ba06d3b3d4 29-Oct-2010 Daniel Dunbar <daniel@zuster.org> Revert r117644, "Apply visibility in IR gen to variables that are merely
declared", it breaks things.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117653 91177308-0d34-0410-b5e6-96231b3b80d8
isibility.cpp
14e1bc9201681a52e06b0544ee800b422f6f3efe 29-Oct-2010 John McCall <rjmccall@apple.com> Don't assert on attempts to throw 'bool'. I wonder if in the history of C++
anyone has ever intentionally done this outside of a compiler test case.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117645 91177308-0d34-0410-b5e6-96231b3b80d8
hrow-expressions.cpp
87a4ed905e2febe64021dcdfcdc7f00b27e92f32 29-Oct-2010 John McCall <rjmccall@apple.com> Apply visibility in IR gen to variables that are merely declared
and never defined. We were previously emitting these with default
visibility unless they were declared with private_extern.

Ignore global visibility settings when computing visibility for
a declaration's context, and key several conditions on whether a
visibility attribute exists anywhere in the hierarchy as opposed
to whether it exists at the current level.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117644 91177308-0d34-0410-b5e6-96231b3b80d8
isibility.cpp
0df9587ab011c12968fcbe3518666b2117afe350 29-Oct-2010 John McCall <rjmccall@apple.com> When computing the visibility of a class member, calculate the visibility
of its context without considering global settings like -fvisibility=hidden.
Fixes PR8492.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117628 91177308-0d34-0410-b5e6-96231b3b80d8
isibility.cpp
479edbc8d0777e1bcf30ec3c90ebfb81bd5f4f28 28-Oct-2010 John McCall <rjmccall@apple.com> Don't apply -fvisibility-inlines-hidden to extern templates.
Part 2 of rdar://problem/8595231



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117567 91177308-0d34-0410-b5e6-96231b3b80d8
isibility-inlines-hidden.cpp
67fa6d5ea630c800c3c96e129129aba93d1487c2 28-Oct-2010 John McCall <rjmccall@apple.com> Abandon the type-visibility optimization for functions. GCC doesn't do it,
and it's too much trouble to push for. Fixes PR8478.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117532 91177308-0d34-0410-b5e6-96231b3b80d8
isibility.cpp
76be2a2cabc225c9bfbe5a6673f5e7302bea4aca 28-Oct-2010 Stuart Hastings <stuart@apple.com> Test passes on Darwin; try to XFAIL on freebsd, linux, xp/msvc9.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117515 91177308-0d34-0410-b5e6-96231b3b80d8
ebug-info-namespace.cpp
4bc48877db95b2afd6207fdb54ce271169c994f9 28-Oct-2010 Devang Patel <dpatel@apple.com> Fix context info for enums.
Radar 8595129


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117507 91177308-0d34-0410-b5e6-96231b3b80d8
ebug-info-namespace.cpp
500b782d51541a5f20f3113305bc3842fba8b77a 27-Oct-2010 Fariborz Jahanian <fjahanian@apple.com> patch to do array-to-pointer conversion in a
statement-expression. // rdar: //8600553


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117479 91177308-0d34-0410-b5e6-96231b3b80d8
tmtexpr.cpp
d66f42856539bf1c764c13fba41758228fc4cb9b 27-Oct-2010 Anders Carlsson <andersca@mac.com> Also devirtualize calls to a member functions where the containing class has been marked final.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117445 91177308-0d34-0410-b5e6-96231b3b80d8
ttr-final-devirtualize-virtual-function-calls.cpp
bd2bfae2a6e5dc264e1f13183ad2ac11095766bb 27-Oct-2010 Anders Carlsson <andersca@mac.com> If a virtual member function has the 'final' attribute, we can devirtualize calls to it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117444 91177308-0d34-0410-b5e6-96231b3b80d8
ttr-final-devirtualize-virtual-function-calls.cpp
92d835a86ac334768d0b75936201e4fea3941c1f 27-Oct-2010 Fariborz Jahanian <fjahanian@apple.com> Patch to provide guard when initializing instances
of static data member of a class template.
Fixes //rdar :// 8562966 and pr8409.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117410 91177308-0d34-0410-b5e6-96231b3b80d8
pecialized-static-data-mem-init.cpp
ac65c6208d48b0f9b4661c30c28997a280ac5ba6 26-Oct-2010 John McCall <rjmccall@apple.com> A couple of tweaks to the visibility rules:
- tags with C linkage should ignore visibility=hidden
- functions and variables with explicit visibility attributes should
ignore the linkage of their types
Either of these should be sufficient to fix PR8457.

Also, FileCheck-ize a test case.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117351 91177308-0d34-0410-b5e6-96231b3b80d8
isibility.cpp
e946fc833d8592aa2890bfd9839f1ad839b3d284 26-Oct-2010 Fariborz Jahanian <fjahanian@apple.com> Patch for mis-compile of statement expressions with
non-trivial copy constructors. // rdar: //8540501.
A test will be added to llvm nightly tests.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117324 91177308-0d34-0410-b5e6-96231b3b80d8
tmtexpr.cpp
bd6b04c1ac9f1ff5c65b96e14ca0b5bb5a43a148 23-Oct-2010 Fariborz Jahanian <fjahanian@apple.com> Test emoved.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117160 91177308-0d34-0410-b5e6-96231b3b80d8
tmtexpr-copy-init.cpp
8a97005f97a2a93fc2cd942c040668c5d4df7537 23-Oct-2010 Fariborz Jahanian <fjahanian@apple.com> After discussion with Doug and John, I am reverting
the patch.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117159 91177308-0d34-0410-b5e6-96231b3b80d8
tmtexpr-copy-init.cpp
1fb0caaa7bef765b85972274e3b434af2572c141 22-Oct-2010 John McCall <rjmccall@apple.com> Substantially revise how clang computes the visibility of a declaration to
more closely parallel the computation of linkage. This gets us to a state
much closer to what gcc emits, modulo bugs, which will undoubtedly arise in
abundance.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117147 91177308-0d34-0410-b5e6-96231b3b80d8
ember-pointer-type-convert.cpp
ointers-to-data-members.cpp
isibility.cpp
07ed93f378a8868c9a7c04ca7ae685b85c55e5ea 22-Oct-2010 Fariborz Jahanian <fjahanian@apple.com> Patch fixes miscompile with non-trivial copy constructors and
statement expressions, //rdar: //8540501


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117146 91177308-0d34-0410-b5e6-96231b3b80d8
tmtexpr-copy-init.cpp
82b7d7bc723051d8db4e21883e9072fe3ad99305 18-Oct-2010 John McCall <rjmccall@apple.com> Fix some bugs in local class mangling brought up in PR8355.
Patch by Richard Smith!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116752 91177308-0d34-0410-b5e6-96231b3b80d8
angle-abi-examples.cpp
angle-local-class-vtables.cpp
angle-local-classes-nested.cpp
6102ca1d490836096678d7d934f0b2b78f9293ec 16-Oct-2010 John McCall <rjmccall@apple.com> White-listing templated-scope friend decls is a good idea, but doing it
by marking the decl invalid isn't. Make some steps towards supporting these
and then hastily shut them down at the last second by marking them as
unsupported.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116661 91177308-0d34-0410-b5e6-96231b3b80d8
emplate-instantiation.cpp
716e45460e5b7e8c90a9b9813500a260a6185dea 16-Oct-2010 Chandler Carruth <chandlerc@gmail.com> Not really sure how this worked, but it seems like a clear typo. =]


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116650 91177308-0d34-0410-b5e6-96231b3b80d8
oto.cpp
3bd5b6c3c2ad1d5a6f88cf21f627e8d4f03c4df4 13-Oct-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Embrace C++ ABI 5.2.6 and consider that template instantiations don't have key functions (same as GCC).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116391 91177308-0d34-0410-b5e6-96231b3b80d8
emplate-instantiation.cpp
d2c47bde3bc0c0debd8a9728781d3375efe22bc5 11-Oct-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Make sure the VTables for template instantiations are emitted even if the key function doesn't have a body.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116186 91177308-0d34-0410-b5e6-96231b3b80d8
table-linkage.cpp
6d576051b9ca56fe962077fb194ed2917539989a 11-Oct-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Don't let typeinfo name symbols be 'internal hidden', it can lead to linker conflicts
with similarly named classes in anonymous namespaces.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116185 91177308-0d34-0410-b5e6-96231b3b80d8
tti-linkage.cpp
90fb58e9f5482d2be61c4acfedf4fa69585c8ac1 09-Oct-2010 John McCall <rjmccall@apple.com> Secure this test against slightly different number formatters.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116141 91177308-0d34-0410-b5e6-96231b3b80d8
onst-init.cpp
189d6ef40eff11b83b2cda941d5ed89a5cef09b2 09-Oct-2010 John McCall <rjmccall@apple.com> Permit constant evaluation of const floating-point variables with
constant initializers.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116138 91177308-0d34-0410-b5e6-96231b3b80d8
onst-init.cpp
63d5fb3a142c39ff4236235cb284401b88685692 06-Oct-2010 John McCall <rjmccall@apple.com> When instantiating a new-expression, force a rebuild if there were default
arguments in either the placement or constructor arguments. This is
important if the default arguments refer to a declaration or create a
temporary.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115700 91177308-0d34-0410-b5e6-96231b3b80d8
oto.cpp
23c51b5b10e832451ae10dcce994ffe320aeebbb 05-Oct-2010 John McCall <rjmccall@apple.com> ...without leaving a temporary file behind.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115671 91177308-0d34-0410-b5e6-96231b3b80d8
oto.cpp
1eeaacdbd5530fa9498afe559507f538b7564fea 05-Oct-2010 John McCall <rjmccall@apple.com> Er, this test should actually run IR generation.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115670 91177308-0d34-0410-b5e6-96231b3b80d8
oto.cpp
e71d60d2c948bef21443c3370a9922a2f58bcc3a 05-Oct-2010 John McCall <rjmccall@apple.com> Teach PopCleanupBlock to correctly handle the possibility of branching through
a EH-only cleanup as part of a fallthrough branch-through. That this happens
for this test case is actually a separate bug.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115668 91177308-0d34-0410-b5e6-96231b3b80d8
oto.cpp
d78a01906d2a1edb572a99c11f0901beddbcd8c0 02-Oct-2010 Devang Patel <dpatel@apple.com> Mark explict methods as explict in debug info.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115379 91177308-0d34-0410-b5e6-96231b3b80d8
ebug-info-ctor2.cpp
10a7a6a7ec20179b51544f093aee816a1a41793e 29-Sep-2010 Devang Patel <dpatel@apple.com> Emit method access specifier.
Radar 8490416.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115090 91177308-0d34-0410-b5e6-96231b3b80d8
ebug-info-method.cpp
549ee4bd609a5862070fe432fce99b3ab686c847 29-Sep-2010 Devang Patel <dpatel@apple.com> Test case for r115067.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115068 91177308-0d34-0410-b5e6-96231b3b80d8
ebug-info-member.cpp
c956b6e8ff909858cec5832f024d2af9c58f190b 27-Sep-2010 Nico Weber <nicolasweber@gmx.de> Correctly set "explicit template instantiation" kind on inner structs of templates whose explicit instantiation is first declared and then defined.

Fixes http://llvm.org/pr8207



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114874 91177308-0d34-0410-b5e6-96231b3b80d8
emplate-inner-struct-visibility-hidden.cpp
7d8eb519ce9b0e5434f185c04404bc817032e716 23-Sep-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Use -emit-llvm-only in the test.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114636 91177308-0d34-0410-b5e6-96231b3b80d8
arn-padded-packed.cpp
78a916ec5ff5b66adec3c499e1b9af7b87668309 22-Sep-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Implement -Wpadded and -Wpacked.

-Wpadded warns when undesired padding is introduced in a struct. (rdar://7469556)
-Wpacked warns if a struct is given the packed attribute, but the packed attribute has no effect
on the layout or the size of the struct. Such structs may be mis-aligned for little benefit.

The warnings are emitted at the point where layout is calculated, that is at RecordLayoutBuilder.
To avoid calculating the layouts of all structs regardless of whether they are needed or not,
I let the layouts be lazily constructed when needed. This has the disadvantage that the above warnings
will be emitted only when they are used for IR gen, and not e.g with -fsyntax-only:

$ cat t.c
struct S {
char c;
int i;
};
void f(struct S* s) {}

$ clang -fsyntax-only -Wpadded t.c
$ clang -c -Wpadded t.c -o t.o
t.c:3:7: warning: padding struct 'struct S' with 3 bytes to align 'i' [-Wpadded]
int i;
^
1 warning generated.

This is a good tradeoff between providing the warnings and not calculating layouts for all
structs in case the user has enabled a couple of rarely used warnings.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114544 91177308-0d34-0410-b5e6-96231b3b80d8
arn-padded-packed.cpp
398e6b90f5e161d520a95cbf34c732a55fd3e476 22-Sep-2010 Chris Lattner <sabre@nondot.org> update a bunch of tests that are using the x86 backend instead of grepping IR :(


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114535 91177308-0d34-0410-b5e6-96231b3b80d8
R5050-constructor-conversion.cpp
rray-construction.cpp
rray-operator-delete-call.cpp
all-arg-zero-temp.cpp
ast-conversion.cpp
onstructor-conversion.cpp
onstructor-default-arg.cpp
onstructor-for-array-members.cpp
onvert-to-fptr.cpp
ecl-ref-init.cpp
efault-constructor-for-members.cpp
erived-to-base-conv.cpp
tr-to-member-function.cpp
0b78710636671eeb2c5c4dedffa4ad1d58fa4bb8 21-Sep-2010 Fariborz Jahanian <fjahanian@apple.com> IRgen for gnu extension's conditional lvalue expression
with missing LHS. radar 8453812. Executable test is checked
into llvm test suite.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114457 91177308-0d34-0410-b5e6-96231b3b80d8
nu-conditional-scalar-ext.cpp
aa3b57ee9e36a805371e2a543383225cdd2a5d83 21-Sep-2010 Fariborz Jahanian <fjahanian@apple.com> Implements in IRgen gnu extensions missing LHS for
complex conditionals. Radar 8453812.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114376 91177308-0d34-0410-b5e6-96231b3b80d8
nu-conditional-scalar-ext.cpp
1fb019bf42f5757c027edb56e5bb70233787a39c 18-Sep-2010 Fariborz Jahanian <fjahanian@apple.com> Problem with gnu conditional extension with missing
LHS and when conditional expression is an array. Since
it will be decayed, saved expression must be saved with
decayed expression. This is necessary to preserve semantics
of this extension (and prevent an IRGen crash which expects
an array to always be decayed). I am sure there will be other
cases in c++ (aggregate conditionals for example) when saving of the
expression must happen after some transformation on conditional
expression has happened.
Doug, please review. Fixes // rdar://8446940


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114296 91177308-0d34-0410-b5e6-96231b3b80d8
nu-conditional-scalar-ext.cpp
fc1e6c79bbfe0e9a58bb792996d51f42e36e3d6a 18-Sep-2010 John McCall <rjmccall@apple.com> Fix a bug with binding l-values to elided temporaries, and leave a couple
helpful asserts behind.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114250 91177308-0d34-0410-b5e6-96231b3b80d8
emporaries.cpp
a83c6be907b2a6b9ccc979c79b3a24a7e48b2c54 17-Sep-2010 John McCall <rjmccall@apple.com> Fix test for no-asserts builds.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114185 91177308-0d34-0410-b5e6-96231b3b80d8
onstructor-init.cpp
af9b96828f9126d993c3e155b8453be62013b735 17-Sep-2010 Fariborz Jahanian <fjahanian@apple.com> Patch to add IRgen support for Gnu's conditional operator
extension when missing LHS. This patch covers scalar
conditionals only. Others are wip.
(pr7726, radar 8353567).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114182 91177308-0d34-0410-b5e6-96231b3b80d8
nu-conditional-scalar-ext.cpp
7e1dff7a68a4d00e71debafa7f5c259473091746 17-Sep-2010 John McCall <rjmccall@apple.com> Currently we're initializing the vtable pointers of a class only after
the bases are completely initialized. This won't work --- base
initializer expressions can rely on the vtables having been set up.
Check for uses of 'this' in the initializers and force a vtable
initialization if found.

This might not be good enough; we might need to extend this to handle
the possibility of arbitrary code finding an external reference to this
(not yet completely-constructed!) object and accessing through it,
in which case we'll probably find ourselves doing a lot more unnecessary
stores.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114153 91177308-0d34-0410-b5e6-96231b3b80d8
onstructor-init.cpp
3019c444c672938c57f5573840071ecd73425ee7 17-Sep-2010 John McCall <rjmccall@apple.com> When emitting a new-expression inside a conditional expression,
the cleanup might not be dominated by the allocation code.
In this case, we have to store aside all the delete arguments
in case we need them later. There's room for optimization here
in cases where we end up not actually needing the cleanup in
different branches (or being able to pop it after the
initialization code).

Also make sure we only call this operator delete along the path
where we actually allocated something.

Fixes rdar://problem/8439196.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114145 91177308-0d34-0410-b5e6-96231b3b80d8
xceptions.cpp
19e60ad937af50843a653fa19c8be6a83a64f24f 16-Sep-2010 John McCall <rjmccall@apple.com> Right, there are *two* cases of pr-value class-type expressions that don't
derive from temporaries of the same type. Black-list member expressions
as well.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114071 91177308-0d34-0410-b5e6-96231b3b80d8
emporaries.cpp
465e8c1f05ee77647a3cf2deb9d8e534b2c14caf 15-Sep-2010 John McCall <rjmccall@apple.com> Test hardening.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113963 91177308-0d34-0410-b5e6-96231b3b80d8
emporaries.cpp
558d2abc7f9fd6801cc7677200992313ae90b5d8 15-Sep-2010 John McCall <rjmccall@apple.com> one piece of code is responsible for the lifetime of every aggregate
slot. The easiest way to do that was to bundle up the information
we care about for aggregate slots into a new structure which demands
that its creators at least consider the question.

I could probably be convinced that the ObjC 'needs GC' bit should
be rolled into this structure.
Implement generalized copy elision. The main obstacle here is that
IR-generation must be much more careful about making sure that exactly



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113962 91177308-0d34-0410-b5e6-96231b3b80d8
emporaries.cpp
7d8647f194ae4f2499e5bcd40dcfea34cd21ebc6 14-Sep-2010 John McCall <rjmccall@apple.com> Implement the EH cleanup to call 'operator delete' if a new-expression throws
(but not if destructors associated with the full-expression throw).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113836 91177308-0d34-0410-b5e6-96231b3b80d8
xceptions.cpp
4076dacf1497fb95cb298b9d964fbdbdaf9bde6c 13-Sep-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> When applying 'delete' on a pointer-to-array type match GCC and EDG behavior and treat it as 'delete[]'.
Also offer a fix-it hint adding '[]'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113778 91177308-0d34-0410-b5e6-96231b3b80d8
elete.cpp
5cd91b513455fd7753e8815b54f0a49bbca6602d 08-Sep-2010 John McCall <rjmccall@apple.com> Implement ARM static local initialization guards, which are more compact than
Itanium guards and use a slightly different compiled-in API.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113330 91177308-0d34-0410-b5e6-96231b3b80d8
rm.cpp
tatic-init.cpp
hreadsafe-statics-exceptions.cpp
0c42bb653dc40b1caae010618831e320af824b18 05-Sep-2010 Chris Lattner <sabre@nondot.org> 'const std::type_info*' instead of 'std::type_info const*'



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113092 91177308-0d34-0410-b5e6-96231b3b80d8
table-layout.cpp
a96a6906601cb5f40ba54cd750c9f87e04568f7d 03-Sep-2010 Chandler Carruth <chandlerc@gmail.com> Clean up some whitespace and comments from this test that were remnants of
a previous iteration of the test.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113013 91177308-0d34-0410-b5e6-96231b3b80d8
emplate-anonymous-types.cpp
17fb855280be411389361f1c79753e0013c4187c 03-Sep-2010 Chandler Carruth <chandlerc@gmail.com> Allow anonymous and local types. The support was already in place for these,
but this makes them work even as an extension in C++98. This resolves PR8077.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113011 91177308-0d34-0410-b5e6-96231b3b80d8
emplate-anonymous-types.cpp
fc4002872864e3c29c896000519ae989b6fdb7dd 03-Sep-2010 John McCall <rjmccall@apple.com> Re-commit r112916 with an additional fix for the self-host failures.
I've audited the remaining getFunctionInfo call sites.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112936 91177308-0d34-0410-b5e6-96231b3b80d8
rm.cpp
2b8d60dfdfbbf19f6e2dcfb5c438f8eda8a7ecb4 03-Sep-2010 John McCall <rjmccall@apple.com> Revert r112916, it's breaking selfhost pretty badly.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112925 91177308-0d34-0410-b5e6-96231b3b80d8
rm.cpp
3e7cf38810ec39be938b635ddd41e3cefde86883 03-Sep-2010 Daniel Dunbar <daniel@zuster.org> Revert "Another i1 vs. i8 type mismatch issue. This time", it breaks some projects.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112922 91177308-0d34-0410-b5e6-96231b3b80d8
eference-in-blocks.cpp
52968abd2aaf36f17d9858581563bf80475fb178 03-Sep-2010 John McCall <rjmccall@apple.com> It's not safe to use the generic CXXMethodDecl overload of CGT::getFunctionInfo
to set up a destructor call, because ABIs can tweak these conventions.
Fixes rdar://problem/8386802.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112916 91177308-0d34-0410-b5e6-96231b3b80d8
rm.cpp
cc09c022bebcabd5f222d410bb6695af0ea93257 03-Sep-2010 Douglas Gregor <dgregor@apple.com> Fix a few more ConvertTypes that should be ConvertTypeForMems, fixing
two regressions in Boost.Config.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112908 91177308-0d34-0410-b5e6-96231b3b80d8
ew.cpp
6b61fcd47fe94a88899a95b9e73b600257735286 03-Sep-2010 Chris Lattner <sabre@nondot.org> stop looking for #uses comments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112898 91177308-0d34-0410-b5e6-96231b3b80d8
yncast.cpp
tt-layout.cpp
73556e0d961e2d58eae232e647c9def8da1caecf 02-Sep-2010 Fariborz Jahanian <fjahanian@apple.com> Another i1 vs. i8 type mismatch issue. This time
a 'bool' byref variable in memory. Fixes radar 8382559.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112835 91177308-0d34-0410-b5e6-96231b3b80d8
eference-in-blocks.cpp
f9cce31a1c71e2949cd5f47616a5624f5fedd84d 02-Sep-2010 Douglas Gregor <dgregor@apple.com> Fix more i1/i8 pointer madness. Here, an overactive assertion
complains when the element type of a C++ "delete" expression is
different from what we would expect from the pointer type. When
deleting a bool*, we end up with an i1 on one side (where we compute
the LLVM type from the Clang bool type) and i8 on the other (where we
grab the LLVM type from the LLVM pointer type). I've weakened the
assertion appropriately, and the Boost Parallel Graph Library now
passes its regression tests.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112821 91177308-0d34-0410-b5e6-96231b3b80d8
elete.cpp
b61e2a328c5c2552b0bb3a8d3c4bc9389f34a321 02-Sep-2010 Douglas Gregor <dgregor@apple.com> Fix a crash involving pointer-to-data-members of boolean type. We were
constructing an LLVM PointerType directly from the "bool"'s LLVM type
(i1), which resulted in unfortunate pointer type i1*. The fix is to
build the LLVM PointerType from the corresponding Clang PointerType,
so that we get i8* in the case of a bool.

John, please review. I also left a FIXME there because we seem to be
dropping "volatile", which would be rather unfortunate.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112819 91177308-0d34-0410-b5e6-96231b3b80d8
ointers-to-data-members.cpp
ae1809689b8773c1ae5abeecb0de2f032a86c118 02-Sep-2010 John McCall <rjmccall@apple.com> Stupid emacs keystroke.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112815 91177308-0d34-0410-b5e6-96231b3b80d8
rm.cpp
1e7fe751466ea82665fd21e9162fd7cc9c5f412d 02-Sep-2010 John McCall <rjmccall@apple.com> Abstract IR generation of array cookies into the C++ ABI class and
implement ARM array cookies. Also fix a few unfortunate bugs:
- throwing dtors in deletes prevented the allocation from being deleted
- adding the cookie to the new[] size was not being considered for
overflow (and, more seriously, was screwing up the earlier checks)
- deleting an array via a pointer to array of class type was not
causing any destructors to be run and was passing the unadjusted
pointer to the deallocator
- lots of address-space problems, in case anyone wants to support
free store in a variant address space :)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112814 91177308-0d34-0410-b5e6-96231b3b80d8
rm.cpp
elete.cpp
ew.cpp
perator-new.cpp
66e7b68b0016aeebe349e21ace93ff0178665d69 01-Sep-2010 Chris Lattner <sabre@nondot.org> fix rdar://8360877 a really nasty miscompilation in Boost.Xpressive
caused by my ABI work. Passing:

struct outer {
int x;
struct epsilon_matcher {} e;
int f;
};

as {i32,i32} isn't safe, because the offset of the second element
needs to be at 8 when it is interpreted as a memory value.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112686 91177308-0d34-0410-b5e6-96231b3b80d8
86_64-arguments.cpp
56bedefe92ae8f604d14bea75cc3040ab32337c2 01-Sep-2010 Fariborz Jahanian <fjahanian@apple.com> Some support for unicode string constants
in wide strings. radar 8360841.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112672 91177308-0d34-0410-b5e6-96231b3b80d8
ncode-string.cpp
4c40d98ab7acf5f27fa89b17bd8fc0ef7683df37 31-Aug-2010 John McCall <rjmccall@apple.com> Teach IR generation to return 'this' from constructors and destructors
under the ARM ABI.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112588 91177308-0d34-0410-b5e6-96231b3b80d8
rm.cpp
2ed8f000869103b1adc05d6bc4c635604b6e66a7 27-Aug-2010 Devang Patel <dpatel@apple.com> Debug info for friends!
Patch originally by Alexander Herz.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112275 91177308-0d34-0410-b5e6-96231b3b80d8
ebug-info-friend.cpp
468e8fbda71a02eba31b4d8282fc1d509b552fbe 27-Aug-2010 Devang Patel <dpatel@apple.com> test case for r112238.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112239 91177308-0d34-0410-b5e6-96231b3b80d8
ebug-info-byval.cpp
e7ab92e1d62f9c243bbd1f42f72a7b3c2666d33e 26-Aug-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Fix miscompilation. The cookie was not used when new'ing arrays with multiple dimensions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112188 91177308-0d34-0410-b5e6-96231b3b80d8
ew.cpp
d2932986a16244b7f9a3f9a7a6b0daf543c91540 26-Aug-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Fix miscompilation. The custom new[]/delete[] methods were not getting called for arrays with more than 1 dimension.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112107 91177308-0d34-0410-b5e6-96231b3b80d8
ew.cpp
58e390ef491c8fb11ae17445054ee09527b492d3 25-Aug-2010 Chandler Carruth <chandlerc@gmail.com> Support explicit instantiation of function templates and members of class
templates when only the declaration is in scope. This requires deferring the
instantiation to be lazy, and ensuring the definition is required for that
translation unit. We re-use the existing pending instantiation queue,
previously only used to track implicit instantiations which were required to be
lazy. Fixes PR7979.

A subsequent change will rename *PendingImplicitInstantiations to
*PendingInstatiations for clarity given its broader role.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112037 91177308-0d34-0410-b5e6-96231b3b80d8
xplicit-instantiation.cpp
a8f28da6265950eea768f7e4ade15e4ebaddd56f 25-Aug-2010 John McCall <rjmccall@apple.com> Expression statements undergo lvalue-to-rvalue conversion in C,
but not in C++, so don't emit aggregate loads of volatile references
in null context in C++. Happens to have been caught by an assertion.
We do not get the scalar case right. Volatiles are really broken.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112019 91177308-0d34-0410-b5e6-96231b3b80d8
olatile.cpp
e5848d680c8abc5c76f37b7149b349603db94ce0 23-Aug-2010 Devang Patel <dpatel@apple.com> test case for PR7920.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111821 91177308-0d34-0410-b5e6-96231b3b80d8
ebug-info.cpp
b6c504b9101251bcb364dd9becbb887c97db27d3 23-Aug-2010 Chris Lattner <sabre@nondot.org> fix rdar://8340348, a miscompile of boost that was exposed by r109848.
That revision started classifying truly empty structs like "Y" and "X"
as being NoClass/NoClass and turning them into 'ignore'. The call code
turns around and allocates space for the ignored argument with
GetUndefRValue. The bug is that GetUndefRValue would return the address
as undef, instead of returning an object with a defined address but
undefined contents.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111794 91177308-0d34-0410-b5e6-96231b3b80d8
86_64-arguments.cpp
0bab0cdab751248ca389a5592bcb70eac5d39260 23-Aug-2010 John McCall <rjmccall@apple.com> Abstract out everything having to do with member pointers into the ABI
class; they should just be completely opaque throughout IR gen now,
although I haven't really audited that.

Fix a bug apparently inherited from gcc-4.2 where we failed to null-check
member data pointers when performing derived-to-base or base-to-derived
conversions on them.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111789 91177308-0d34-0410-b5e6-96231b3b80d8
ember-function-pointers.cpp
ointers-to-data-members.cpp
b8f7de94c3a8fb4556d06a1447880e69bc3a113c 22-Aug-2010 Douglas Gregor <dgregor@apple.com> Do not elide copy construction when we're performing base-class initialization

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111783 91177308-0d34-0410-b5e6-96231b3b80d8
opy-constructor-elim-2.cpp
db68e28c05a67735211e688009890cf834c22e75 22-Aug-2010 Douglas Gregor <dgregor@apple.com> Eliminate a stale assertion. Fixes Clang self-host.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111782 91177308-0d34-0410-b5e6-96231b3b80d8
ember-function-pointers.cpp
8c3e554d00d456d5093c21ce8a0c205461279aab 22-Aug-2010 Douglas Gregor <dgregor@apple.com> Preserve the zero-initialization and construction-kind settings when
instantiating CXXConstructExpr expressions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111780 91177308-0d34-0410-b5e6-96231b3b80d8
alue-init.cpp
759e41baf6a95c3a265970b6bf1c97c233fd28b0 22-Aug-2010 Douglas Gregor <dgregor@apple.com> When performing value-initialization for a class with a non-trivial,
implicitly-defined default constructor, zero-initialize the memory
before calling the default constructor. Previously, we would only
zero-initialize in the case of a trivial default constructor.

Also, simplify the hideous logic that determines when we have a
trivial default constructor and, therefore, don't need to emit any
call at all.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111779 91177308-0d34-0410-b5e6-96231b3b80d8
alue-init.cpp
e14add4a275318e7a9cafd3a01f79fb15a5a08bc 22-Aug-2010 John McCall <rjmccall@apple.com> Clean up a very silly use of first-class aggregates.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111777 91177308-0d34-0410-b5e6-96231b3b80d8
ember-function-pointers.cpp
d608cdb7c044365cf4e8764ade1e11e99c176078 22-Aug-2010 John McCall <rjmccall@apple.com> Experiment with using first-class aggregates to represent member function
pointers. I find the resulting code to be substantially cleaner, and it
makes it very easy to use the same APIs for data member pointers (which I have
conscientiously avoided here), and it avoids a plethora of potential
inefficiencies due to excessive memory copying, but we'll have to see if it
actually works.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111776 91177308-0d34-0410-b5e6-96231b3b80d8
ember-function-pointers.cpp
86_32-arguments.cpp
875ab10245d3bf37252dd822aa1616bb0a391095 22-Aug-2010 John McCall <rjmccall@apple.com> Abstract out member-pointer creation. I'm really unhappy about the current
duplication between the constant and non-constant paths in all of this.

Implement ARM ABI semantics for member pointer constants and conversion.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111772 91177308-0d34-0410-b5e6-96231b3b80d8
ember-function-pointers.cpp
f52697a589c1fdd0ff101c472b904d4546e1d373 21-Aug-2010 Daniel Dunbar <daniel@zuster.org> Improve test coverage.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111712 91177308-0d34-0410-b5e6-96231b3b80d8
xpr.cpp
452b7f22d75d1838df72653dcaacbf92b6c34e71 20-Aug-2010 Douglas Gregor <dgregor@apple.com> Fix a major regression with value-initialization of class types with
trivial default constructors. We're weren't zero-initializing them,
which manifested as <rdar://problem/8320532> (a regression in the GCC
test suite) and is likely to have caused significant other breakage.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111650 91177308-0d34-0410-b5e6-96231b3b80d8
alue-init.cpp
6dbce19fdae4cfae4eb5f826284978e723a04e61 20-Aug-2010 John McCall <rjmccall@apple.com> Mangle explicit template arguments in dependent or overloaded names.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111591 91177308-0d34-0410-b5e6-96231b3b80d8
angle.cpp
5e1e89b8af283af34943a477dc6378f1a641df26 18-Aug-2010 John McCall <rjmccall@apple.com> Contextual arity is a feature of mangling expressions; kill off
mangleCallExpression. Also, operator names with unknown arity should
be mangled as binary operators; this is actually covered by an oddly-
positioned sentence in the ABI document. Fixes PR7891.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111395 91177308-0d34-0410-b5e6-96231b3b80d8
angle.cpp
7b86862ff555a9d848ac7abf6042d192b6d5a04d 18-Aug-2010 Douglas Gregor <dgregor@apple.com> Make sure to add MallocAttr to explicitly-declared operator new/new[]
when -fassume-sane-operator-new. Patch by Tom Jablin!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111363 91177308-0d34-0410-b5e6-96231b3b80d8
ew.cpp
d7241c77d388f798c5db29848396109ea1aa83d2 18-Aug-2010 Chris Lattner <sabre@nondot.org> Fix PR7889 by generalizing some over specialized code. There is no
reason that this should be limited to simple lvalues.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111331 91177308-0d34-0410-b5e6-96231b3b80d8
xpr.cpp
5c12c7bde7e39758fb127ac7089ac88097408e8e 18-Aug-2010 Chris Lattner <sabre@nondot.org> fix PR7892, a crash on valid in c++ codegen of __PRETTY_FUNCTION__


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111330 91177308-0d34-0410-b5e6-96231b3b80d8
xpr.cpp
6f615bc52bd5513019c32b378834a3c1b8425bf8 17-Aug-2010 John McCall <rjmccall@apple.com> Whoops. Don't fall through into the overload case when mangling a
dependent call expression.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111300 91177308-0d34-0410-b5e6-96231b3b80d8
angle.cpp
881b36ccbf8eaee709e7763369062a52f5961df1 16-Aug-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Fix initialization for members of anonymous struct in a union.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111159 91177308-0d34-0410-b5e6-96231b3b80d8
nonymous-union-member-initializer.cpp
3cdfc4d1862b7195159c376a4542b440037dac6a 13-Aug-2010 John McCall <rjmccall@apple.com> Properly give unique-external linkage to members of member templates
instantiated with unique-external parameters.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111012 91177308-0d34-0410-b5e6-96231b3b80d8
nonymous-namespaces.cpp
279b5eb6910d64a293e9c0e2887a05c65d8737d7 13-Aug-2010 John McCall <rjmccall@apple.com> Just disable the hidden-visibility optimization for now by hiding it behind
a -cc1 option. The Darwin linker complains about mixed visibility when linking
gcc-built objects with clang-built objects, and the optimization isn't really
that valuable. Platforms with less ornery linkers can feel free to enable this.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110979 91177308-0d34-0410-b5e6-96231b3b80d8
xceptions-no-rtti.cpp
ey-function-vtable.cpp
tti-linkage.cpp
hunks.cpp
irt-template-vtable.cpp
table-key-function.cpp
table-linkage.cpp
7516451f6f3ed870af7cd8490ee34d9af5cc2a3a 12-Aug-2010 Dan Gohman <gohman@apple.com> Revert r110936; this fails on clang-i686-darwin10 too.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110942 91177308-0d34-0410-b5e6-96231b3b80d8
ebug-info-ctor.cpp
f128b858871748d6342bc394af28ea4955b826be 12-Aug-2010 Devang Patel <dpatel@apple.com> Make this test darwin only.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110936 91177308-0d34-0410-b5e6-96231b3b80d8
ebug-info-ctor.cpp
d5f4487fc66689c5bed6055e669d71d2e3e11b5c 12-Aug-2010 Dan Gohman <gohman@apple.com> Temporarily disable this failing test, until it can be properly
investigated.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110917 91177308-0d34-0410-b5e6-96231b3b80d8
ebug-info-ctor.cpp
6d311229f0b894f6a8acda2d78f06a4198b487b7 12-Aug-2010 John McCall <rjmccall@apple.com> Test for rdar://problem/8073696.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110907 91177308-0d34-0410-b5e6-96231b3b80d8
lobal-init.cpp
dabc3e90cc385214a53064d8c44edbece9891ddf 12-Aug-2010 Devang Patel <dpatel@apple.com> Emit debug info for static const class member.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110885 91177308-0d34-0410-b5e6-96231b3b80d8
ebug-info-class.cpp
d67ef0eed463b43980f04a444155f423114be34b 11-Aug-2010 Devang Patel <dpatel@apple.com> Emit a stop point for delegate constructor call. This gives user a chance to step into constructor body.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110853 91177308-0d34-0410-b5e6-96231b3b80d8
ebug-info-ctor.cpp
6a9bb30819628f312a3d99f67221f7e796a38e83 10-Aug-2010 Devang Patel <dpatel@apple.com> Test case for llvm r110712.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110713 91177308-0d34-0410-b5e6-96231b3b80d8
ebug-info-enum.cpp
224124c7b85596157201a67a7ba12d2b0f5c153c 10-Aug-2010 John McCall <rjmccall@apple.com> When initializing a static local, pop the guard-abort EH cleanup after
the variable is fully initialized.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110704 91177308-0d34-0410-b5e6-96231b3b80d8
hreadsafe-statics-exceptions.cpp
9021718882441dd391a1960084580d3cd19c423a 07-Aug-2010 John McCall <rjmccall@apple.com> Inline a special case of EmitAggregateCopy into EmitNullInitialization
to avoid the awesome-but-wrong-in-this-case assertion in the canon EAC.
Fixes PR7834.

Also fix a subtle address-space bug in the memset path.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110511 91177308-0d34-0410-b5e6-96231b3b80d8
alue-init.cpp
7121c8f551d9c91c0cf0e5e1f7f9aafa97241b17 06-Aug-2010 John McCall <rjmccall@apple.com> Don't crash when mangling empty anonymous unions. We never actually *need*
these, but it's convenient to mangle them when deferring them (in the 99.99%
case where it's not an anonymous union, of course).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110381 91177308-0d34-0410-b5e6-96231b3b80d8
angle.cpp
7a536907da776bdc47a704e7cafd641e8150e653 05-Aug-2010 John McCall <rjmccall@apple.com> It turns out that linkers (at least, the Darwin linker) don't necessarily
do the right thing with mixed-visibility symbols, so disable the visibility
optimization where that's possible, i.e. with template classes (since it's
possible that an arbitrary template might be subject to an explicit
instantiation elsewhere). 447.dealII actually does this.

I've put the code under an option that's currently not hooked up to anything.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110374 91177308-0d34-0410-b5e6-96231b3b80d8
angle-subst-std.cpp
tti-linkage.cpp
irt-template-vtable.cpp
table-linkage.cpp
62e22ee7a17bbba427367ec2f9c8c4f60d778ac5 05-Aug-2010 Eli Friedman <eli.friedman@gmail.com> Tests for #pragma GCC visibility.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110316 91177308-0d34-0410-b5e6-96231b3b80d8
ragma-visibility.cpp
65005536dee9216b14e2361153a14ddd8a7cd50a 05-Aug-2010 John McCall <rjmccall@apple.com> Extend the visibility-hidden optimization to linkonce_odr thunks for
functions with in-line definitions, since such thunks will be emitted at any
use of the function.

Completes the feature work for rdar://problem/7523229.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110285 91177308-0d34-0410-b5e6-96231b3b80d8
hunks.cpp
cbfe50224b19119e759802bd0c1463269dffd09e 04-Aug-2010 John McCall <rjmccall@apple.com> Emit standard-library RTTI with external linkage, not weak_odr.

Apply hidden visibility to most RTTI; libstdc++ does not rely on exact
pointer equality for the type info (just the type info names). Apply
the same optimization to RTTI that we do to vtables.

Fixes PR5962.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110192 91177308-0d34-0410-b5e6-96231b3b80d8
xceptions-no-rtti.cpp
tti-fundamental.cpp
tti-linkage.cpp
table-linkage.cpp
0c7d32bde03ae90367cb0666cf8614d425290aa3 04-Aug-2010 John McCall <rjmccall@apple.com> Extend the hidden-visibility vtables optimization to template classes that
haven't been explicitly instantiated.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110189 91177308-0d34-0410-b5e6-96231b3b80d8
angle-subst-std.cpp
irt-template-vtable.cpp
table-linkage.cpp
39dad53772c42eb36ebec1c81c56ba99d038fb94 04-Aug-2010 John McCall <rjmccall@apple.com> Do a very simple pass over every function we emit to infer whether we can
mark it nounwind based on whether it contains any non-nounwind calls.
<rdar://problem/8087431>



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110163 91177308-0d34-0410-b5e6-96231b3b80d8
lobal-init.cpp
3d640e606165daf2eaf18d52c0697f68daec106a 03-Aug-2010 John McCall <rjmccall@apple.com> Emit weak vtables of non-template classes with hidden visibility.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110107 91177308-0d34-0410-b5e6-96231b3b80d8
ey-function-vtable.cpp
irt-template-vtable.cpp
table-key-function.cpp
table-linkage.cpp
85aca0f6a9da02bda705690fd56d0aa713604f08 30-Jul-2010 John McCall <rjmccall@apple.com> Emit global destructors even if the destroyed object has no initializers or has
an initializer requiring temporary object disposal.

Fixes rdar:://problem/8246444.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109849 91177308-0d34-0410-b5e6-96231b3b80d8
lobal-init.cpp
117e3f4cd4d6ea41c3202da8729f94168c5c8239 30-Jul-2010 Chris Lattner <sabre@nondot.org> fix PR5179 and correctly fix PR5831 to not miscompile.

The X86-64 ABI code didn't handle the case when a struct
would get classified and turn up as "NoClass INTEGER" for
example. This is perfectly possible when the first slot
is all padding (e.g. due to empty base classes). In this
situation, the first 8-byte doesn't take a register at all,
only the second 8-byte does.

This fixes this by enhancing the x86-64 abi stuff to allow
and handle this case, reverts the broken fix for PR5831,
and enhances the target independent stuff to be able to
handle an argument value in registers being accessed at an
offset from the memory value.

This is the last x86-64 calling convention related miscompile
that I'm aware of.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109848 91177308-0d34-0410-b5e6-96231b3b80d8
angle-exprs.cpp
ember-functions.cpp
86_64-arguments.cpp
a7206c5367c2e5879fe6d9a07ed50aa003a56976 29-Jul-2010 Chris Lattner <sabre@nondot.org> fix PR7742 / rdar://8250764, a miscompilation of struct
return where the struct has a base but no fields. This
was because the x86-64 abi logic was checking the wrong
predicate in one place.

This was introduced in r91874, which was a fix for PR5831,
which lacked a CHECK line, so I verified and added it.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109759 91177308-0d34-0410-b5e6-96231b3b80d8
86_64-arguments.cpp
800588fd230d2c37ddce8fbf4a3881352715d700 29-Jul-2010 Chris Lattner <sabre@nondot.org> Kill off the 'coerce' ABI passing form. Now 'direct' and 'extend' always
have a "coerce to" type which often matches the default lowering of Clang
type to LLVM IR type, but the coerce case can be handled by making them
not be the same.

This simplifies things and fixes issues where X86-64 abi lowering would
return coerce after making preferred types exactly match up. This caused
us to compile:

typedef float v4f32 __attribute__((__vector_size__(16)));
v4f32 foo(v4f32 X) {
return X+X;
}

into this code at -O0:

define <4 x float> @foo(<4 x float> %X.coerce) nounwind {
entry:
%retval = alloca <4 x float>, align 16 ; <<4 x float>*> [#uses=2]
%coerce = alloca <4 x float>, align 16 ; <<4 x float>*> [#uses=2]
%X.addr = alloca <4 x float>, align 16 ; <<4 x float>*> [#uses=3]
store <4 x float> %X.coerce, <4 x float>* %coerce
%X = load <4 x float>* %coerce ; <<4 x float>> [#uses=1]
store <4 x float> %X, <4 x float>* %X.addr
%tmp = load <4 x float>* %X.addr ; <<4 x float>> [#uses=1]
%tmp1 = load <4 x float>* %X.addr ; <<4 x float>> [#uses=1]
%add = fadd <4 x float> %tmp, %tmp1 ; <<4 x float>> [#uses=1]
store <4 x float> %add, <4 x float>* %retval
%0 = load <4 x float>* %retval ; <<4 x float>> [#uses=1]
ret <4 x float> %0
}

Now we get:

define <4 x float> @foo(<4 x float> %X) nounwind {
entry:
%X.addr = alloca <4 x float>, align 16 ; <<4 x float>*> [#uses=3]
store <4 x float> %X, <4 x float>* %X.addr
%tmp = load <4 x float>* %X.addr ; <<4 x float>> [#uses=1]
%tmp1 = load <4 x float>* %X.addr ; <<4 x float>> [#uses=1]
%add = fadd <4 x float> %tmp, %tmp1 ; <<4 x float>> [#uses=1]
ret <4 x float> %add
}

This implements rdar://8248065



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109733 91177308-0d34-0410-b5e6-96231b3b80d8
86_64-arguments.cpp
e8a126ba9a8a2f53098d388d04ec555b758f0c67 29-Jul-2010 Eli Friedman <eli.friedman@gmail.com> PR7736: Make sure to mark &Class::Member correctly as being type-dependent
inside a template class.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109697 91177308-0d34-0410-b5e6-96231b3b80d8
ependent-type-member-pointer.cpp
413e67778d593215d2f2161a4e712c8568f1ddd0 28-Jul-2010 John McCall <rjmccall@apple.com> When creating a jump destination, its scope should be the scope of the
enclosing normal cleanup, not the top of the EH stack. I'm *really*
surprised this hasn't been causing more problems.

Fixes rdar://problem/8231514.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109569 91177308-0d34-0410-b5e6-96231b3b80d8
h.cpp
7cd4b060f1e59f6d29126383ceee614e4772f859 27-Jul-2010 John McCall <rjmccall@apple.com> Test for the presence of EH branch-throughs instead of normal branch-throughs.
I knew this code duplication would bite me.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109463 91177308-0d34-0410-b5e6-96231b3b80d8
h.cpp
3dc7e7b9c59b9a2ed4f530b32e710a3738611df7 24-Jul-2010 John McCall <rjmccall@apple.com> Mangle enum constant expressions. Fixes rdar://problem/8204122



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109315 91177308-0d34-0410-b5e6-96231b3b80d8
angle.cpp
b7690b425845b636849f25074d64d30aad646473 24-Jul-2010 Chris Lattner <sabre@nondot.org> turn down the logical bitwise confusion warning to not warn
when the RHS of the ||/&& is ever 0 or 1. This handles a variety of
creative idioms for "true" used in C programs and fixes many false
positives at the expense of a few false negatives. This fixes
rdar://8230351.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109314 91177308-0d34-0410-b5e6-96231b3b80d8
tatic-init-2.cpp
ff8e11579fc904aa4032d90d2be6ce1ac5fc9fe1 23-Jul-2010 John McCall <rjmccall@apple.com> Revise cleanup IR generation to fix a major bug with cleanups (PR7686)
as well as some significant asymptotic inefficiencies with threading
multiple jumps through deep cleanups.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109274 91177308-0d34-0410-b5e6-96231b3b80d8
ondition.cpp
h.cpp
50da2cadcc6da86abff6772de65280ace2cabc94 21-Jul-2010 John McCall <rjmccall@apple.com> Implement proper base/member destructor EH chaining.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108989 91177308-0d34-0410-b5e6-96231b3b80d8
estructors.cpp
182ab5112650d3228291c4dadd64a9f77f5aeb51 21-Jul-2010 John McCall <rjmccall@apple.com> Convert the EH cleanups for base and member destructors in a constructor into
lazy cleanups.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108978 91177308-0d34-0410-b5e6-96231b3b80d8
estructors.cpp
59174c0633fb5cde41735cfbff5744bdf837e8d9 21-Jul-2010 Douglas Gregor <dgregor@apple.com> Implement zero-initialization for array new when there is an
initializer of (). Make sure to use a simple memset() when we can, or
fall back to generating a loop when a simple memset will not
suffice. Fixes <rdar://problem/8212208>, a regression due to my work
in r107857.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108977 91177308-0d34-0410-b5e6-96231b3b80d8
ew.cpp
204b075fcc47c3f2aa7276dfba9b42eb25840b53 21-Jul-2010 John McCall <rjmccall@apple.com> Fix the IR generation for catching pointers by references.
Fixes <rdar://problem/8212123>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108944 91177308-0d34-0410-b5e6-96231b3b80d8
h.cpp
806941eab5e1d62d7676e5cdc0e1d9e397ea78b4 20-Jul-2010 Chris Lattner <sabre@nondot.org> in 'new int[4]', constant fold the 4*4=16 instead of
doing an overflow check.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108943 91177308-0d34-0410-b5e6-96231b3b80d8
ew.cpp
c11787fc247ec49f7c651be4b2c1be096cf4970a 20-Jul-2010 Chris Lattner <sabre@nondot.org> don't demand names to be on IR.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108937 91177308-0d34-0410-b5e6-96231b3b80d8
perator-new.cpp
962312bf0c7b45e73acfb9af4acd172f75bfc916 20-Jul-2010 Chris Lattner <sabre@nondot.org> temporarily disable this to fix the build bot.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108936 91177308-0d34-0410-b5e6-96231b3b80d8
ew.cpp
83252dcfe61aaebcb6bc117e71dc12968729513f 20-Jul-2010 Chris Lattner <sabre@nondot.org> Follow the implementation approach suggested by PR6687,
which generates more efficient and more obviously conformant
code. We now test for overflow of the multiply then force
the result to -1 if so. On X86, this generates nice code
like this:

__Z4testl: ## @_Z4testl
## BB#0: ## %entry
subl $12, %esp
movl $4, %eax
mull 16(%esp)
testl %edx, %edx
movl $-1, %ecx
cmovel %eax, %ecx
movl %ecx, (%esp)
call __Znam
addl $12, %esp
ret



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108927 91177308-0d34-0410-b5e6-96231b3b80d8
perator-new.cpp
700a1cb1d207e660fcd9c234cccfc78553f06802 20-Jul-2010 Devang Patel <dpatel@apple.com> Print template argument names for template class.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108916 91177308-0d34-0410-b5e6-96231b3b80d8
ebug-info-template.cpp
6c552c1d5f47fbba00e6268d96a26ad026f2da2a 20-Jul-2010 Chris Lattner <sabre@nondot.org> implement rdar://5739832 - operator new should check for overflow in multiply,
causing clang to compile this code into something that correctly throws a
length error, fixing a potential integer overflow security attack:

void *test(long N) {
return new int[N];
}

int main() {
test(1L << 62);
}

We do this even when exceptions are disabled, because it is better for the
code to abort than for the attack to succeed.

This is heavily based on a patch that Fariborz wrote.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108915 91177308-0d34-0410-b5e6-96231b3b80d8
perator-new.cpp
2b02f7a051b092ebbae436026565fee52683972f 19-Jul-2010 Benjamin Kramer <benny.kra@googlemail.com> Adjust test for float printing differences. Windows uses three digits for the exponent, everyone else two.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108693 91177308-0d34-0410-b5e6-96231b3b80d8
eference-cast.cpp
c00cb6409307846a9bbcd86d307a1a91aab659d0 18-Jul-2010 Eli Friedman <eli.friedman@gmail.com> Fix mangling for static member variables of classes inside an extern "C"
linkage specification. Not sure if this is the ideal fix, but I'm reasonably
sure it's correct vs. gcc.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108656 91177308-0d34-0410-b5e6-96231b3b80d8
angle.cpp
f0ca0ee66e5b1f3fc4d98e0d8795fa92559ce491 18-Jul-2010 Eli Friedman <eli.friedman@gmail.com> Fix crash initializing a bit-field with a non-constant in a place where we
try to evaluate the initializer as a constant.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108632 91177308-0d34-0410-b5e6-96231b3b80d8
onconst-init.cpp
bf40cb518312dde1c07e44fcae59bc4eec65589c 16-Jul-2010 John McCall <rjmccall@apple.com> When deferring the emission of declarations with initializers in C++, remember
the order they appeared in the translation unit. If they get emitted, put them
in their proper order. Fixes rdar://problem/7458115



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108477 91177308-0d34-0410-b5e6-96231b3b80d8
lobal-init.cpp
7c7a79303b62f51c1ff02f9ce41d81211a69d3b4 15-Jul-2010 Douglas Gregor <dgregor@apple.com> Reinstate the scalar-cast-to-const-reference improvements, this time
with the proper spelling of "non-class prvalue". Silly me, I think
class rvalues were xvalues rather than prvalues!

Hah hah hah.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108443 91177308-0d34-0410-b5e6-96231b3b80d8
eference-cast.cpp
928d69f2927c32e2f57a882a96c2bef1de79aa4b 15-Jul-2010 Douglas Gregor <dgregor@apple.com> Revert r108431 and r108433 (the cast-to-const-reference fixes), which
broke nightlytest.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108439 91177308-0d34-0410-b5e6-96231b3b80d8
eference-cast.cpp
db30c0f5cfcda4483bf4d2a02d6a94289984a4a9 15-Jul-2010 Devang Patel <dpatel@apple.com> Revert 108220 and subsequent patch.
This is not required (I am not 100% sure why) but method.exp from gdb testsuite flagged regression due to this patch.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108434 91177308-0d34-0410-b5e6-96231b3b80d8
ember-qual-debug-info.cpp
5467209f23097d5b0fc628c18aaa85e73d386598 15-Jul-2010 Douglas Gregor <dgregor@apple.com> Teach CodeGenFunction::EmitCastLValue() to handle casts to an lvalue
that involve binding a reference to a pure rvalue temporary (e.g., not
a class temporary), by creating a new temporary and copying the result
there. Fixes PR6024.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108431 91177308-0d34-0410-b5e6-96231b3b80d8
eference-cast.cpp
77d439a4d69ffe30a7607c07b3ec5113824fd53e 14-Jul-2010 Douglas Gregor <dgregor@apple.com> Add lvalue-bitcast support for complex numbers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108363 91177308-0d34-0410-b5e6-96231b3b80d8
value-bitcasts.cpp
b6f532e2b03dbbfd97a37a7bb845fe23f8136889 14-Jul-2010 John McCall <rjmccall@apple.com> Fix the mangling of template template arguments, which do not always
follow <name>; instead they follow <type>, which has <name> as a subset.

Fixes PR7446.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108326 91177308-0d34-0410-b5e6-96231b3b80d8
angle.cpp
bc25f19da3cff74cb0ad4f228e9beca99ed56582 14-Jul-2010 Douglas Gregor <dgregor@apple.com> Add missing testcases for lvalue bitcasts

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108296 91177308-0d34-0410-b5e6-96231b3b80d8
value-bitcasts.cpp
8e3f86193995c47ee0d229e4336c3382410f09f5 14-Jul-2010 John McCall <rjmccall@apple.com> Allow for the possibility that __cxa_end_catch might throw for a catch-all block
or a catch of a record type by value or reference. Also convert this to a
lazy cleanup.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108287 91177308-0d34-0410-b5e6-96231b3b80d8
h.cpp
09faeabf39a6fab2e2beb6bf03da970c17d2049a 13-Jul-2010 John McCall <rjmccall@apple.com> Switch the __cxa_free_exception cleanup to be lazy.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108276 91177308-0d34-0410-b5e6-96231b3b80d8
h.cpp
da65ea86482bc116906edfb9ba1d7124f76cc867 13-Jul-2010 John McCall <rjmccall@apple.com> Teach IR generation how to lazily emit cleanups. This has a lot of advantages,
mostly in avoiding unnecessary work at compile time but also in producing more
sensible block orderings.

Move the destructor cleanups for local variables over to use lazy cleanups.
Eventually all cleanups will do this; for now we have some awkward code
duplication.

Tell IR generation just to never produce landing pads in -fno-exceptions.
This is a much more comprehensive solution to a problem which previously was
half-solved by checks in most cleanup-generation spots.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108270 91177308-0d34-0410-b5e6-96231b3b80d8
ondition.cpp
rvo.cpp
e7ffbe233ed04f921a008ed893672ee759d1a0ad 13-Jul-2010 Fariborz Jahanian <fjahanian@apple.com> More block instantiation stuff. Set variable/param DeclContext
to block context when first instantiating them.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108266 91177308-0d34-0410-b5e6-96231b3b80d8
nstantiate-blocks.cpp
90a8f27f144233b53cac0c88a1595f7f05105b7e 13-Jul-2010 Chris Lattner <sabre@nondot.org> Add a warning to catch a bug recently caught by code review, like this:
t2.c:2:12: warning: use of logical && with constant operand; switch to bitwise &
or remove constant [-Wlogical-bitwise-confusion]
return x && 4;
^ ~

wording improvement suggestions are welcome.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108260 91177308-0d34-0410-b5e6-96231b3b80d8
tatic-init-2.cpp
2ecebc2232d73efa80dd65bb176053f98899d069 13-Jul-2010 Devang Patel <dpatel@apple.com> Add volatile qualifiers for "this".


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108245 91177308-0d34-0410-b5e6-96231b3b80d8
ember-qual-debug-info.cpp
44eac33ae12df384f3f002102f919f603bee330f 13-Jul-2010 Douglas Gregor <dgregor@apple.com> Reinstate the optimization suppressing available_externally functions
at -O0. The only change from the previous patch is that we don't try
to generate virtual method thunks for an available_externally
function.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108230 91177308-0d34-0410-b5e6-96231b3b80d8
emplate-instantiation.cpp
isibility-hidden-extern-templates.cpp
27cc6331e33efac4020058d2fda36c9060ec5afa 12-Jul-2010 Douglas Gregor <dgregor@apple.com> Speculatively revert r108156; it appears to be breaking self-host.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108194 91177308-0d34-0410-b5e6-96231b3b80d8
emplate-instantiation.cpp
isibility-hidden-extern-templates.cpp
7ce1f2714ac0f33210bab14650bce2078ebf343e 12-Jul-2010 Douglas Gregor <dgregor@apple.com> Do not generate LLVM IR for available_externally function bodies at
-O0, since we won't be using the definitions for anything anyway. For
lib/System/Path.o when built in Debug+Asserts mode, this leads to a 4%
improvement in compile time (and suppresses 440 function bodies).

<rdar://problem/7987644>



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108156 91177308-0d34-0410-b5e6-96231b3b80d8
emplate-instantiation.cpp
isibility-hidden-extern-templates.cpp
833f42e32754515bc108b9b1ccccc6e373915a6c 10-Jul-2010 Fariborz Jahanian <fjahanian@apple.com> BlockDeclRefExpr of a dependent type must
be a dependent expression when its is built.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108026 91177308-0d34-0410-b5e6-96231b3b80d8
nstantiate-blocks.cpp
5750b81beb0d508278011c410b01acabc9c7ca05 09-Jul-2010 Fariborz Jahanian <fjahanian@apple.com> Instantiation of byref variable in
block literal expression.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108019 91177308-0d34-0410-b5e6-96231b3b80d8
nstantiate-blocks.cpp
a729da2c29e7df26319acf2675d51e377287a139 09-Jul-2010 Fariborz Jahanian <fjahanian@apple.com> Instantiation of block literal expressions. wip.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108000 91177308-0d34-0410-b5e6-96231b3b80d8
nstantiate-blocks.cpp
9c0c1f333ab8f5a3da055b99ee94778689face17 08-Jul-2010 John McCall <rjmccall@apple.com> Mark calls to 'throw()' functions as nounwind, and mark the functions nounwind
as well.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107858 91177308-0d34-0410-b5e6-96231b3b80d8
estructors.cpp
ed8abf18329df67b0abcbb3a10458bd8c1d2a595 08-Jul-2010 Douglas Gregor <dgregor@apple.com> Reinstate the fix for PR7556. A silly use of isTrivial() was
suppressing copies of objects with trivial copy constructors.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107857 91177308-0d34-0410-b5e6-96231b3b80d8
efault-arg-temps.cpp
emporaries.cpp
84745677f64863e025a6733cb29d0b94bc3a6ae2 08-Jul-2010 Douglas Gregor <dgregor@apple.com> Revert r107828 and r107827, the fix for PR7556, which seems to be
breaking bootstrap on Linux.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107837 91177308-0d34-0410-b5e6-96231b3b80d8
efault-arg-temps.cpp
emporaries.cpp
63ef464c3fad1e8b9f9360baa6c81f974b712e90 08-Jul-2010 Douglas Gregor <dgregor@apple.com> Do not use CXXZeroValueInitExpr for class types. Instead, use
CXXConstructExpr/CXXTemporaryObjectExpr/CXXNewExpr as
appropriate. Fixes PR7556, and provides a slide codegen improvement
when copy-initializing a POD class type from a value-initialized
temporary. Previously, we weren't eliding the copy.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107827 91177308-0d34-0410-b5e6-96231b3b80d8
efault-arg-temps.cpp
emporaries.cpp
59a7000a79118e4c140885ccbb2ac6a686a73092 07-Jul-2010 John McCall <rjmccall@apple.com> Teach function-try-blocks on constructors and destructors to implicitly
rethrow. Fixes rdar://problem/7696603



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107757 91177308-0d34-0410-b5e6-96231b3b80d8
h.cpp
66d80a9c99ef781f0fd56dfcd060e30d4d673c93 06-Jul-2010 John McCall <rjmccall@apple.com> When destroying a cleanup, kill any references to instructions in the entry
block before deleting it. Fixes PR7575.

This really just a short-term fix before implementing lazy cleanups.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107676 91177308-0d34-0410-b5e6-96231b3b80d8
estructors.cpp
044cc54a7d83c90857187c4cd4a0fd33664a7f7f 06-Jul-2010 John McCall <rjmccall@apple.com> When creating functions to run global initializers and destructors, mark them
as nounwind in -fno-exceptions. Fixes rdar://problem/8090834.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107639 91177308-0d34-0410-b5e6-96231b3b80d8
lobal-init.cpp
252cd6a762096e41c324259aaf7de83f2ff10792 06-Jul-2010 John McCall <rjmccall@apple.com> Stop testing for specific basic block numbers in this test.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107632 91177308-0d34-0410-b5e6-96231b3b80d8
ondition.cpp
f1549f66a8216a78112286e3978cea2c29d6334c 06-Jul-2010 John McCall <rjmccall@apple.com> Validated by nightly-test runs on x86 and x86-64 darwin, including after
self-host. Hopefully these results hold up on different platforms.

I tried to keep the GNU ObjC runtime happy, but it's hard for me to test.
Reimplement how clang generates IR for exceptions. Instead of creating new
invoke destinations which sequentially chain to the previous destination,
push a more semantic representation of *why* we need the cleanup/catch/filter
behavior, then collect that information into a single landing pad upon request.

Also reorganizes how normal cleanups (i.e. cleanups triggered by non-exceptional
control flow) are generated, since it's actually fairly closely tied in with
the former. Remove the need to track which cleanup scope a block is associated
with.

Document a lot of previously poorly-understood (by me, at least) behavior.

The new framework implements the Horrible Hack (tm), which requires every
landing pad to have a catch-all so that inlining will work. Clang no longer
requires the Horrible Hack just to make exceptions flow correctly within
a function, however. The HH is an unfortunate requirement of LLVM's EH IR.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107631 91177308-0d34-0410-b5e6-96231b3b80d8
ondition.cpp
estructors.cpp
h.cpp
rvo.cpp
hreadsafe-statics-exceptions.cpp
4d254836f4a6a03fb3c77d0636c3cb5475540eb0 03-Jul-2010 Charles Davis <cdavis@mines.edu> Mangle Objective-C pointers and block pointers in the Microsoft C++ Mangler.

ObjC pointers were easy enough (as far as the ABI is concerned, they're
just pointers to structs), but I had to invent a new mangling for block
pointers. This is particularly worrying with the Microsoft ABI, because
it is a vendor-specific ABI; extending it could come back to bite us
later when MS extends it on their own (and you know they will).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107572 91177308-0d34-0410-b5e6-96231b3b80d8
angle-ms.cpp
08778269cfbf803fb216870060c60eb2adb25ef6 03-Jul-2010 Charles Davis <cdavis@mines.edu> Fix mangling of array dimensions in the Microsoft C++ Mangler.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107568 91177308-0d34-0410-b5e6-96231b3b80d8
angle-ms.cpp
cd712cb5711b597bf3a2a67a4027e2238c8b9828 03-Jul-2010 Charles Davis <cdavis@mines.edu> Mangle member pointer types in the Microsoft C++ Mangler.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107567 91177308-0d34-0410-b5e6-96231b3b80d8
angle-ms.cpp
1139da148e44193a71585f418be96ef9c5f6defa 03-Jul-2010 Charles Davis <cdavis@mines.edu> Fix mangling of function pointers in the Microsoft C++ Mangler.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107564 91177308-0d34-0410-b5e6-96231b3b80d8
angle-ms.cpp
4f0a3376a5e5c9028b0c736ac935895aabdb5fcd 03-Jul-2010 Charles Davis <cdavis@mines.edu> Fix mangling of array parameters for functions in the Microsoft C++ Mangler.
Only actual functions get mangled correctly; I don't know how to fix it for
function pointers yet. Thanks to John McCall for the hint.

Also, mangle anonymous tag types. I don't have a suitable testcase yet; I have
a feeling that that's going to need support for static locals, and I haven't
figured out exactly how MSVC's scheme for mangling those works.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107561 91177308-0d34-0410-b5e6-96231b3b80d8
angle-ms.cpp
d92ec474faeb6133e0d41f0de4526b22778476f2 01-Jul-2010 Douglas Gregor <dgregor@apple.com> Reinstate fix for PR7526, which was failing because, now that we
aren't dropping all exception specifications on destructors, the
exception specifications on implicitly-declared destructors were
detected as being wrong (which they were).

Introduce logic to provide a proper exception-specification for
implicitly-declared destructors. This also fixes PR6972.

Note that the other implicitly-declared special member functions also
need to get exception-specifications. I'll deal with that in a
subsequent commit.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107385 91177308-0d34-0410-b5e6-96231b3b80d8
estructors.cpp
4b662a5684d41ea4ff6b52711929e00fefb00db1 01-Jul-2010 Douglas Gregor <dgregor@apple.com> Revert r107374, which broke bootstrap.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107378 91177308-0d34-0410-b5e6-96231b3b80d8
estructors.cpp
2fef752aebece6786e5f3d54984272ef85564af8 01-Jul-2010 Douglas Gregor <dgregor@apple.com> When building the type of a destructor, make sure to keep the
exception specification. Fixes PR7526.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107374 91177308-0d34-0410-b5e6-96231b3b80d8
estructors.cpp
bcaedaed309ce453a992fdeef4a4c908cc7d9dfb 30-Jun-2010 Chris Lattner <sabre@nondot.org> Reapply:
r107173, "fix PR7519: after thrashing around and remembering how all this stuff"
r107216, "fix PR7523, which was caused by the ABI code calling ConvertType instead"

This includes a fix to make ConvertTypeForMem handle the "recursive" case, and call
it as such when lowering function types which have an indirect result.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107310 91177308-0d34-0410-b5e6-96231b3b80d8
86_64-arguments.cpp
0b8fe8c68eb503b9955f13c0c27b18b1f8321158 30-Jun-2010 Charles Davis <cdavis@mines.edu> Mangle arrays in the Microsoft C++ Mangler. It's not quite finished (it
doesn't mangle array parameters right), but I think that should be fixed
in Sema (Doug, John, what do you think?).

Also, stub out the remaining mangleType() routines.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107264 91177308-0d34-0410-b5e6-96231b3b80d8
angle-ms.cpp
a9e05156438dc3f0ef1067ffce80037d9333e022 30-Jun-2010 Daniel Dunbar <daniel@zuster.org> Revert r107216, "fix PR7523, which was caused by the ABI code calling ConvertType instead", it is part of a boostrap breaking sequence.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107231 91177308-0d34-0410-b5e6-96231b3b80d8
86_64-arguments.cpp
f1d5d8a7f217119063232f72f74cdba4bebbd714 30-Jun-2010 Chris Lattner <sabre@nondot.org> fix PR7523, which was caused by the ABI code calling ConvertType instead
of ConvertTypeRecursive when it needed to in a few cases, causing pointer
types to get resolved at the wrong time.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107216 91177308-0d34-0410-b5e6-96231b3b80d8
86_64-arguments.cpp
d7f7d0895dc43db20c43112a24684f11eed305de 30-Jun-2010 Daniel Dunbar <daniel@zuster.org> IRgen: Assignment to Objective-C properties shouldn't reload the value (which
would trigger an extra method call).
- While in the area, I also changed Clang to not emit an unnecessary load from
'x' in cases like 'y = (x = 1)'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107210 91177308-0d34-0410-b5e6-96231b3b80d8
ember-init-assignment.cpp
9fde9c424f734e1ef45177999e3a04faad127414 29-Jun-2010 Daniel Dunbar <daniel@zuster.org> tests: Use %clangxx when using driver for C++, in case C++ support is disabled.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107153 91177308-0d34-0410-b5e6-96231b3b80d8
onstructor-convert.cpp
xx-apple-kext.cpp
9c254f0415bef9a0bafe5b5026ddb54b727597b1 29-Jun-2010 Chris Lattner <sabre@nondot.org> Change X86_64ABIInfo to have ASTContext and TargetData ivars to
avoid passing ASTContext down through all the methods it has.

When classifying an argument, or argument piece, as INTEGER, check
to see if we have a pointer at exactly the same offset in the
preferred type. If so, use that pointer type instead of i64. This
allows us to compile A function taking a stringref into something
like this:

define i8* @foo(i64 %D.coerce0, i8* %D.coerce1) nounwind ssp {
entry:
%D = alloca %struct.DeclGroup, align 8 ; <%struct.DeclGroup*> [#uses=4]
%0 = getelementptr %struct.DeclGroup* %D, i32 0, i32 0 ; <i64*> [#uses=1]
store i64 %D.coerce0, i64* %0
%1 = getelementptr %struct.DeclGroup* %D, i32 0, i32 1 ; <i8**> [#uses=1]
store i8* %D.coerce1, i8** %1
%tmp = getelementptr inbounds %struct.DeclGroup* %D, i32 0, i32 0 ; <i64*> [#uses=1]
%tmp1 = load i64* %tmp ; <i64> [#uses=1]
%tmp2 = getelementptr inbounds %struct.DeclGroup* %D, i32 0, i32 1 ; <i8**> [#uses=1]
%tmp3 = load i8** %tmp2 ; <i8*> [#uses=1]
%add.ptr = getelementptr inbounds i8* %tmp3, i64 %tmp1 ; <i8*> [#uses=1]
ret i8* %add.ptr
}

instead of this:

define i8* @foo(i64 %D.coerce0, i64 %D.coerce1) nounwind ssp {
entry:
%D = alloca %struct.DeclGroup, align 8 ; <%struct.DeclGroup*> [#uses=3]
%0 = insertvalue %0 undef, i64 %D.coerce0, 0 ; <%0> [#uses=1]
%1 = insertvalue %0 %0, i64 %D.coerce1, 1 ; <%0> [#uses=1]
%2 = bitcast %struct.DeclGroup* %D to %0* ; <%0*> [#uses=1]
store %0 %1, %0* %2, align 1
%tmp = getelementptr inbounds %struct.DeclGroup* %D, i32 0, i32 0 ; <i64*> [#uses=1]
%tmp1 = load i64* %tmp ; <i64> [#uses=1]
%tmp2 = getelementptr inbounds %struct.DeclGroup* %D, i32 0, i32 1 ; <i8**> [#uses=1]
%tmp3 = load i8** %tmp2 ; <i8*> [#uses=1]
%add.ptr = getelementptr inbounds i8* %tmp3, i64 %tmp1 ; <i8*> [#uses=1]
ret i8* %add.ptr
}

This implements rdar://7375902 - [codegen quality] clang x86-64 ABI lowering code punishing StringRef



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107123 91177308-0d34-0410-b5e6-96231b3b80d8
86_64-arguments.cpp
225e286110bcc8b7b1ff8b35f0d51a10a158b18c 29-Jun-2010 Chris Lattner <sabre@nondot.org> add IR names to coerced arguments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107105 91177308-0d34-0410-b5e6-96231b3b80d8
86_64-arguments.cpp
ce70016434ff82a29a60ef82894d934b8a23f23d 29-Jun-2010 Chris Lattner <sabre@nondot.org> Change CGCall to handle the "coerce" case where the coerce-to type
is a FCA to pass each of the elements as individual scalars. This
produces code fast isel is less likely to reject and is easier on
the optimizers.

For example, before we would compile:
struct DeclGroup { long NumDecls; char * Y; };
char * foo(DeclGroup D) {
return D.NumDecls+D.Y;
}

to:
%struct.DeclGroup = type { i64, i64 }

define i64 @_Z3foo9DeclGroup(%struct.DeclGroup) nounwind {
entry:
%D = alloca %struct.DeclGroup, align 8 ; <%struct.DeclGroup*> [#uses=3]
store %struct.DeclGroup %0, %struct.DeclGroup* %D, align 1
%tmp = getelementptr inbounds %struct.DeclGroup* %D, i32 0, i32 0 ; <i64*> [#uses=1]
%tmp1 = load i64* %tmp ; <i64> [#uses=1]
%tmp2 = getelementptr inbounds %struct.DeclGroup* %D, i32 0, i32 1 ; <i64*> [#uses=1]
%tmp3 = load i64* %tmp2 ; <i64> [#uses=1]
%add = add nsw i64 %tmp1, %tmp3 ; <i64> [#uses=1]
ret i64 %add
}

Now we get:

%0 = type { i64, i64 }
%struct.DeclGroup = type { i64, i8* }

define i8* @_Z3foo9DeclGroup(i64, i64) nounwind {
entry:
%D = alloca %struct.DeclGroup, align 8 ; <%struct.DeclGroup*> [#uses=3]
%2 = insertvalue %0 undef, i64 %0, 0 ; <%0> [#uses=1]
%3 = insertvalue %0 %2, i64 %1, 1 ; <%0> [#uses=1]
%4 = bitcast %struct.DeclGroup* %D to %0* ; <%0*> [#uses=1]
store %0 %3, %0* %4, align 1
%tmp = getelementptr inbounds %struct.DeclGroup* %D, i32 0, i32 0 ; <i64*> [#uses=1]
%tmp1 = load i64* %tmp ; <i64> [#uses=1]
%tmp2 = getelementptr inbounds %struct.DeclGroup* %D, i32 0, i32 1 ; <i8**> [#uses=1]
%tmp3 = load i8** %tmp2 ; <i8*> [#uses=1]
%add.ptr = getelementptr inbounds i8* %tmp3, i64 %tmp1 ; <i8*> [#uses=1]
ret i8* %add.ptr
}

Elimination of the FCA inside the function is still-to-come.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107099 91177308-0d34-0410-b5e6-96231b3b80d8
86_64-arguments.cpp
8ff296496de0970c8d6d72320a1427a926d7ef14 28-Jun-2010 Chris Lattner <sabre@nondot.org> pass/return structs of char and short as i8/i16 to avoid
aweful through-memory coersion, just like we do for i32 now.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107078 91177308-0d34-0410-b5e6-96231b3b80d8
angle-exprs.cpp
ember-functions.cpp
faf23b72f171ef997d48c453a5a4783c5759f8fe 28-Jun-2010 Chris Lattner <sabre@nondot.org> X86-64:
pass/return structs of float/int as float/i32 instead of double/i64
to make the code generated for ABI cleaner. Passing in the low part
of a double is the same as passing in a float.

For example, we now compile:

struct DeclGroup { float NumDecls; };
float foo(DeclGroup D);
void bar(DeclGroup *D) {
foo(*D);
}

into:

%struct.DeclGroup = type { float }

define void @_Z3barP9DeclGroup(%struct.DeclGroup* %D) nounwind {
entry:
%D.addr = alloca %struct.DeclGroup*, align 8 ; <%struct.DeclGroup**> [#uses=2]
%agg.tmp = alloca %struct.DeclGroup, align 4 ; <%struct.DeclGroup*> [#uses=2]
store %struct.DeclGroup* %D, %struct.DeclGroup** %D.addr
%tmp = load %struct.DeclGroup** %D.addr ; <%struct.DeclGroup*> [#uses=1]
%tmp1 = bitcast %struct.DeclGroup* %agg.tmp to i8* ; <i8*> [#uses=1]
%tmp2 = bitcast %struct.DeclGroup* %tmp to i8* ; <i8*> [#uses=1]
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %tmp1, i8* %tmp2, i64 4, i32 4, i1 false)
%coerce.dive = getelementptr %struct.DeclGroup* %agg.tmp, i32 0, i32 0 ; <float*> [#uses=1]
%0 = load float* %coerce.dive, align 1 ; <float> [#uses=1]
%call = call float @_Z3foo9DeclGroup(float %0) ; <float> [#uses=0]
ret void
}

instead of:

%struct.DeclGroup = type { float }

define void @_Z3barP9DeclGroup(%struct.DeclGroup* %D) nounwind {
entry:
%D.addr = alloca %struct.DeclGroup*, align 8 ; <%struct.DeclGroup**> [#uses=2]
%agg.tmp = alloca %struct.DeclGroup, align 4 ; <%struct.DeclGroup*> [#uses=2]
%tmp3 = alloca double ; <double*> [#uses=2]
store %struct.DeclGroup* %D, %struct.DeclGroup** %D.addr
%tmp = load %struct.DeclGroup** %D.addr ; <%struct.DeclGroup*> [#uses=1]
%tmp1 = bitcast %struct.DeclGroup* %agg.tmp to i8* ; <i8*> [#uses=1]
%tmp2 = bitcast %struct.DeclGroup* %tmp to i8* ; <i8*> [#uses=1]
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %tmp1, i8* %tmp2, i64 4, i32 4, i1 false)
%coerce.dive = getelementptr %struct.DeclGroup* %agg.tmp, i32 0, i32 0 ; <float*> [#uses=1]
%0 = bitcast double* %tmp3 to float* ; <float*> [#uses=1]
%1 = load float* %coerce.dive ; <float> [#uses=1]
store float %1, float* %0, align 1
%2 = load double* %tmp3 ; <double> [#uses=1]
%call = call float @_Z3foo9DeclGroup(double %2) ; <float> [#uses=0]
ret void
}

which is this machine code (at -O0):

__Z3barP9DeclGroup:
subq $24, %rsp
movq %rdi, 16(%rsp)
movq 16(%rsp), %rdi
leaq 8(%rsp), %rax
movl (%rdi), %ecx
movl %ecx, (%rax)
movss 8(%rsp), %xmm0
callq __Z3foo9DeclGroup
addq $24, %rsp
ret

vs this:

__Z3barP9DeclGroup:
subq $24, %rsp
movq %rdi, 16(%rsp)
movq 16(%rsp), %rdi
leaq 8(%rsp), %rax
movl (%rdi), %ecx
movl %ecx, (%rax)
movss 8(%rsp), %xmm0
movss %xmm0, (%rsp)
movsd (%rsp), %xmm0
callq __Z3foo9DeclGroup
addq $24, %rsp
ret

At -O3, it is the difference between this now:

__Z3barP9DeclGroup:
movss (%rdi), %xmm0
jmp __Z3foo9DeclGroup # TAILCALL

vs this before:

__Z3barP9DeclGroup:
movl (%rdi), %eax
movd %rax, %xmm0
jmp __Z3foo9DeclGroup # TAILCALL



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107048 91177308-0d34-0410-b5e6-96231b3b80d8
lloca-align.cpp
irtual-functions-incomplete-types.cpp
b401e07df06e88dc144a5ebb8e01ac70d84baf5c 28-Jun-2010 Daniel Dunbar <daniel@zuster.org> tests: Rewrite test to check intent instead of implementation.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107024 91177308-0d34-0410-b5e6-96231b3b80d8
ynArrayInit.cpp
045a6d84a0fa672eb5d914be1bb8f3baa226beb3 27-Jun-2010 Anders Carlsson <andersca@mac.com> Correctly destroy reference temporaries with global storage. Remove ErrorUnsupported call when binding a global reference to a non-lvalue. Fixes PR7326.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106983 91177308-0d34-0410-b5e6-96231b3b80d8
eferences.cpp
35b21b884e5c3447a52a74d7ffaba966b07ac81f 27-Jun-2010 Chris Lattner <sabre@nondot.org> Change IR generation for return (in the simple case) to avoid doing silly
load/store nonsense in the epilog. For example, for:

int foo(int X) {
int A[100];
return A[X];
}

we used to generate:

%arrayidx = getelementptr inbounds [100 x i32]* %A, i32 0, i64 %idxprom ; <i32*> [#uses=1]
%tmp1 = load i32* %arrayidx ; <i32> [#uses=1]
store i32 %tmp1, i32* %retval
%0 = load i32* %retval ; <i32> [#uses=1]
ret i32 %0
}

which codegen'd to this code:

_foo: ## @foo
## BB#0: ## %entry
subq $408, %rsp ## imm = 0x198
movl %edi, 400(%rsp)
movl 400(%rsp), %edi
movslq %edi, %rax
movl (%rsp,%rax,4), %edi
movl %edi, 404(%rsp)
movl 404(%rsp), %eax
addq $408, %rsp ## imm = 0x198
ret

Now we generate:

%arrayidx = getelementptr inbounds [100 x i32]* %A, i32 0, i64 %idxprom ; <i32*> [#uses=1]
%tmp1 = load i32* %arrayidx ; <i32> [#uses=1]
ret i32 %tmp1
}

and:

_foo: ## @foo
## BB#0: ## %entry
subq $408, %rsp ## imm = 0x198
movl %edi, 404(%rsp)
movl 404(%rsp), %edi
movslq %edi, %rax
movl (%rsp,%rax,4), %eax
addq $408, %rsp ## imm = 0x198
ret

This actually does matter, cutting out 2000 lines of IR from CGStmt.ll
for example.

Another interesting effect is that altivec.h functions which are dead
now get dce'd by the inliner. Hence all the changes to
builtins-ppc-altivec.c to ensure the calls aren't dead.





git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106970 91177308-0d34-0410-b5e6-96231b3b80d8
eferences.cpp
e70ffd631179c15d358838464425e3464cf05a98 26-Jun-2010 Chris Lattner <sabre@nondot.org> implement rdar://7432000 - signed negate should codegen as NSW.
While I'm in there, adjust pointer to member adjustments as well.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106955 91177308-0d34-0410-b5e6-96231b3b80d8
ointers-to-data-members.cpp
3a0d41d29192ff42870310e33800939f4e34bb55 26-Jun-2010 Charles Davis <cdavis@mines.edu> Mangle pointer and (lvalue) reference types in the Microsoft C++ Mangler.

Also, fix mangling of throw specs. Turns out MSVC totally ignores throw
specs when mangling names.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106937 91177308-0d34-0410-b5e6-96231b3b80d8
angle-ms.cpp
e347e776e7c1cae73ac0c40d63023a1f2bae2114 26-Jun-2010 Fariborz Jahanian <fjahanian@apple.com> Try making BuildBot happy again.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106898 91177308-0d34-0410-b5e6-96231b3b80d8
ynArrayInit.cpp
7ef2565811ad58067b602157ef2abbe626e7b1f0 25-Jun-2010 Fariborz Jahanian <fjahanian@apple.com> Test case for pr7490.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106887 91177308-0d34-0410-b5e6-96231b3b80d8
ynArrayInit.cpp
564360be450b319aeafc26698be9811837bfb826 24-Jun-2010 Fariborz Jahanian <fjahanian@apple.com> Patch to correctly mangle block helper functions
when block literal is declared inside a ctor/dtor.
Fixes radr 8096995.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106700 91177308-0d34-0410-b5e6-96231b3b80d8
lock-in-ctor-dtor.cpp
af896897f7485176f43d40c4adced7efb0fb2b06 21-Jun-2010 Douglas Gregor <dgregor@apple.com> Instantiations subject to an explicit template instantiation
declaration have default visibility even under
-fvisibility=hidden. Fixes <rdar://problem/8109763>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106440 91177308-0d34-0410-b5e6-96231b3b80d8
isibility-hidden-extern-templates.cpp
2bf6d7b1f7406ca4dfe841d4f6ef4b91dce195e4 21-Jun-2010 Fariborz Jahanian <fjahanian@apple.com> Fixes a corner case bug whereby declaring and defining an extern variable in a
particular sequence causes its definition to not be generated in the object file.
(fixes radar 8071804).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106424 91177308-0d34-0410-b5e6-96231b3b80d8
nternal-linkage.cpp
61c6c91930de9c0659027f019062b4a5636c1c2a 19-Jun-2010 Eli Friedman <eli.friedman@gmail.com> Fix for PR7415: refactor CodeGenModule::MayDeferGeneration and make it less
conservative for static variables in templated classes.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106385 91177308-0d34-0410-b5e6-96231b3b80d8
emplate-static-var-defer.cpp
810112e28dc839715d17b0a786f23aaa19600ac0 19-Jun-2010 Chris Lattner <sabre@nondot.org> Fix PR7097, a bad interaction between -fno-use-cxa-atexit and
-mconstructor-aliases by using a WeakVH instead of a raw pointer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106384 91177308-0d34-0410-b5e6-96231b3b80d8
lobal-dtor-no-atexit.cpp
c62458f6aead5e4c0d0f4534d52142e7864ba02b 18-Jun-2010 Charles Davis <cdavis@mines.edu> Mangle tag types (unions, structs, classes, enums) in the Microsoft C++ Mangler.

Also, test that static members with default visibility in a struct have the
right mangling.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106276 91177308-0d34-0410-b5e6-96231b3b80d8
angle-ms.cpp
949bd4b611f4be575d63da36c94c3662dfa4d459 17-Jun-2010 Fariborz Jahanian <fjahanian@apple.com> Do not treat @selector as lvalue (unlike g++).
Patch by Nico Weber (pr7390).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106242 91177308-0d34-0410-b5e6-96231b3b80d8
el-address.mm
21e2a7e8d38120e358bead9e1f14ed526d37bc90 17-Jun-2010 Charles Davis <cdavis@mines.edu> Mangle operator names in the Microsoft C++ Mangler.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106211 91177308-0d34-0410-b5e6-96231b3b80d8
angle-ms.cpp
1ed1a594e9befc91ebf00d81b41a2fdfab862657 16-Jun-2010 Rafael Espindola <rafael.espindola@gmail.com> Change the test for which ABI/CC to use on ARM to be base on the environment
(the last argument of the triple).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106131 91177308-0d34-0410-b5e6-96231b3b80d8
rm-cc.cpp
75d0f82e50565cc4cf71140ecf2141a40a3a5af9 16-Jun-2010 Rafael Espindola <rafael.espindola@gmail.com> Fix tests that I missed from my previous commit.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106118 91177308-0d34-0410-b5e6-96231b3b80d8
rm-cc.cpp
rm.cpp
65161d17cbf8980e24643c65b74a5127dcb7ac22 16-Jun-2010 Charles Davis <cdavis@mines.edu> Start mangling function types in the Microsoft C++ Mangler.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106081 91177308-0d34-0410-b5e6-96231b3b80d8
angle-ms.cpp
2a71107b9a0aa647c18e7655c53d9940ab390963 16-Jun-2010 Fariborz Jahanian <fjahanian@apple.com> Moved objective-c++ code gen. tests to their own directory and
added a new test case (related to radar 8070772).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106067 91177308-0d34-0410-b5e6-96231b3b80d8
mplicit-copy-assign-operator.mm
mplicit-copy-constructor.mm
55bcace250e1ff366e4482714b344b8cbc8be5f3 16-Jun-2010 Fariborz Jahanian <fjahanian@apple.com> Patch adds support for copying of those
objective-c++ class objects which have GC'able objc object
pointers and need to use ObjC's objc_memmove_collectable
API (radar 8070772).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106061 91177308-0d34-0410-b5e6-96231b3b80d8
mplicit-copy-assign-operator.mm
mplicit-copy-constructor.mm
7cf84d66965a7706004d8590b5af5fe54b85f525 15-Jun-2010 Douglas Gregor <dgregor@apple.com> Implement -fvisibility-inlines-hidden. <rdar://problem/7819834>


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106003 91177308-0d34-0410-b5e6-96231b3b80d8
isibility-inlines-hidden.cpp
c66bcfd32b941d8008284ecae9d16d7d47c96b0b 15-Jun-2010 Douglas Gregor <dgregor@apple.com> Make sure to set the visible on a vtable; VTTs and typeinfo already
handle visibility properly. Fixes <rdar://problem/8091955>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105977 91177308-0d34-0410-b5e6-96231b3b80d8
isibility.cpp
56079f7dde1d9c9e16207feffa3f1f888a78ab69 15-Jun-2010 Douglas Gregor <dgregor@apple.com> Add name mangling for address spaces. We use the vendor-extension
mangling for types, where the <source-name> is ASxxx (xxx is the
address-space number).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105975 91177308-0d34-0410-b5e6-96231b3b80d8
angle-address-space.cpp
b021f8bd445959e2a5c958624a464ff621253ae4 14-Jun-2010 Charles Davis <cdavis@mines.edu> Microsoft C++ Mangler:
- Mangle qualifiers.
- Start mangling variables' types into the name. A variable declared with a
builtin type should now mangle properly.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105931 91177308-0d34-0410-b5e6-96231b3b80d8
angle-ms.cpp
570d2763bc9ee6c26b12c0b6316dd87261520bfe 12-Jun-2010 Charles Davis <cdavis@mines.edu> Microsoft C++ Mangler:
- Don't mangle static variables at global scope.
- Add support for mangling builtin types. This will be used later.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105881 91177308-0d34-0410-b5e6-96231b3b80d8
angle-ms.cpp
971154db24429b103280d15423b8c200cfb2380c 11-Jun-2010 Charles Davis <cdavis@mines.edu> When mangling for the Microsoft C++ ABI, mangle variables in the global
namespace, too.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105809 91177308-0d34-0410-b5e6-96231b3b80d8
angle-ms.cpp
e60cea829b3bc45fcfedbfdb08cffb61f5bde79f 11-Jun-2010 Charles Davis <cdavis@mines.edu> Start implementing the Microsoft-style name mangler. Mangle simple names
(but not their types; that's later).

NOTE: Right now, variables in the global namespace don't get mangled, even
though they're supposed to be. This is because the default mangler
implements the shouldMangleDeclName() method that tells clang not to mangle
them. This will be fixed in a later patch.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105805 91177308-0d34-0410-b5e6-96231b3b80d8
angle-ms.cpp
9df792c199473ac1bd012b8018373680ac00c309 09-Jun-2010 Anders Carlsson <andersca@mac.com> Fix test.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105668 91177308-0d34-0410-b5e6-96231b3b80d8
lobal-init.cpp
56833bc2af5d8e91859380caf31c15a64a6502a9 09-Jun-2010 Anders Carlsson <andersca@mac.com> Try to fix buildbot tests.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105660 91177308-0d34-0410-b5e6-96231b3b80d8
lobal-init-darwin.cpp
605fa8fe517b573fc9add520dbf4a014bc52e2fe 09-Jun-2010 Anders Carlsson <andersca@mac.com> Add test case.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105651 91177308-0d34-0410-b5e6-96231b3b80d8
lobal-init-darwin.cpp
ac7362dedab6002a0811f47ccfcaf81a9c728d35 08-Jun-2010 Fariborz Jahanian <fjahanian@apple.com> Block Code Gen. API. Call destructor on descriptior
entry previously constructed via copy constructor.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105641 91177308-0d34-0410-b5e6-96231b3b80d8
opy-in-cplus-object.cpp
d7c7338dd7bf1a35179ec3521f7438c0fbd98e9c 08-Jun-2010 Fariborz Jahanian <fjahanian@apple.com> Fixes a typo which prevented proper code gen. for
copy-in of c++ class objects into blocks.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105622 91177308-0d34-0410-b5e6-96231b3b80d8
opy-in-cplus-object.cpp
6f7e2f4019860cad19883db44f4d0bfa36d2f552 08-Jun-2010 Anders Carlsson <andersca@mac.com> Correctly mangle static variables of anonymous struct/union type.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105606 91177308-0d34-0410-b5e6-96231b3b80d8
angle-unnamed.cpp
99b8b92f5148126bb32ee75ebd44bd526f39c411 08-Jun-2010 Rafael Espindola <rafael.espindola@gmail.com> Add test for previous commit.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105594 91177308-0d34-0410-b5e6-96231b3b80d8
rm-cc.cpp
6deecb0d46bcfd048e651d2db7c4fb0d6407da96 05-Jun-2010 Rafael Espindola <rafael.espindola@gmail.com> Correctly align large arrays in x86-64. This fixes PR5599.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105500 91177308-0d34-0410-b5e6-96231b3b80d8
tatic-init.cpp
59da45a1fc10a3af4f3b3152f45504b4c5ca7385 04-Jun-2010 Fariborz Jahanian <fjahanian@apple.com> Build AST for copy-construction of copied-in
class object in blocks and carry it to IRGen.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105487 91177308-0d34-0410-b5e6-96231b3b80d8
opy-in-cplus-object.cpp
df8b8ea3492a314488ffee72704665b22bc73989 04-Jun-2010 Fariborz Jahanian <fjahanian@apple.com> For C++ copied in objects, use copy constructors in
setting up block's descriptor. This is on going work to
support c++ specific issues in setting up blocks
various APIs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105469 91177308-0d34-0410-b5e6-96231b3b80d8
opy-in-cplus-object.cpp
5f83c60d5d5e3a87f5281db8125755c65a72b070 04-Jun-2010 Eli Friedman <eli.friedman@gmail.com> Check the output of this test.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105434 91177308-0d34-0410-b5e6-96231b3b80d8
ember-init-assignment.cpp
c26a9ae80e9cec5cb985090ef051f9221fd0fe04 04-Jun-2010 Eli Friedman <eli.friedman@gmail.com> Think through my commit this time.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105433 91177308-0d34-0410-b5e6-96231b3b80d8
hrow-expression-dtor.cpp
47a700bf78cbf750f96ea0aab1114f82abcbdc94 04-Jun-2010 Eli Friedman <eli.friedman@gmail.com> Make sure this test doesn't break when we disallow throwing an exception
in -fno-exceptions mode.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105432 91177308-0d34-0410-b5e6-96231b3b80d8
hrow-expression-dtor.cpp
5ed9b93c596c3926b6680b47de28c8ff6a8ff4b7 03-Jun-2010 Eli Friedman <eli.friedman@gmail.com> Make sure to check the accessibility of and mark the destructor for the
operand of a throw expression. Fixes PR7281.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105408 91177308-0d34-0410-b5e6-96231b3b80d8
hrow-expression-dtor.cpp
0b29227012aacb1ae42277b0a63d28acb1b35270 03-Jun-2010 Eli Friedman <eli.friedman@gmail.com> Don't intentionally try to ignore the value of a scalar expression when we
actually care about it. Fixes PR7291.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105404 91177308-0d34-0410-b5e6-96231b3b80d8
ember-init-assignment.cpp
e9a05b7fd6ece68310707d10bc747a702a9af4a8 03-Jun-2010 Anders Carlsson <andersca@mac.com> Don't try to explicitly zero out bit-fields.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105391 91177308-0d34-0410-b5e6-96231b3b80d8
ointers-to-data-members.cpp
7965172058761ae34e6f8b2c5b801fee8840f964 02-Jun-2010 Fariborz Jahanian <fjahanian@apple.com> Block C++ code gen. Adds support for block reference argument
types. Executable test will be added to LLVM test suite.
(radar 8041962).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105347 91177308-0d34-0410-b5e6-96231b3b80d8
eference-in-block-args.cpp
e21323588b32caf674213c9897dd12e2f0ea3cc5 02-Jun-2010 John McCall <rjmccall@apple.com> Don't try to emit the vtable for a class just because we're emitting a
virtual function from it.

Fixes PR7241.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105345 91177308-0d34-0410-b5e6-96231b3b80d8
hunks.cpp
irtual-base-destructor-call.cpp
c820f90ff1a2c6e3e8b859355541c32f31d3cb8e 02-Jun-2010 Anders Carlsson <andersca@mac.com> Don't substitute 'St' for 'std' when the namespace is nested inside another namespace.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105330 91177308-0d34-0410-b5e6-96231b3b80d8
angle-subst-std.cpp
abd6b09e3daa4d82b7e8ee6966d7f745fd121835 02-Jun-2010 Anders Carlsson <andersca@mac.com> When building RTTI descriptors for pointer types, we need to get the unqualified array type and the qualifiers from it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105326 91177308-0d34-0410-b5e6-96231b3b80d8
tti-layout.cpp
d1c1d7bd14dce533e8755164ff59988f2ea5da94 02-Jun-2010 Douglas Gregor <dgregor@apple.com> typeid() produces type information for the cv-unqualified version of
the type. Thanks to Anders for the bug report!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105314 91177308-0d34-0410-b5e6-96231b3b80d8
tti-linkage.cpp
dfc0d1ff1af5b199945a1ff98a6f7db0fdfb1615 02-Jun-2010 Anders Carlsson <andersca@mac.com> Correctly mangle unsigned integer literals where the high bit is set.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105312 91177308-0d34-0410-b5e6-96231b3b80d8
angle.cpp
93296683a70eed2fae0b694748ed4cc51c53aef4 02-Jun-2010 Anders Carlsson <andersca@mac.com> Correctly mangle variadic functions that don't have any other parameters.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105311 91177308-0d34-0410-b5e6-96231b3b80d8
angle.cpp
9d85b7203b4cb638e45e64e8378338aa256699cd 02-Jun-2010 Anders Carlsson <andersca@mac.com> When mangling member function pointers, fake adding a substitution corresponding to the function type.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105310 91177308-0d34-0410-b5e6-96231b3b80d8
angle-subst.cpp
c00129a08c829bb34f22dc13727043c994c85644 30-May-2010 Eli Friedman <eli.friedman@gmail.com> Fix for PR7040: Don't try to compute the LLVM type for a function where it
isn't possible to compute.

This patch is mostly refactoring; the key change is the addition of the code
starting with the comment, "Check whether the function has a computable LLVM
signature." The solution here is essentially the same as the way the
vtable code handles such functions.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105151 91177308-0d34-0410-b5e6-96231b3b80d8
ncomplete-member-function-pointer.cpp
0a87b377d9a8af87ebc99585be96aac2d36ccfcb 27-May-2010 Anders Carlsson <andersca@mac.com> When null-initializing bases with data member pointers, don't assert on virtual bases. Just initialize them to null.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104868 91177308-0d34-0410-b5e6-96231b3b80d8
ointers-to-data-members.cpp
e03d99247412702660c9c8b8b9b98a1def8a2195 27-May-2010 John McCall <rjmccall@apple.com> Give this test a triple.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104798 91177308-0d34-0410-b5e6-96231b3b80d8
estructors.cpp
c76702cc80c1ef8a94d82b62ddcb4ed4f67d5b8c 27-May-2010 John McCall <rjmccall@apple.com> When deciding whether a deferred declaration has already been emitted,
aliases count as definitions regardless of whether their target has been
emitted yet. Fixes PR 7142.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104796 91177308-0d34-0410-b5e6-96231b3b80d8
estructors.cpp
2736071ea3a46f90e65c93418961611d96c10ab9 27-May-2010 John McCall <rjmccall@apple.com> Correctly pass aggregates by reference when emitting thunks.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104778 91177308-0d34-0410-b5e6-96231b3b80d8
hunks.cpp
4c464b9702af8ec5e76d5eb184e76df1d40c23ec 26-May-2010 Fariborz Jahanian <fjahanian@apple.com> Patch to fix a irgen crash accessing an initialized local static
variable in a local function. Fixes pr7101.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104743 91177308-0d34-0410-b5e6-96231b3b80d8
tatic-local-in-local-class.cpp
1b12a3bb4d4c0db74fc97be724beefec7366b460 26-May-2010 Douglas Gregor <dgregor@apple.com> Be sure to use the standard substitutions when mangling the names of
vtables, VTTs, and construction vtables. Fixes PR7201.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104675 91177308-0d34-0410-b5e6-96231b3b80d8
angle-subst-std.cpp
8b2423361648c39a7d8a3c5e8129e12006deac32 25-May-2010 John McCall <rjmccall@apple.com> If a function definition has any sort of weak linkage, its static local
variables should have that linkage. Otherwise, its static local
variables should have internal linkage. To avoid computing this excessively,
set a function's linkage before we emit code for it.

Previously we were assigning weak linkage to the static variables of
static inline functions in C++, with predictably terrible results. This
fixes that and also gives better linkage than 'weak' when merging is required.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104581 91177308-0d34-0410-b5e6-96231b3b80d8
tatic-init.cpp
b9aefa775158b68c453e4ac0e4e2ada561900d26 25-May-2010 Daniel Dunbar <daniel@zuster.org> IRgen/C++: When mark vtables used, make sure to still append to the VTableUse array if we promote a vtable from being just used to having its definition required. This ensures that we properly inform the consumer about whether the vtable is required or not, previously we could fail to do so when the vtable was in the VTableUses array before the decl which marked it as required.
- I think this can be cleaned up, since this means we may notify the consumer about the vtable twice, but I didn't see an easy fix for this without more substantial refactoring.
- Doug, please review!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104577 91177308-0d34-0410-b5e6-96231b3b80d8
table-linkage.cpp
89cf2e3d9d356a8b960a5ab12ccc677fe2dce7f8 23-May-2010 Benjamin Kramer <benny.kra@googlemail.com> Add a comment for r104472.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104473 91177308-0d34-0410-b5e6-96231b3b80d8
R5863-unreachable-block.cpp
92b9bd96ce25630f73717965fcaf4b5a761e49e5 23-May-2010 Benjamin Kramer <benny.kra@googlemail.com> PR5863: Don't erase unreachable BBs which have an associated cleanup size.

This works around a crash where malloc reused the memory of an erased BB for a
new BB leaving old cleanup information pointing at the new block.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104472 91177308-0d34-0410-b5e6-96231b3b80d8
R5863-unreachable-block.cpp
a40a9f31218c743e366322e34b59f0d4d4414198 22-May-2010 Anders Carlsson <andersca@mac.com> Really fix PR7139. There was one boost test that we still failed, and my first fix broke self-host.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104447 91177308-0d34-0410-b5e6-96231b3b80d8
ointers-to-data-members.cpp
1884eb0b5c55edda4893ddec45e7dbad79758782 22-May-2010 Anders Carlsson <andersca@mac.com> Re-land the fix for PR7139.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104446 91177308-0d34-0410-b5e6-96231b3b80d8
ointers-to-data-members.cpp
0fddb97901dbe36a8253dee29961cba8e0a87cf6 22-May-2010 Douglas Gregor <dgregor@apple.com> Implement support for variable length arrays in C++. VLAs are limited
in several important ways:

- VLAs of non-POD types are not permitted.
- VLAs cannot be used in conjunction with C++ templates.

These restrictions are intended to keep VLAs out of the parts of the
C++ type system where they cause the most trouble. Fixes PR5678 and
<rdar://problem/8013618>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104443 91177308-0d34-0410-b5e6-96231b3b80d8
99-variable-length-array.cpp
2d6b0e94db30c0e2754d270753c6f75478e451bf 22-May-2010 Douglas Gregor <dgregor@apple.com> Improve our handling of reference binding for subobjects of
temporaries. There are actually several interrelated fixes here:

- When converting an object to a base class, it's only an lvalue
cast when the original object was an lvalue and we aren't casting
pointer-to-derived to pointer-to-base. Previously, we were
misclassifying derived-to-base casts of class rvalues as lvalues,
causing various oddities (including problems with reference binding
not extending the lifetimes of some temporaries).

- Teach the code for emitting a reference binding how to look
through no-op casts and parentheses directly, since
Expr::IgnoreParenNoOpCasts is just plain wrong for this. Also, make
sure that we properly look through multiple levels of indirection
from the temporary object, but destroy the actual temporary object;
this fixes the reference-binding issue mentioned above.

- Teach Objective-C message sends to bind the result as a temporary
when needed. This is actually John's change, but it triggered the
reference-binding problem above, so it's included here. Now John
can actually test his return-slot improvements.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104434 91177308-0d34-0410-b5e6-96231b3b80d8
eferences.cpp
892fa6c5e152dd22e4ba460d5c8cd5c79d657e87 22-May-2010 Anders Carlsson <andersca@mac.com> Unbreak self-host.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104390 91177308-0d34-0410-b5e6-96231b3b80d8
ointers-to-data-members.cpp
db9b12e32c988e4a6ac49404fd2513d0b05bba32 21-May-2010 Anders Carlsson <andersca@mac.com> Rename CodeGenFunction::EmitMemSetToZero to EmitNullInitialization. Handle setting null data member pointers correctly. Fixes PR7139.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104387 91177308-0d34-0410-b5e6-96231b3b80d8
ointers-to-data-members.cpp
663218b576d8d79dea546c5726d7c90c216b1358 21-May-2010 Douglas Gregor <dgregor@apple.com> When generating the call arguments in a thunk to call the thunkee, do
not make copies non-POD arguments or arguments passed by reference:
just copy the pointers directly. This eliminates another source of the
dreaded memcpy-of-non-PODs. Fixes PR7188.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104327 91177308-0d34-0410-b5e6-96231b3b80d8
hunks.cpp
a9976d3b192690db20f59dc44099ac4ca939bdb7 21-May-2010 John McCall <rjmccall@apple.com> When emitting an lvalue for an anonymous struct or union member during
class initialization, drill down through an arbitrary number of anonymous
records.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104310 91177308-0d34-0410-b5e6-96231b3b80d8
nonymous-union-member-initializer.cpp
f1860e5c381a2710fcebe6d55d799c6b25c21041 21-May-2010 John McCall <rjmccall@apple.com> Be sure to apply initializers to members of anonymous structs and unions
recursively, e.g. so that members of anonymous unions inside anonymous structs
still get initialized. Also generate default constructor calls for anonymous
struct members when necessary.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104292 91177308-0d34-0410-b5e6-96231b3b80d8
nonymous-union-member-initializer.cpp
60dcb8432cff2455488b9226b9cc65b80356146e 20-May-2010 Douglas Gregor <dgregor@apple.com> Rework our handling of binding a reference to a temporary
subobject. Previously, we could only properly bind to a base class
subobject while extending the lifetime of the complete object (of a
derived type); for non-static data member subobjects, we could memcpy
(!) the result and bind to that, which is rather broken.

Now, we pull apart the expression that we're binding to, to figure out
which subobject we're accessing, then construct the temporary object
(adding a destruction if needed) and, finally, dig out the subobject
we actually meant to access.

This fixes yet another instance where we were memcpy'ing rather than
doing the right thing. However, note the FIXME in references.cpp:
there's more work to be done for binding to subobjects, since the AST
is incorrectly modeling some member accesses in base classes as
lvalues when they are really rvalues.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104219 91177308-0d34-0410-b5e6-96231b3b80d8
eferences.cpp
cb359df81b83dd4f938d05cb9cf5c34bd20068bd 20-May-2010 Douglas Gregor <dgregor@apple.com> When creating a this-adjustment thunk where the return value is of C++
class type (that uses a return slot), pass the return slot to the
callee directly rather than allocating new storage and trying to copy
the object. This appears to have been the cause of the remaining two
Boost.Interprocess failures.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104215 91177308-0d34-0410-b5e6-96231b3b80d8
hunks.cpp
a83fb4bf8119b980ccf7de0795dff250a799ea58 18-May-2010 Anders Carlsson <andersca@mac.com> Correctly initialize bases with member pointers. This should fix PR6441 but that test case is a bit weird and I'd like to investigate further before closing that bug.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104025 91177308-0d34-0410-b5e6-96231b3b80d8
ointers-to-data-members.cpp
5ea68614bfe0e78b5d66339b781529038f86501f 17-May-2010 Daniel Dunbar <daniel@zuster.org> C++/Darwin/i386 ABI: Fix some problems with empty record handling.
- Check bases as part of isEmptyRecord().

- C++ record fields are never empty in the Itanium ABI.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103944 91177308-0d34-0410-b5e6-96231b3b80d8
86_32-arguments.cpp
3d91bbcdab155181556969cad6ec97014405aced 17-May-2010 Douglas Gregor <dgregor@apple.com> Ensure that destructors are called for NRVO'd objects when the
function does not return. Thanks to Eli for pointing out this corner
case.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103941 91177308-0d34-0410-b5e6-96231b3b80d8
rvo.cpp
761c94e3bffef0fcb8b4bbf202fd5ee73db134f3 16-May-2010 Chandler Carruth <chandlerc@gmail.com> When constant folding reference variables with an initializer to the
initializer, don't fold paramters. Their initializers are just default
arguments which can be overridden. This fixes some spectacular regressions due
to more things making it into the constant folding.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103904 91177308-0d34-0410-b5e6-96231b3b80d8
eferences.cpp
86a3a03667bdb0dcab7e6a2877dfd234b07a6d43 16-May-2010 Douglas Gregor <dgregor@apple.com> When initializing thread-safe statics, put the call to
__cxa_guard_abort along the exceptional edge into (in effect) a nested
"try" that rethrows after aborting. Fixes PR7144 and the remaining
Boost.ProgramOptions failures, along with the regressions that r103880
caused.

The crucial difference between this and r103880 is that we now follow
LLVM's little dance with the llvm.eh.exception and llvm.eh.selector
calls, then use _Unwind_Resume_or_Rethrow to rethrow.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103892 91177308-0d34-0410-b5e6-96231b3b80d8
hreadsafe-statics-exceptions.cpp
1eb2e59338c4b9c0429fc39ca98662adc9e7a3f2 16-May-2010 Douglas Gregor <dgregor@apple.com> Revert r103880 (thread-safe static initialization w/ exceptions),
because it's causing strange linker errors. Unfixes PR7144.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103890 91177308-0d34-0410-b5e6-96231b3b80d8
hreadsafe-statics-exceptions.cpp
bfcc823a5c53dabab8cfc842bfea70e2b69cdee0 15-May-2010 Douglas Gregor <dgregor@apple.com> When initializing thread-safe statics, put the call to
__cxa_guard_abort along the exceptional edge into (in effect) a nested
"try" that rethrows after aborting. Fixes PR7144 and the remaining
Boost.ProgramOptions failures.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103880 91177308-0d34-0410-b5e6-96231b3b80d8
hreadsafe-statics-exceptions.cpp
72bf425fab902f5fd6114b630b8dc3dc0e1de1a8 15-May-2010 Douglas Gregor <dgregor@apple.com> Attempt to satisfy Release-Asserts build

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103879 91177308-0d34-0410-b5e6-96231b3b80d8
rvo.cpp
b5b30b96e0accaf3c78a19c3febba5136dae8386 15-May-2010 Douglas Gregor <dgregor@apple.com> When applying the named return value optimization, we still need to
destroy the variable along the exceptional edge; it's only during
normal execution that we avoid destroying this variable.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103872 91177308-0d34-0410-b5e6-96231b3b80d8
rvo.cpp
d86c477fb5d3fc34864afecbbb5443da9355e8fb 15-May-2010 Douglas Gregor <dgregor@apple.com> Implement a simple form of the C++ named return value optimization for
return statements. We perform NRVO only when all of the return
statements in the function return the same variable. Fixes some link
failures in Boost.Interprocess (which is relying on NRVO), and
probably improves performance for some C++ applications.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103867 91177308-0d34-0410-b5e6-96231b3b80d8
rvo.cpp
67d438d39a1cc37c372a2684dc354f58d0169bb1 15-May-2010 Daniel Dunbar <daniel@zuster.org> C++/ABI/x86_64: Member pointers should be classified as INTEGER.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103843 91177308-0d34-0410-b5e6-96231b3b80d8
86_64-arguments.cpp
7711523d948bbe635f690f5795ef7ea9a3289eb2 15-May-2010 Daniel Dunbar <daniel@zuster.org> C++/ABI/i386: Member function pointers should be passed by value.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103842 91177308-0d34-0410-b5e6-96231b3b80d8
86_32-arguments.cpp
e37706dc65230201458364331ae0292ee8377143 14-May-2010 Douglas Gregor <dgregor@apple.com> Tweak test so that it does not require <typeinfo>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103819 91177308-0d34-0410-b5e6-96231b3b80d8
ynamic-cast.cpp
69cfeb1036ad22c911b7243dca0eecee72e452d3 14-May-2010 Douglas Gregor <dgregor@apple.com> Emit an lvalue dynamic_cast even if the result is not used. Another
part (or possibly all) of PR7132.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103810 91177308-0d34-0410-b5e6-96231b3b80d8
ynamic-cast.cpp
485ee32d93d9f955ef1fb7239a0871c8a68a1867 14-May-2010 Douglas Gregor <dgregor@apple.com> When a failed dynamic_cast<T&> (which is an lvalue) results in a
throw, it should use invoke when needed. The fixes the
Boost.Statechrt failures that motivated PR7132, but there are a few
side issues to tackle as well.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103803 91177308-0d34-0410-b5e6-96231b3b80d8
ynamic-cast.cpp
yncast.cpp
3cb18bcefe39756f3b079fa1a62b4c9cbf6a592f 14-May-2010 Anders Carlsson <andersca@mac.com> Make sure that value-initialized pointers to data members are initialized correctly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103771 91177308-0d34-0410-b5e6-96231b3b80d8
ointers-to-data-members.cpp
ca4aa379fcae53c50760cdf3632d8d801b795046 14-May-2010 Douglas Gregor <dgregor@apple.com> A vtable is used if the key function is defined... even if that key
function's definition is an out-of-class definition marked
"inline". Fixes an assertion in WebKit.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103763 91177308-0d34-0410-b5e6-96231b3b80d8
ey-function-vtable.cpp
ecb2df2408639e554def61080ce3afdb41e2f705 14-May-2010 Daniel Dunbar <daniel@zuster.org> XFAIL a test on Win32.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103762 91177308-0d34-0410-b5e6-96231b3b80d8
tti-linkage.cpp
a1842d32a1964712e42078e9b389dce9258c6a8c 14-May-2010 Daniel Dunbar <daniel@zuster.org> C++/Darwin/x86: Teach IRgen it can pass reference types in registers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103761 91177308-0d34-0410-b5e6-96231b3b80d8
86_32-arguments.cpp
1297fd72b1a3d7985c5c5e3e3a09b8acb2696358 13-May-2010 Douglas Gregor <dgregor@apple.com> Disable the available_externally optimization for inline virtual
methods for which the key function is guaranteed to be in another
translation unit. Unfortunately, this guarantee isn't the case when
dealing with shared libraries that fail to export these virtual method
definitions.

I'm reopening PR6747 so we can consider this again at a later point in
time.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103741 91177308-0d34-0410-b5e6-96231b3b80d8
R6747.cpp
6fb745bdf1ff1e32caf07e42093a7920726892c1 13-May-2010 Douglas Gregor <dgregor@apple.com> Rework when and how vtables are emitted, by tracking where vtables are
"used" (e.g., we will refer to the vtable in the generated code) and
when they are defined (i.e., because we've seen the key function
definition). Previously, we were effectively tracking "potential
definitions" rather than uses, so we were a bit too eager about emitting
vtables for classes without key functions.

The new scheme:
- For every use of a vtable, Sema calls MarkVTableUsed() to indicate
the use. For example, this occurs when calling a virtual member
function of the class, defining a constructor of that class type,
dynamic_cast'ing from that type to a derived class, casting
to/through a virtual base class, etc.
- For every definition of a vtable, Sema calls MarkVTableUsed() to
indicate the definition. This happens at the end of the translation
unit for classes whose key function has been defined (so we can
delay computation of the key function; see PR6564), and will also
occur with explicit template instantiation definitions.
- For every vtable defined/used, we mark all of the virtual member
functions of that vtable as defined/used, unless we know that the key
function is in another translation unit. This instantiates virtual
member functions when needed.
- At the end of the translation unit, Sema tells CodeGen (via the
ASTConsumer) which vtables must be defined (CodeGen will define
them) and which may be used (for which CodeGen will define the
vtables lazily).

From a language perspective, both the old and the new schemes are
permissible: we're allowed to instantiate virtual member functions
whenever we want per the standard. However, all other C++ compilers
were more lazy than we were, and our eagerness was both a performance
issue (we instantiated too much) and a portability problem (we broke
Boost test cases, which now pass).

Notes:
(1) There's a ton of churn in the tests, because the order in which
vtables get emitted to IR has changed. I've tried to isolate some of
the larger tests from these issues.
(2) Some diagnostics related to
implicitly-instantiated/implicitly-defined virtual member functions
have moved to the point of first use/definition. It's better this
way.
(3) I could use a review of the places where we MarkVTableUsed, to
see if I missed any place where the language effectively requires a
vtable.

Fixes PR7114 and PR6564.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103718 91177308-0d34-0410-b5e6-96231b3b80d8
xx-apple-kext.cpp
tti-linkage.cpp
hunks.cpp
irtual-base-destructor-call.cpp
irtual-functions-incomplete-types.cpp
table-layout.cpp
table-linkage.cpp
9430d5a61598c47d827e1cd05f7cf3f110eeec9e 11-May-2010 Daniel Dunbar <daniel@zuster.org> IRgen/i386/C++: Fix isSingleElementStruct computation for C++ record decls.
- Fixes PR7098.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103514 91177308-0d34-0410-b5e6-96231b3b80d8
86_32-arguments.cpp
eaa18e449bb09c1e580aa35f9606ff2ca682f4cb 09-May-2010 Douglas Gregor <dgregor@apple.com> When instantiating statements that involve conditions (if, while, do,
for, and switch), be careful to construct the full expressions as soon
as we perform template instantation, so we don't either forget to call
temporary destructors or destroy temporaries at the wrong time. This
is the template-instantiation analogue to r103187, during which I
hadn't realized that the issue would affect the handling of these
constructs differently inside and outside of templates.

Fixes a regression in Boost.Function.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103357 91177308-0d34-0410-b5e6-96231b3b80d8
ondition.cpp
40e629920b1eb0585e28b4418b95fc5aacbeeb26 08-May-2010 Douglas Gregor <dgregor@apple.com> Fix test for Release-Asserts build

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103337 91177308-0d34-0410-b5e6-96231b3b80d8
ondition.cpp
b0769101ac05792ccc539bc7359b1927b3fd4aca 07-May-2010 Douglas Gregor <dgregor@apple.com> Do not give implicitly-defined virtual members functions
available_externally linkage, since they may not have been given a
strong definition in another translation unit. Without this patch, the
following test case fails to link with a GCC-compiled libstdc++:

#include <sstream>
int main() { std::basic_stringbuf<char> bs; }

Fixes the last problem with the Boost.IO library.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103208 91177308-0d34-0410-b5e6-96231b3b80d8
emplate-linkage.cpp
f4aac11a5e49752b7f603e6ff2c6bbc1e044eb24 07-May-2010 Douglas Gregor <dgregor@apple.com> The global variable for the VTT might not have external linkage; allow
us to find local variables, too. Fixes the last remaining
Boost.Rational failure.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103203 91177308-0d34-0410-b5e6-96231b3b80d8
nonymous-namespaces.cpp
586596fd7f7a336a2847b300c80614dcf39ab6d5 06-May-2010 Douglas Gregor <dgregor@apple.com> Rework our handling of temporary objects within the conditions of
if/switch/while/do/for statements. Previously, we would end up either:

(1) Forgetting to destroy temporaries created in the condition (!),
(2) Destroying the temporaries created in the condition *before*
converting the condition to a boolean value (or, in the case of a
switch statement, to an integral or enumeral value), or
(3) In a for statement, destroying the condition's temporaries at
the end of the increment expression (!).

We now destroy temporaries in conditions at the right times. This
required some tweaking of the Parse/Sema interaction, since the parser
was building full expressions too early in many places.

Fixes PR7067.





git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103187 91177308-0d34-0410-b5e6-96231b3b80d8
ondition.cpp
985f73960ac76842da4b10c30ca87a282ff9aa31 06-May-2010 Chris Lattner <sabre@nondot.org> simplify EmitAggMemberInitializer a bit and make it work in 32-bit mode,
fixing PR7063.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103171 91177308-0d34-0410-b5e6-96231b3b80d8
rray-value-initialize.cpp
7e21ffb97e1da7ee5470865859c5b4bfbe0b91a3 06-May-2010 Chris Lattner <sabre@nondot.org> Pass the globaldecl into GetOrCreateLLVMFunction so that llvm
function attributes like byval get applied to the function
definition. This fixes PR7058 and makes i386 llvm/clang bootstrap
pass all the same tests as x86-64 bootstrap for me (the llvmc
tests still fail in both).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103131 91177308-0d34-0410-b5e6-96231b3b80d8
86_32-arguments.cpp
c446d1816f46a4b6d2337102dfc001f55fc18211 05-May-2010 Douglas Gregor <dgregor@apple.com> When we emit a non-constant initializer for a global variable of
reference type, make sure that the initializer we build is the
of the appropriate type for the *reference*, not for the thing that it
refers to. Fixes PR7050.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103115 91177308-0d34-0410-b5e6-96231b3b80d8
tatic-init-3.cpp
cc6a44b8bdecd9fc70211146e8ba3853b1fac784 05-May-2010 Douglas Gregor <dgregor@apple.com> For thread-safe static initialization of local statics with
destructors, place the __cxa_atexit call after the __cxa_guard_release
call, mimicking GCC/LLVM-GCC behavior. Noticed while debugging
something related.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103088 91177308-0d34-0410-b5e6-96231b3b80d8
tatic-init.cpp
fb8cc253420e93cee33d29df5a2bdae6aaf16e39 05-May-2010 Douglas Gregor <dgregor@apple.com> Reimplement code generation for copying fields in the
implicitly-generated copy constructor. Previously, Sema would perform
some checking and instantiation to determine which copy constructors,
etc., would be called, then CodeGen would attempt to figure out which
copy constructor to call... but would get it wrong, or poke at an
uninstantiated default argument, or fail in other ways.

The new scheme is similar to what we now do for the implicit
copy-assignment operator, where Sema performs all of the semantic
analysis and builds specific ASTs that look similar to the ASTs we'd
get from explicitly writing the copy constructor, so that CodeGen need
only do a direct translation.

However, it's not quite that simple because one cannot explicit write
elementwise copy-construction of an array. So, I've extended
CXXBaseOrMemberInitializer to contain a list of indexing variables
used to copy-construct the elements. For example, if we have:

struct A { A(const A&); };

struct B {
A array[2][3];
};

then we generate an implicit copy assignment operator for B that looks
something like this:

B::B(const B &other) : array[i0][i1](other.array[i0][i1]) { }

CodeGen will loop over the invented variables i0 and i1 to visit all
elements in the array, so that each element in the destination array
will be copy-constructed from the corresponding element in the source
array. Of course, if we're dealing with arrays of scalars or class
types with trivial copy-assignment operators, we just generate a
memcpy rather than a loop.

Fixes PR6928, PR5989, and PR6887. Boost.Regex now compiles and passes
all of its regression tests.

Conspicuously missing from this patch is handling for the exceptional
case, where we need to destruct those objects that we have
constructed. I'll address that case separately.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103079 91177308-0d34-0410-b5e6-96231b3b80d8
mplicit-copy-constructor.cpp
68e3013ade8a219625b636bb8c1dcec2ba6fb685 05-May-2010 Anders Carlsson <andersca@mac.com> Use a more appropriate LLVM type for the vtable pointer.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103078 91177308-0d34-0410-b5e6-96231b3b80d8
lass-layout.cpp
d33ded52b06f7be00b95c1ce546924b4468adf9a 04-May-2010 Fariborz Jahanian <fjahanian@apple.com> Fixes a code gen crash when block is a reference type, etc.
(radar 7495203).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103022 91177308-0d34-0410-b5e6-96231b3b80d8
eference-in-blocks.cpp
3d6c1782c4fc2ed3e6a924c15042edb1f56fee36 04-May-2010 John McCall <rjmccall@apple.com> When inheriting a default argument expression, inherit the full expression,
not just the inner expression. This is important if the expression has any
temporaries. Fixes PR 7028.

Basically a symptom of really tragic method names.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102998 91177308-0d34-0410-b5e6-96231b3b80d8
efault-arg-temps.cpp
3c347f25b507740c3e41de70819f8fbbee4cde89 04-May-2010 Fariborz Jahanian <fjahanian@apple.com> Fixes a Code Gen. Crash when calling destructor on a __block
variabe. Blocks and their construction/destruction is
wip though.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102985 91177308-0d34-0410-b5e6-96231b3b80d8
lock-destruct.cpp
e65ce966b6865b686b0a9ba4fc72dfadf3e83701 03-May-2010 John McCall <rjmccall@apple.com> Just bail out immediately when emitting an unreachable function-local static
variable. Surprisingly, this does seem to be the right way to solve this.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102961 91177308-0d34-0410-b5e6-96231b3b80d8
tatic-init.cpp
e174bd05ca9991e705f51afcfab27933b537dc63 03-May-2010 Douglas Gregor <dgregor@apple.com> If we're generating code to create a pointer-to-member function
aggregate and the result of the aggregate is unused, bail out
early. Fixes PR7027.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102942 91177308-0d34-0410-b5e6-96231b3b80d8
ember-function-pointers.cpp
32897fd3bd84e96d4bfa28aca0c7a907776fb855 03-May-2010 Anders Carlsson <andersca@mac.com> When computing the address of a virtual member function pointer, use the pointer width instead of hardcoding for 64-bit.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102921 91177308-0d34-0410-b5e6-96231b3b80d8
ember-function-pointers.cpp
7362258bb8c84cc3107993a7249cb3602ceb0bb7 03-May-2010 Douglas Gregor <dgregor@apple.com> Try to unbreak clang-i686-darawin10 builder

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102920 91177308-0d34-0410-b5e6-96231b3b80d8
mplicit-copy-assign-operator.cpp
6cfb1ca37bffdc4e3afdf96360b8c723a43bfbf4 03-May-2010 Anders Carlsson <andersca@mac.com> Get rid of virt.cpp.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102918 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
fe60f84c4f201c9ca8126066779da8ee004a70fc 03-May-2010 Douglas Gregor <dgregor@apple.com> When a class contains a non-empty anonymous union or struct, mark is
as non-empty. Fixes PR7021.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102913 91177308-0d34-0410-b5e6-96231b3b80d8
nonymous-union-member-initializer.cpp
e99bdb6969ec16d2829ccdf62b04a8c8eda8b215 03-May-2010 Anders Carlsson <andersca@mac.com> Don't build an aggregate constructor loop when the constructor is trivial.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102912 91177308-0d34-0410-b5e6-96231b3b80d8
ew.cpp
33d73fa9dbeddae48cf44a100937b02eae9843c4 03-May-2010 Anders Carlsson <andersca@mac.com> Add test case that I forgot to check in.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102905 91177308-0d34-0410-b5e6-96231b3b80d8
mpty-classes.cpp
0d7c583a4b4d0f57c6b69c66fd73babec4ef3799 03-May-2010 Anders Carlsson <andersca@mac.com> Don't copy or initialize empty classes. Fixes PR7012.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102891 91177308-0d34-0410-b5e6-96231b3b80d8
ew.cpp
06a9f3680d22529a2fcf20c52d71cf221d99d910 01-May-2010 Douglas Gregor <dgregor@apple.com> Complete reimplementation of the synthesis for implicitly-defined copy
assignment operators.

Previously, Sema provided type-checking and template instantiation for
copy assignment operators, then CodeGen would synthesize the actual
body of the copy constructor. Unfortunately, the two were not in sync,
and CodeGen might pick a copy-assignment operator that is different
from what Sema chose, leading to strange failures, e.g., link-time
failures when CodeGen called a copy-assignment operator that was not
instantiation, run-time failures when copy-assignment operators were
overloaded for const/non-const references and the wrong one was
picked, and run-time failures when by-value copy-assignment operators
did not have their arguments properly copy-initialized.

This implementation synthesizes the implicitly-defined copy assignment
operator bodies in Sema, so that the resulting ASTs encode exactly
what CodeGen needs to do; there is no longer any special code in
CodeGen to synthesize copy-assignment operators. The synthesis of the
body is relatively simple, and we generate one of three different
kinds of copy statements for each base or member:

- For a class subobject, call the appropriate copy-assignment
operator, after overload resolution has determined what that is.
- For an array of scalar types or an array of class types that have
trivial copy assignment operators, construct a call to
__builtin_memcpy.
- For an array of class types with non-trivial copy assignment
operators, synthesize a (possibly nested!) for loop whose inner
statement calls the copy constructor.
- For a scalar type, use built-in assignment.

This patch fixes at least a few tests cases in Boost.Spirit that were
failing because CodeGen picked the wrong copy-assignment operator
(leading to link-time failures), and I suspect a number of undiagnosed
problems will also go away with this change.

Some of the diagnostics we had previously have gotten worse with this
change, since we're going through generic code for our
type-checking. I will improve this in a subsequent patch.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102853 91177308-0d34-0410-b5e6-96231b3b80d8
mplicit-copy-assign-operator.cpp
62cf344e403f99dcb58f3f7ab9fcb365ef886f77 01-May-2010 Chris Lattner <sabre@nondot.org> with recent optimizer changes, these all get devirtualized.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102825 91177308-0d34-0410-b5e6-96231b3b80d8
ember-function-pointer-calls.cpp
ember-initializers.cpp
c743571e24c864b5930ef1290d71b03ccfde80a1 30-Apr-2010 John McCall <rjmccall@apple.com> Account for the VTT argument when making an implicit copy constructor for
a class with virtual bases. Just a patch until Sema starts (correctly) doing
most of this analysis.

Fixes PR 6622.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102692 91177308-0d34-0410-b5e6-96231b3b80d8
onstructors.cpp
9dffe6f51c676c1e423c382c62d1648746e36cd4 30-Apr-2010 John McCall <rjmccall@apple.com> Fix -fno-rtti -fexceptions by forcing the emission of (non-"builtin") RTTI
when used by the exceptions routines. Fixes PR 6974.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102684 91177308-0d34-0410-b5e6-96231b3b80d8
xceptions-no-rtti.cpp
ad4e02f1711e5e90f4e653397b626e0d1929002c 29-Apr-2010 Douglas Gregor <dgregor@apple.com> When determining a standard conversion sequence involves resolving the
address of an overloaded function (or function template), perform that
resolution prior to determining the implicit conversion
sequence. This resolution is not part of the implicit conversion
sequence itself.

Previously, we would always consider this resolution to be a
function pointer decay, which was a lie: there might be an explicit &
in the expression, in which case decay should not occur. This caused
the CodeGen assertion in PR6973 (where we created a
pointer to a pointer to a function when we should have had a pointer
to a function), but it's likely that there are corner cases of
overload resolution where this would have failed.

Cleaned up the code involved in determining the type that will
produced afer resolving the overloaded function reference, and added
an assertion to make sure the result is correct. Fixes PR6973.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102650 91177308-0d34-0410-b5e6-96231b3b80d8
ddress-of-fntemplate.cpp
1e9268e29798155b9edb5b20ac7490d8539ef6aa 28-Apr-2010 Douglas Gregor <dgregor@apple.com> Improve name mangling for dependent template names (e.g., typename
T::template apply<U>), handling a few cases where we previously failed
and performing substitutions on such dependent names. Fixes a crash in
Boost.PropertyTree.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102490 91177308-0d34-0410-b5e6-96231b3b80d8
angle-template.cpp
1c63b9c15d48cb8c833a4b2d6fd6c496c0766e88 27-Apr-2010 Douglas Gregor <dgregor@apple.com> When explicitly building a temporary object (CXXTemporaryObjectExpr),
keep track of whether we need to zero-initialize storage prior to
calling its constructor. Previously, we were only tracking this when
implicitly constructing the object (a CXXConstructExpr).

Fixes Boost's value-initialization tests, which means that the
Boost.Config library now passes all of its tests.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102461 91177308-0d34-0410-b5e6-96231b3b80d8
alue-init.cpp
c9a85f9b4cc8ed95ed7feeff554a74bf52bdc1f7 26-Apr-2010 Chris Lattner <sabre@nondot.org> emit dtors with the right calling convention in -fno-use-cxa-atexit
mode.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102377 91177308-0d34-0410-b5e6-96231b3b80d8
rm.cpp
fa3c9825dce1ea9d6fd2da4b0c19917c59fbc6c7 26-Apr-2010 Chris Lattner <sabre@nondot.org> remove alignment specifier on this. CAn't this test be removed yet? :)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102369 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
9994eeda99b08f52bb0312aaddae00f9ae6c7deb 25-Apr-2010 Douglas Gregor <dgregor@apple.com> Tweak test for destruction of copied temporary objects

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102291 91177308-0d34-0410-b5e6-96231b3b80d8
emporaries.cpp
b86cf0c11712fa89f14197f3f0ed862e7b2add84 25-Apr-2010 Douglas Gregor <dgregor@apple.com> When copying a temporary object to initialize an entity for which the
temporary needs to be bound, bind the copy object. Otherwise, we won't
end up calling the destructor for the copy. Fixes Boost.Optional.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102290 91177308-0d34-0410-b5e6-96231b3b80d8
emporaries.cpp
6a03e345bb3c971750920e34a0d7d1ea7c9eceb7 23-Apr-2010 Douglas Gregor <dgregor@apple.com> Handle compound assignment expressions (i += j) as lvalues, which is
permitted in C++ but not in C. Fixes PR6900. Clang can now handle all
of Boost.Lambda's regression tests.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102170 91177308-0d34-0410-b5e6-96231b3b80d8
ssign-operator.cpp
20f0cc7a0f0c4a941fa0c57b9516c2d455b64a64 23-Apr-2010 Douglas Gregor <dgregor@apple.com> Mangle dependent template names such as the nested-name-specifier in

T::apply <U>::type

Fixes PR6899, although I want to dig a little deeper into the FIXME
for dependent template names that refer to operators.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102167 91177308-0d34-0410-b5e6-96231b3b80d8
angle-template.cpp
08688ac8aaf02b565619181903319d32b546bcf5 23-Apr-2010 Douglas Gregor <dgregor@apple.com> I hate default statements. Fixes PR6874.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102160 91177308-0d34-0410-b5e6-96231b3b80d8
amespace-aliases.cpp
7e2f128354f631d44b3f6dbcd4cee1cc04bdf7b1 22-Apr-2010 John McCall <rjmccall@apple.com> Neuter this testcase a little. The way LLVM writes labels for anonymous blocks
makes it impossible to check labels.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102048 91177308-0d34-0410-b5e6-96231b3b80d8
h.cpp
ac418162692a951ca3796d6830496a85a2d12493 22-Apr-2010 John McCall <rjmccall@apple.com> Call PerformCopyInitialization to properly initialize the exception temporary
in a throw expression. Use EmitAnyExprToMem to emit the throw expression,
which magically elides the final copy-constructor call (which raises a new
strict-compliance bug, but baby steps). Give __cxa_throw a destructor pointer
if the exception type has a non-trivial destructor.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102039 91177308-0d34-0410-b5e6-96231b3b80d8
h.cpp
71f4ff62bcff31c67808adb08691103b469ce9be 22-Apr-2010 Devang Patel <dpatel@apple.com> Encode field accessibility.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102033 91177308-0d34-0410-b5e6-96231b3b80d8
ield-access-debug-info.cpp
876681e706287d23ce45ea5bf715514da9e9212d 21-Apr-2010 Fariborz Jahanian <fjahanian@apple.com> Fixes a code gen. bug by removing an assert.
It is ok to have c++-ness inside extern "C"
block. Fixes pr6644.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101948 91177308-0d34-0410-b5e6-96231b3b80d8
-linkage.cpp
3e79c30807c516e8d32e4ed08408b30605df5997 20-Apr-2010 Anders Carlsson <andersca@mac.com> Back out r101911 and see if it makes the bots happy.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101921 91177308-0d34-0410-b5e6-96231b3b80d8
table-pointer-initialization.cpp
36fd6beef1ffaf93217d8ce96d900d4ed817e463 20-Apr-2010 Anders Carlsson <andersca@mac.com> Fix a bug which triggered the assertion I added yesterday. Basically, when we initialize the vtable pointer for a virtual base, and there was another path from the most derived class to another base with the same class type, we would use the wrong base.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101911 91177308-0d34-0410-b5e6-96231b3b80d8
table-pointer-initialization.cpp
fb97cf24158aa7f1fd74374052f99733ef331bb9 20-Apr-2010 Chris Lattner <sabre@nondot.org> don't slap noalias attribute on stret result arguments.
This mirror's Dan's patch for llvm-gcc in r97989, and
fixes the miscompilation in PR6525. There is some contention
over whether this is the right thing to do, but it is the
conservative answer and demonstrably fixes a miscompilation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101877 91177308-0d34-0410-b5e6-96231b3b80d8
86_32-arguments.cpp
9c82afc7d1f57b427053e6679d87539b0dc63b1a 20-Apr-2010 John McCall <rjmccall@apple.com> Restore r101841 without modification. Also mark 'operator delete' as used for
actual delete expressions, not just new expressions.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101861 91177308-0d34-0410-b5e6-96231b3b80d8
elete.cpp
b8cab18e8562994b87f8d7c06f8c122beb712677 19-Apr-2010 Rafael Espindola <rafael.espindola@gmail.com> If a method is virtual and the class key function is in another file, emit the method as available_externally.
Fixes PR6747


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101757 91177308-0d34-0410-b5e6-96231b3b80d8
R6747.cpp
65ad5a42cca954e070428dcc499b62393aa7a6d3 18-Apr-2010 Fariborz Jahanian <fjahanian@apple.com> Local static variables must be available module-wise
as they are accessible in static methods in a class
local to the same function. Fixes PR6769.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101756 91177308-0d34-0410-b5e6-96231b3b80d8
tatic-local-in-local-class.cpp
6ba38151f7e31d7f9194c8bbb91229cb5ffbb6f4 18-Apr-2010 Anders Carlsson <andersca@mac.com> Simplify wide bit-field layout in CGRecordLayoutBuilder, and also fix a bug where assigning to a bit-field member would overwrite other parts of the struct.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101681 91177308-0d34-0410-b5e6-96231b3b80d8
itfield-layout.cpp
d62328e6a0fa933e3a5daaf68e4964031e6c5c5e 17-Apr-2010 Anders Carlsson <andersca@mac.com> Unnamed bit-fields in a union should be laid out with a type that doesn't affect alignment.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101673 91177308-0d34-0410-b5e6-96231b3b80d8
itfield-layout.cpp
de9f153b2348f590151504888c22cb937134cd27 17-Apr-2010 Anders Carlsson <andersca@mac.com> If a wide bit-field is inside a union its offset should always be 0.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101668 91177308-0d34-0410-b5e6-96231b3b80d8
itfield-layout.cpp
fbf05613db16a521ce124391388891c488c47a0c 17-Apr-2010 Anders Carlsson <andersca@mac.com> Fix a bug where we would sometimes incorrectly mark an vtable function as unused.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101643 91177308-0d34-0410-b5e6-96231b3b80d8
table-layout.cpp
2ba6c81baa464281cda42ee1bf0df91cba7c031f 15-Apr-2010 Ted Kremenek <kremenek@apple.com> Specify temporary file for -emit-llvm output in test case so that we don't deposit the file
in the original source directory.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101402 91177308-0d34-0410-b5e6-96231b3b80d8
eference-in-blocks.cpp
97913576dbe624971bf18726899983d211d742c0 15-Apr-2010 Anders Carlsson <andersca@mac.com> Split adding the primary virtual base offsets out into a separate pass. This fixes a bug where we would lay out virtual bases in the wrong order.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101373 91177308-0d34-0410-b5e6-96231b3b80d8
table-layout.cpp
aa1d76163e4b0b1cc54e222be67379f8c02e8ffa 14-Apr-2010 Fariborz Jahanian <fjahanian@apple.com> Add encoding of reference types like gcc does for objc methods and
blocks. Fixes PR6468.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101196 91177308-0d34-0410-b5e6-96231b3b80d8
eference-in-blocks.cpp
cd9199eb3dd1a665ea642f3918020a53e5ecb673 13-Apr-2010 Devang Patel <dpatel@apple.com> Fix debug info for cleanup block.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101100 91177308-0d34-0410-b5e6-96231b3b80d8
estructor-debug-info.cpp
69c05d504619f9ab2c860017eee4fd483b886698 12-Apr-2010 Nick Lewycky <nicholas@mxc.ca> Typo.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101015 91177308-0d34-0410-b5e6-96231b3b80d8
table-layout.cpp
73e6fa00ff7aa3be32b1cfc8790761a4db716bb0 12-Apr-2010 Anders Carlsson <andersca@mac.com> Fix another bug where we wouldn't generate secondary vtables for construction vtables in some cases.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100998 91177308-0d34-0410-b5e6-96231b3b80d8
table-layout.cpp
af6ddf20711ccc6824545a5ac901d4fe3e462c3d 11-Apr-2010 Anders Carlsson <andersca@mac.com> Fix a bug where we were adding too many vcall offsets in some cases.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100985 91177308-0d34-0410-b5e6-96231b3b80d8
table-layout.cpp
573021fc10d0668a9d59888bdfc259e3a304b405 10-Apr-2010 Anders Carlsson <andersca@mac.com> Fix another vbase layout bug.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100952 91177308-0d34-0410-b5e6-96231b3b80d8
table-layout.cpp
f622b450d722b2954572e6ba04e1cdf18a21a41f 10-Apr-2010 Anders Carlsson <andersca@mac.com> Fix a bug where we would add the same function twice in a vtable.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100949 91177308-0d34-0410-b5e6-96231b3b80d8
table-layout.cpp
bdda6c1788dfdb890e1eccd13b949b1cc875eeaa 10-Apr-2010 Anders Carlsson <andersca@mac.com> Simplify the virtual base layout code and fix a bug where we wouldn't store the offset for a virtual base.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100940 91177308-0d34-0410-b5e6-96231b3b80d8
table-layout.cpp
de81063acdc999fbe1225f466ead12f7e9107acf 09-Apr-2010 John McCall <rjmccall@apple.com> Provide manglings for bool and character literal expressions. These are
just integer-literal expressions with special case implementations in the AST.

Fixes rdar://problem/7825453.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100905 91177308-0d34-0410-b5e6-96231b3b80d8
angle.cpp
7002f4c03c2d0544f4e8bea8d3a5636519081e35 09-Apr-2010 John McCall <rjmccall@apple.com> Turn access control on by default in -cc1.
Remove -faccess-control from -cc1; add -fno-access-control.
Make the driver pass -fno-access-control by default.
Update a bunch of tests to be correct under access control.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100880 91177308-0d34-0410-b5e6-96231b3b80d8
ssign-operator.cpp
onstructor-init-reference.cpp
onstructors.cpp
efault-destructor-nested.cpp
nstantiate-init-list.cpp
angle.cpp
ew-operator-phi.cpp
perator-new.cpp
emplate-anonymous-union-member-initializer.cpp
emplate-instantiation.cpp
irt-template-vtable.cpp
1e201b4a9d4880c3f90ab77e8a308140f003c7da 08-Apr-2010 Douglas Gregor <dgregor@apple.com> Eliminate excessive PCH deserialization caused by the search for
__cxxabiv1::__fundamental_type_info in every translation
unit. Previously, we would perform name lookup for
__cxxabiv1::__fundamental_type_info at the end of IRGen for a each
translation unit, to determine whether it was present. If so, we we
produce type information for all of the fundamental types. However,
this name lookup causes PCH deserialization of a significant part of the
translation unit, which has a woeful impact on performance.

With this change, we now look at each record type after we've
generated its vtable to see if it is
__cxxabiv1::__fundamental_type_info. If so, we generate type info for
all of the fundamental types. This works because
__cxxabiv1::__fundamental_type_info should always have a key function
(typically the virtual destructor), that will be defined once in the
support library. The fundamental type information will end up there.

Fixes <rdar://problem/7840011>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100772 91177308-0d34-0410-b5e6-96231b3b80d8
tti-fundamental.cpp
3ecd785aff34381f3704d9cb28fe3ef85af759de 04-Apr-2010 Mon P Wang <wangmp@apple.com> Reapply patch for adding support for address spaces and added a isVolatile field to memcpy, memmove, and memset.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100305 91177308-0d34-0410-b5e6-96231b3b80d8
h.cpp
ew.cpp
alue-init.cpp
35d646133ba70e5d44bc2d112ffd5e2ca262dbee 03-Apr-2010 Rafael Espindola <rafael.espindola@gmail.com> Don't produce a vtable for a class if we have an explicit template instantiation declaration and no key function. We will produce the vtable at the explicit template instantiation.

Fixes PR6748



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100266 91177308-0d34-0410-b5e6-96231b3b80d8
table-linkage.cpp
b5b3b304a7f0afb99f9ce349524f4e60375d268b 02-Apr-2010 Douglas Gregor <dgregor@apple.com> We seem to get an inconsistent alignment value in the generated
assembly for the global "d7". We were previously testing for alignment
3, which seems to happen for some builders and not for others. I've
eliminated the alignment check and added a FIXME to unbreak the
buildbots.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100205 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
c90f56d9f144b2dce88d1c141ddf0e0940e62e63 02-Apr-2010 Mon P Wang <wangmp@apple.com> Revert r100193 since it causes failures in objc in clang


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100200 91177308-0d34-0410-b5e6-96231b3b80d8
h.cpp
ew.cpp
alue-init.cpp
2f59979a7cc7929f53c9984423b0abeb83113442 02-Apr-2010 Douglas Gregor <dgregor@apple.com> Rework our handling of copy construction of temporaries, which was a
poor (and wrong) approximation of the actual rules governing when to
build a copy and when it can be elided.

The correct implementation is actually simpler than the
approximation. When we only enumerate constructors as part of
initialization (e.g., for direct initialization or when we're copying
from a class type or one of its derived classes), we don't create a
copy. When we enumerate all conversion functions, we do create a
copy. Before, we created some extra copies and missed some
others. The new test copy-initialization.cpp shows a case where we
missed creating a (required, non-elidable) copy as part of a
user-defined conversion, which resulted in a miscompile. This commit
also fixes PR6757, where the missing copy made us reject well-formed
code in the ternary operator.

This commit also cleans up our handling of copy elision in the case
where we create an extra copy of a temporary object, which became
necessary now that we produce the right copies. The code that seeks to
find the temporary object being copied has moved into
Expr::getTemporaryObject(); it used to have two different
not-quite-the-same implementations, one in Sema and one in CodeGen.

Note that we still do not attempt to perform the named return value
optimization, so we miss copy elisions for return values and throw
expressions.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100196 91177308-0d34-0410-b5e6-96231b3b80d8
opy-initialization.cpp
erived-to-base-conv.cpp
irt.cpp
8facca6cafa8d471768fe14074b1301e24e08fec 02-Apr-2010 Mon P Wang <wangmp@apple.com> Reapply patch for adding support for address spaces and added a isVolatile field to memcpy, memmove, and memset.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100193 91177308-0d34-0410-b5e6-96231b3b80d8
h.cpp
ew.cpp
alue-init.cpp
031b37140d0864c741618960b5220245a2a086ae 31-Mar-2010 Douglas Gregor <dgregor@apple.com> Drastically simplify the computation of linkage for typeinfo by using
the existing (and already well-tested) linkage computation for types,
with minor tweaks for dynamic classes and (pointers to) incomplete
types. Fixes PR6597.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99968 91177308-0d34-0410-b5e6-96231b3b80d8
tti-linkage.cpp
23cba801e11b03929c44f8cf54578305963a3476 31-Mar-2010 John McCall <rjmccall@apple.com> Introduce a new kind of derived-to-base cast which bypasses the need for
null checks, and make sure we elide null checks when accessing base class
members.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99963 91177308-0d34-0410-b5e6-96231b3b80d8
ember-expressions.cpp
b5896c37922e09529e61db4b3dd946cf2ecb211e 31-Mar-2010 Bob Wilson <bob.wilson@apple.com> Revert Mon Ping's 99930 due to broken llvm-gcc buildbots.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99949 91177308-0d34-0410-b5e6-96231b3b80d8
h.cpp
ew.cpp
alue-init.cpp
3b5caa20652c43d00229bac972b78bee44a0ee9f 30-Mar-2010 Mon P Wang <wangmp@apple.com> Added support for address spaces and added a isVolatile field to memcpy, memmove, and memset


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99930 91177308-0d34-0410-b5e6-96231b3b80d8
h.cpp
ew.cpp
alue-init.cpp
e0f38678f01291e68fc70ea6056260b54d529307 30-Mar-2010 Rafael Espindola <rafael.espindola@gmail.com> Don't produce a vtable if we are just instantiating a method and the
class has no key function.

Fix PR6738.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99900 91177308-0d34-0410-b5e6-96231b3b80d8
emplate-instantiation.cpp
8887bdcd4056ac25cb37dcb2abb9514e668eb81a 30-Mar-2010 Anders Carlsson <andersca@mac.com> Use the new function in EmitClassAggrMemberwiseCopy, fixing the same assert as seen in PR6628 but for arrays this time.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99867 91177308-0d34-0410-b5e6-96231b3b80d8
opy-constructor-synthesis.cpp
46bbf8d352fcd615420c5759a112ccd6e61516ad 30-Mar-2010 Anders Carlsson <andersca@mac.com> Handle default arguments when calling copy constructors for bases or members when synthesizing a copy constructor. Fixes PR6628.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99864 91177308-0d34-0410-b5e6-96231b3b80d8
opy-constructor-synthesis.cpp
d09020d87a69803b02c68eb6bf0b38e6ca660eda 30-Mar-2010 Anders Carlsson <andersca@mac.com> Change a test to FileCheck bitcode instead of assembler.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99863 91177308-0d34-0410-b5e6-96231b3b80d8
opy-constructor-synthesis.cpp
c9b64bafaf3129568f013e0c2875e1fcb9f51e6b 30-Mar-2010 Anders Carlsson <andersca@mac.com> Flip the switch and use the new vtable layout code for everything. I've verified that this passes a self-host but I'll let the bots self host as well before removing the now dead code.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99861 91177308-0d34-0410-b5e6-96231b3b80d8
table-linkage.cpp
1c3639351f8c252ddcc13d234cabf8780b1c235f 29-Mar-2010 Anders Carlsson <andersca@mac.com> When collecting virtual bases it's very important to use the canonical type of the base class. Otherwise, we might add the same virtual base class twice if the virtual base is an instantiated template. Fixes PR6251.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99829 91177308-0d34-0410-b5e6-96231b3b80d8
irtual-bases.cpp
adb507df13aeb2334eddef64e6bbdf41a44dc5b1 29-Mar-2010 Anders Carlsson <andersca@mac.com> Another vtable layout fix, making us match gcc better.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99812 91177308-0d34-0410-b5e6-96231b3b80d8
table-layout.cpp
ada087c4518a18f844ecc051b07039064016a4ba 27-Mar-2010 Anders Carlsson <andersca@mac.com> Give thunks the same linkage as their original methods.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99729 91177308-0d34-0410-b5e6-96231b3b80d8
hunks.cpp
d0c89a471bd21a8c837662b852f39a72b8b3e391 27-Mar-2010 Rafael Espindola <rafael.espindola@gmail.com> Test for the previous commit.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99702 91177308-0d34-0410-b5e6-96231b3b80d8
tti-fundamental.cpp
d6068482648a366ac9fc297a84780e922ab63a7a 26-Mar-2010 Douglas Gregor <dgregor@apple.com> When adding initializers to a constructor, be sure that we are looking
through the bases and fields of the definition of the class in which
the constructor is declared, rather than some other declaration of
that class.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99661 91177308-0d34-0410-b5e6-96231b3b80d8
onstructor-init.cpp
014a358058fab46a84718b1424e40ad5a8068827 25-Mar-2010 Anders Carlsson <andersca@mac.com> Don't add address points for virtual primary bases that aren't primary bases in the complete class.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99555 91177308-0d34-0410-b5e6-96231b3b80d8
table-layout-abi-examples.cpp
table-layout.cpp
1e41336415ceea828ac14c30f2e4d9bd445e77bd 25-Mar-2010 Fariborz Jahanian <fjahanian@apple.com> Check for some code gen. for PR6641 test.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99526 91177308-0d34-0410-b5e6-96231b3b80d8
ulti-dim-operator-new.cpp
f748845b19813d81189283f76778cfc870f6cfd7 25-Mar-2010 Douglas Gregor <dgregor@apple.com> Check for ret, so that we know we hit the end of the function

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99448 91177308-0d34-0410-b5e6-96231b3b80d8
eferences.cpp
33fd1fc1814a5573c972840d49317989e20deace 25-Mar-2010 Douglas Gregor <dgregor@apple.com> When returning from a function that has a reference return type, use
EmitReferenceBindingToExpr() rather than assuming we have an
lvalue. This is just the lowest hanging fruit for PR6024, which still
requires a bit of work.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99447 91177308-0d34-0410-b5e6-96231b3b80d8
eferences.cpp
f3eaf45bf3ebef039c99c1e9efb05b477b2a07aa 24-Mar-2010 Rafael Espindola <rafael.espindola@gmail.com> Discussing with dgregor we decided that we should not force the emission of
implicit methods on explicit template instantiation definitions. As a
consequence, we should emit them at every use, even if we see a explicit
template instantiation declaration.

This is already the current behaviour, but it is good to test for that :-)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99443 91177308-0d34-0410-b5e6-96231b3b80d8
R6677.cpp
emplate-instantiation.cpp
ceb43b662bf09b44a08714e8f9d222780ca979d7 24-Mar-2010 Fariborz Jahanian <fjahanian@apple.com> Code gen for multi-dimensional dynamic allocations.
Fixes PR6641.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99404 91177308-0d34-0410-b5e6-96231b3b80d8
ulti-dim-operator-new.cpp
ccd83d748c82c5255100f38e3f07537b949853b3 24-Mar-2010 Anders Carlsson <andersca@mac.com> More vtable improvements. We now compute and keep track of all vtable related information which avoids computing the same vtable layout over and over.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99403 91177308-0d34-0410-b5e6-96231b3b80d8
opy-constructor-synthesis-2.cpp
table-pointer-initialization.cpp
5c6c1d9eca7ce932eff011cd3e592f606e60b4be 24-Mar-2010 Anders Carlsson <andersca@mac.com> More vtable work; preparations for moving over to the new vtable layout code (finally).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99381 91177308-0d34-0410-b5e6-96231b3b80d8
opy-constructor-synthesis-2.cpp
table-pointer-initialization.cpp
d63fed48fa958ca7d9a432dab1010c272c19f215 24-Mar-2010 Anders Carlsson <andersca@mac.com> Flip the switch and use the new vtable layout code for thunks by default. Add a thunks.cpp test.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99367 91177308-0d34-0410-b5e6-96231b3b80d8
hunks.cpp
6c22c8eb73f7552651d1eb47c92840761b73a143 24-Mar-2010 Anders Carlsson <andersca@mac.com> Remove parts of virt.cpp

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99363 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
f075b229643aa07389a6055352ade7446241c3ca 23-Mar-2010 Rafael Espindola <rafael.espindola@gmail.com> revert 99311. Looks like it broke darwin bootstrap.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99317 91177308-0d34-0410-b5e6-96231b3b80d8
R6677.cpp
5fb12c6c8f64d4b69f65faefb7d0800d7e4bca66 23-Mar-2010 Rafael Espindola <rafael.espindola@gmail.com> Avoid producing implicit methods when we have a explicit template instantiation
declaration.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99311 91177308-0d34-0410-b5e6-96231b3b80d8
R6677.cpp
b0f65ca9853d1148211a38736141c8ccf2aa4a1d 23-Mar-2010 Rafael Espindola <rafael.espindola@gmail.com> A fixed version of r99174 which also includes a test that we emit vtables when
we see an specialization definition ever if we then see a extern template declaration.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99226 91177308-0d34-0410-b5e6-96231b3b80d8
R6677.cpp
8682bdae7e3db4e5d7dd957754923bbdf75fc166 21-Mar-2010 Rafael Espindola <rafael.espindola@gmail.com> Fix PR6648 by not creating a temporary with the type of a
CXXExprWithTemporaries.

Not emitting the expression as an aggregate might be the right thing to do,
but is orthogonal. Emitting it as an scalar expression will still try to
create a temporary for the incomplete type of the CXXExprWithTemporaries and
fail.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99134 91177308-0d34-0410-b5e6-96231b3b80d8
emporaries.cpp
0a80ba74ffa3d3df55abfbc4474d7470c7c923e3 20-Mar-2010 Daniel Dunbar <daniel@zuster.org> Driver: Fix a number of -fapple-kext issues:
- Disable RTTI.
- Disable use of __cxa_atexit.
- Disable unwind tables.
- Enable freestanding mode.

Also, honor -fhosted correctly.

<rdar://problem/7515383> C++ support: -fapple-kext not honored

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99041 91177308-0d34-0410-b5e6-96231b3b80d8
xx-apple-kext.cpp
efb0fa9e11f75af51744a6159530ef7cc8efa24a 20-Mar-2010 Daniel Dunbar <daniel@zuster.org> C++: Add support for -fno-use-cxa-atexit.
- So much typing, so little gain...

Also, rename the __cxx_global_initialization function just to match llvm-gcc.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99039 91177308-0d34-0410-b5e6-96231b3b80d8
eferred-global-init.cpp
lobal-dtor-no-atexit.cpp
lobal-init.cpp
f746aa6a8f538be914173a4aef2d9a2fd9f99d17 20-Mar-2010 John McCall <rjmccall@apple.com> Change CodeGenModule to rely on the Module's symbol table instead of
shadowing it in the GlobalDeclMap. Eliminates the string-uniquing
requirement for mangled names, which should help C++ codegen times a little.
Forces us to do string lookups instead of pointer lookups, which might hurt
codegen times a little across the board. We'll see how it plays out.

Removing the string-uniquing requirement implicitly fixes any bugs like
PR6635 which arose from the fact that we had multiple uniquing tables for
different kinds of identifiers.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99012 91177308-0d34-0410-b5e6-96231b3b80d8
ttr.cpp
9135a84d8e2c835d8b39c92eb15e8e9034b80bad 18-Mar-2010 Anders Carlsson <andersca@mac.com> When dumping vtables, also dump the thunks.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98799 91177308-0d34-0410-b5e6-96231b3b80d8
table-layout.cpp
9b35b25db3641dfa8876d24b41cfa5b4d51477cb 17-Mar-2010 Rafael Espindola <rafael.espindola@gmail.com> Correctly mangle dependent TypenameType.
Fixes PR6625.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98707 91177308-0d34-0410-b5e6-96231b3b80d8
angle.cpp
8f51a4f2d00b0abda3cde7f3828fb2e2b9beafb5 13-Mar-2010 Douglas Gregor <dgregor@apple.com> Give explicit template instantiations weak ODR linkage. Former
iterations of this patch gave explicit template instantiation
link-once ODR linkage, which permitted the back end to eliminate
unused symbols. Weak ODR linkage still requires the symbols to be
generated.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98441 91177308-0d34-0410-b5e6-96231b3b80d8
xplicit-instantiation.cpp
angle-exprs.cpp
angle-template.cpp
angle.cpp
ember-templates.cpp
emplate-linkage.cpp
emporaries.cpp
34fd284e0a6ea88b98d6e1183548264bab5b3702 13-Mar-2010 Douglas Gregor <dgregor@apple.com> Re-revert the explicit template instantiation linkage patch. I am beginning to look incompetent

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98425 91177308-0d34-0410-b5e6-96231b3b80d8
xplicit-instantiation.cpp
angle-exprs.cpp
angle-template.cpp
angle.cpp
ember-templates.cpp
emplate-linkage.cpp
emporaries.cpp
8721360da5cf3d5dfdc2fc2bf8d53a5f79307995 13-Mar-2010 Douglas Gregor <dgregor@apple.com> Reinstate patch to turn explicit template instantiations into weak symbols

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98424 91177308-0d34-0410-b5e6-96231b3b80d8
xplicit-instantiation.cpp
angle-exprs.cpp
angle-template.cpp
angle.cpp
ember-templates.cpp
emplate-linkage.cpp
emporaries.cpp
4ea9006629acb6bf9b2984554517c968a10a6b77 12-Mar-2010 Douglas Gregor <dgregor@apple.com> Revert the linkage change for explicit template instantiations; something is amiss

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98332 91177308-0d34-0410-b5e6-96231b3b80d8
xplicit-instantiation.cpp
angle-exprs.cpp
angle-template.cpp
angle.cpp
ember-templates.cpp
emplate-linkage.cpp
emporaries.cpp
e5e0c9deb1b4cfa081152cda548d31368facbc57 12-Mar-2010 Douglas Gregor <dgregor@apple.com> Give explicit template instantiations weak linkage (but don't defer
them). Fixes PR6578.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98328 91177308-0d34-0410-b5e6-96231b3b80d8
xplicit-instantiation.cpp
angle-exprs.cpp
angle-template.cpp
angle.cpp
ember-templates.cpp
emplate-linkage.cpp
emporaries.cpp
d295d78645503711d67ce54be2faddf7abdbc4e9 11-Mar-2010 Daniel Dunbar <daniel@zuster.org> Use -emit-llvm-only, to avoid leaving a temp around.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98267 91177308-0d34-0410-b5e6-96231b3b80d8
R6474.cpp
d9800728cc3e7f478eec4d4b19af5b808ac51942 11-Mar-2010 Rafael Espindola <rafael.espindola@gmail.com> Correctly mangle address of member in template arguments. Fixes PR6460



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98254 91177308-0d34-0410-b5e6-96231b3b80d8
angle.cpp
127e46727ed39703a7baa3218d2681082d931c92 11-Mar-2010 Anders Carlsson <andersca@mac.com> Add a test.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98246 91177308-0d34-0410-b5e6-96231b3b80d8
table-layout.cpp
2bc1d3a3b71564dc2909420abdd58aaf35191de2 10-Mar-2010 Anders Carlsson <andersca@mac.com> Fix calculation of whether a member function needs a thunk in construction vtables.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98191 91177308-0d34-0410-b5e6-96231b3b80d8
table-layout.cpp
a96a2e961a3bce0ad2fc44a115ac949a481d42db 10-Mar-2010 Anders Carlsson <andersca@mac.com> We were mistakenly marking morally virtual bases as being uninteresting. Fix this.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98180 91177308-0d34-0410-b5e6-96231b3b80d8
table-layout.cpp
f2c98ce9819cb7688a86e308f82ee896694a10e5 10-Mar-2010 Anders Carlsson <andersca@mac.com> Ignore non-interesting bases when emitting construction vtables.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98177 91177308-0d34-0410-b5e6-96231b3b80d8
table-layout.cpp
266e05ca8a77fa26fa136b5e45b58cba42e1d818 10-Mar-2010 Rafael Espindola <rafael.espindola@gmail.com> Move test and also test codegen.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98154 91177308-0d34-0410-b5e6-96231b3b80d8
R6474.cpp
e35b768ac4c8c5756e5ecf950153cea03faf4505 10-Mar-2010 Anders Carlsson <andersca@mac.com> Add newline.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98140 91177308-0d34-0410-b5e6-96231b3b80d8
table-layout.cpp
6039661c20eb6345c9d7dc1abd644183ebc91063 10-Mar-2010 Anders Carlsson <andersca@mac.com> Don't accidentally mark some functions in construction vtables as unused. Also land the test for a previous checkin, now that it's correct.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98139 91177308-0d34-0410-b5e6-96231b3b80d8
table-layout.cpp
db4022cf95d80afd28b5fd1273f5be62c891a230 10-Mar-2010 Anders Carlsson <andersca@mac.com> Improve vcall offset handling in construction vtables. With this we layout the construction vtables from the ABI examples correctly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98127 91177308-0d34-0410-b5e6-96231b3b80d8
table-layout-abi-examples.cpp
bbf58bb1b8dd8c5e0f07547a6c20ffd55385fcf6 10-Mar-2010 Rafael Espindola <rafael.espindola@gmail.com> Delay codegen of vtables when handling implicit instantiations.

This fixes PR6474.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98123 91177308-0d34-0410-b5e6-96231b3b80d8
irtual-base-destructor-call.cpp
7573f8b2f90ef65a253f7355fc466c93f0bc9832 09-Mar-2010 Devang Patel <dpatel@apple.com> More then one anonymous aggregates on one line creates chaos when MDNode uniquness is combined with RAUW operation. Right solution is to avoid using RAUW.

This fixes PR 6554.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98083 91177308-0d34-0410-b5e6-96231b3b80d8
010-03-09-AnonAggregate.cpp
516a6bc399f1f4595423e80c9d4bc687f870acd1 08-Mar-2010 Douglas Gregor <dgregor@apple.com> In C++98/03, an uninitialized variable that has POD class type will be
uninitialized. This seems not to be the case in C++0x, where we still
call the (trivial) default constructor for a POD class
(!). Previously, we had implemented only the C++0x rules; now we
implement both. Fixes PR6536.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97928 91177308-0d34-0410-b5e6-96231b3b80d8
nternal-linkage.cpp
4ce46c2db2b17ef52b34dbeeec01e448025c8edc 08-Mar-2010 Douglas Gregor <dgregor@apple.com> Perform overload resolution when static_cast'ing from a
pointer-to-member-to-derived to a pointer-to-member-to-base. Fixes
PR6072.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97923 91177308-0d34-0410-b5e6-96231b3b80d8
ullptr.cpp
d6a9324e9b0f77917a6f56781aba80f0d39ded55 07-Mar-2010 Eli Friedman <eli.friedman@gmail.com> Fix for PR6294: we should only delay recording nested dynamic classes if they
are lexically nested. Othewise, we never end up recording semantically nested
classes.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97900 91177308-0d34-0410-b5e6-96231b3b80d8
efault-destructor-nested.cpp
96df6cfd1220d629fca2ae4fec2aecfdf35ad847 07-Mar-2010 Douglas Gregor <dgregor@apple.com> Don't turn off mangling in implicitly extern "C" system headers. GCC
doesn't do this on any of the major platforms, and we don't really
support any of the platforms that do (nor will we actually handle
those headers well). Fixes PR6217; see PR6530 for details on what we
would need to do to support these platforms.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97899 91177308-0d34-0410-b5e6-96231b3b80d8
angle-system-header.cpp
4819ac44c0e5222ebfe8e199c51f653f52177336 04-Mar-2010 Fariborz Jahanian <fjahanian@apple.com> Refactor local class name mangling and make it
ABI conforming.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97702 91177308-0d34-0410-b5e6-96231b3b80d8
angle-local-class-names.cpp
570585307ef1e33490883b26b807cd2a5f88e99d 03-Mar-2010 Fariborz Jahanian <fjahanian@apple.com> Implements mangling of local class names to
fix a code gen crash. This is WIP as not
all ABI cases are covered (there is a FIXME to
this effect). Fixes radar 7696748.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97658 91177308-0d34-0410-b5e6-96231b3b80d8
angle-local-class-names.cpp
ce57dd5f9ff5bd6cebe3c94ae48eaf166ea50a23 03-Mar-2010 Anders Carlsson <andersca@mac.com> Fix a bug with base offset merging that Devang noticed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97641 91177308-0d34-0410-b5e6-96231b3b80d8
table-layout.cpp
9a70846c5ffd5ff5cce60de49cd7b312146bf502 03-Mar-2010 John McCall <rjmccall@apple.com> Don't emit derived-to-base destructor aliases if we don't have a definition
for the base destructor, because aliases to declarations aren't legal.

Fixes PR 6471.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97637 91177308-0d34-0410-b5e6-96231b3b80d8
estructors.cpp
ad5e73887052193afda72db8efcb812bd083a4a8 02-Mar-2010 John McCall <rjmccall@apple.com> Split out types that are non-canonical unless dependent as their own
category. Use this in a few places to eliminate unnecessary TST cases and
do some future-proofing. Provide terrible manglings for typeof. Mangle
decltype with some hope of accuracy.

Our manglings for some of the cases covered in the testcase are different
from gcc's, which I've raised as an issue with the ABI list.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97523 91177308-0d34-0410-b5e6-96231b3b80d8
angle.cpp
e1e342f4a96f132d8d7e802284417bd520f9f4f8 01-Mar-2010 John McCall <rjmccall@apple.com> The latest draft uses 'dt' to mangle member expressions, and now so do we.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97479 91177308-0d34-0410-b5e6-96231b3b80d8
angle.cpp
4b2ccfc302d7eebe9380211e6e2d4f7b4a6d0eba 28-Feb-2010 Douglas Gregor <dgregor@apple.com> Improve name mangling for dependently-scoped declaration references.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97422 91177308-0d34-0410-b5e6-96231b3b80d8
angle-template.cpp
5ed1bc351f36ca1086d7836baee546c39ce90dd7 28-Feb-2010 Douglas Gregor <dgregor@apple.com> Add name mangling for DeclRefExprs that refer to external names

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97418 91177308-0d34-0410-b5e6-96231b3b80d8
angle-template.cpp
dad0f9918a1860cc1a9926d46cd0fb5d2abf174d 28-Feb-2010 Anders Carlsson <andersca@mac.com> Handle unused functions in construction vtables correctly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97406 91177308-0d34-0410-b5e6-96231b3b80d8
table-layout.cpp
0378bf0840335c6d56b2f1b51079522054f7da4f 28-Feb-2010 Anders Carlsson <andersca@mac.com> When laying out vtables for virtual bases in construction vtables, we need to check if the vtable is a primary base in the layout class.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97402 91177308-0d34-0410-b5e6-96231b3b80d8
table-layout.cpp
293126becf78ef56bfaa446385af8a368eb8d1c2 28-Feb-2010 Anders Carlsson <andersca@mac.com> Add another construction vtable test.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97401 91177308-0d34-0410-b5e6-96231b3b80d8
table-layout.cpp
530c40c516427112f76a88958bf7c17769b5ca12 28-Feb-2010 Anders Carlsson <andersca@mac.com> More improvements to construction vtables; we know handle vbase offsets correctly (I hope).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97361 91177308-0d34-0410-b5e6-96231b3b80d8
table-layout.cpp
0041a649338112e388df64c39d45849ce48dfe3f 27-Feb-2010 Anders Carlsson <andersca@mac.com> Add a simple construction vtable test.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97344 91177308-0d34-0410-b5e6-96231b3b80d8
table-layout.cpp
6a8c5b2bc266902a3d1138122ef25cbe10e1687b 27-Feb-2010 Anders Carlsson <andersca@mac.com> Use the real base offset when calculating vbase offsets.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97338 91177308-0d34-0410-b5e6-96231b3b80d8
table-layout.cpp
e54d1c12d7a53bea988e2b880b66faf04410c1be 27-Feb-2010 Anders Carlsson <andersca@mac.com> Figured out why the test was failing, this will hopefully fix it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97336 91177308-0d34-0410-b5e6-96231b3b80d8
table-layout-abi-examples.cpp
8bc68f7a29f94446852f4d709115a7f4e6765f7a 27-Feb-2010 Anders Carlsson <andersca@mac.com> Don't add this adjustments for pure virtual member functions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97334 91177308-0d34-0410-b5e6-96231b3b80d8
table-layout.cpp
64b6e80e86f780c8796c0b0ab1ae5f9587052c70 27-Feb-2010 Anders Carlsson <andersca@mac.com> XFAIL this for now. I have no idea why this test is failing on some machines. Looks like some sort of whitespace issue in FileCheck.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97332 91177308-0d34-0410-b5e6-96231b3b80d8
table-layout-abi-examples.cpp
3504475548ce6aab989553c2a38391a34fc7fddc 27-Feb-2010 Anders Carlsson <andersca@mac.com> Add another test.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97329 91177308-0d34-0410-b5e6-96231b3b80d8
table-layout.cpp
2ef9d6bbd3ae2cf53318bb8fabc4fa6cc0743aff 27-Feb-2010 Anders Carlsson <andersca@mac.com> Finish up the changes to this adjustments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97328 91177308-0d34-0410-b5e6-96231b3b80d8
table-layout.cpp
c784ba21ba14f4cf65fc6fa2e3548c4775819921 27-Feb-2010 Anders Carlsson <andersca@mac.com> Fix another vtable layout bug; we weren't looking hard enough for overriden functions when determining if an overrider will ever be used.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97306 91177308-0d34-0410-b5e6-96231b3b80d8
table-layout.cpp
5560969d73e3e72747972d0f0f37ca4e3b042186 27-Feb-2010 Anders Carlsson <andersca@mac.com> Handle vcall offset sharing between destructors.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97304 91177308-0d34-0410-b5e6-96231b3b80d8
table-layout.cpp
08c26752efa51fb5dc47bd3382ea21814bd0c5b8 27-Feb-2010 Anders Carlsson <andersca@mac.com> Fix a bug where we were generating an unnecessary vtable for a virtual base that's already a primary virtual base.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97303 91177308-0d34-0410-b5e6-96231b3b80d8
table-layout.cpp
bf554f63bffa7db32b5f343f6fd075501b97d401 25-Feb-2010 Anders Carlsson <andersca@mac.com> Fux a bug where we were trying to add overriders for non-virtual bases of virtual bases more than once.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97173 91177308-0d34-0410-b5e6-96231b3b80d8
table-layout.cpp
5edcc3752563ae0ed5b26f8c89a472ac84af9cf7 24-Feb-2010 Anders Carlsson <andersca@mac.com> Generate correct vcall offsets when we have a primary virtual base that is not a primary base in the complete class hierarchy.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97039 91177308-0d34-0410-b5e6-96231b3b80d8
table-layout-abi-examples.cpp
b1162f178feb312b452e1b2095e0ed3413ba47fe 23-Feb-2010 Eli Friedman <eli.friedman@gmail.com> PR6400: Handle an extreme edge case in mangling correctly.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96961 91177308-0d34-0410-b5e6-96231b3b80d8
angle-subst-std.cpp
af280c03a515b39b4b2c8e221068b3ed6a692cab 23-Feb-2010 Anders Carlsson <andersca@mac.com> More fixes. Don't try to emit a virtual base vtable if the virtual base in question is a primary virtual base of some other base.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96881 91177308-0d34-0410-b5e6-96231b3b80d8
table-layout.cpp
92f54325673f2708d911ae3d8a95d77e21b06e37 23-Feb-2010 Anders Carlsson <andersca@mac.com> Always emit vcall offset for the primary base, not only if it's virtual. Remove a debug printf, and add the test case that now passes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96880 91177308-0d34-0410-b5e6-96231b3b80d8
table-layout.cpp
c0bf462cf35fe050bddbd8bff967298e4a67e79d 23-Feb-2010 John McCall <rjmccall@apple.com> Perform two more constructor/destructor code-size optimizations:

1) emit base destructors as aliases to their unique base class destructors
under some careful conditions. This is enabled for the same targets that can
support complete-to-base aliases, i.e. not darwin.

2) Emit non-variadic complete constructors for classes with no virtual bases
as calls to the base constructor. This is enabled on all targets and in
theory can trigger in situations that the alias optimization can't (mostly
involving virtual bases, mostly not yet supported).

These are bundled together because I didn't think it worthwhile to split them,
not because they really need to be.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96842 91177308-0d34-0410-b5e6-96231b3b80d8
onstructors.cpp
efault-arguments.cpp
estructors.cpp
irtual-destructor-calls.cpp
table-pointer-initialization.cpp
9fc6a7774643a810c8501dae2323e863fefb623e 19-Feb-2010 John McCall <rjmccall@apple.com> More refactoring around constructor/destructor code generation.
Fix some bugs with function-try-blocks and simplify normal try-block
code generation.

This implementation excludes a deleting destructor's call to
operator delete() from the function-try-block, which I believe
is correct but which I can't find straightforward support for at
a moment's glance.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96670 91177308-0d34-0410-b5e6-96231b3b80d8
estructors.cpp
f2349fc7e2b3e920a19adaf3519b278ac38d228b 19-Feb-2010 Anders Carlsson <andersca@mac.com> Add another test from the ABI spec.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96659 91177308-0d34-0410-b5e6-96231b3b80d8
table-layout-abi-examples.cpp
d46f98573ba104eda102dd3224b2dca69f1c6336 19-Feb-2010 John McCall <rjmccall@apple.com> Re-introduce the ctor/dtor alias optimization, this time hidden behind a
command-line option which defaults off.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96649 91177308-0d34-0410-b5e6-96231b3b80d8
irtual-bases.cpp
irtual-destructor-calls.cpp
table-pointer-initialization.cpp
8e51a1f5da6ef4a1a168d14116c6eed3a578a263 18-Feb-2010 John McCall <rjmccall@apple.com> Revert the ctor/dtor alias optimization for now; the buildbots can detect
some failure here that I can't.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96612 91177308-0d34-0410-b5e6-96231b3b80d8
efault-arguments.cpp
angle-subst-std.cpp
angle.cpp
ember-templates.cpp
irtual-bases.cpp
irtual-destructor-calls.cpp
table-pointer-initialization.cpp
3b47733ceac33306bd54ce9d6c7d8eeeae52c7ca 18-Feb-2010 John McCall <rjmccall@apple.com> Make deleting and complete dtor variants defer to other dtor variants by
calling them as subroutines. This triggers whenever the alias optimization
doesn't, i.e. when the dtor has linkonce linkage or there are virtual bases
or it's the deleting dtor.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96605 91177308-0d34-0410-b5e6-96231b3b80d8
irtual-base-destructor-call.cpp
irtual-destructor-calls.cpp
8b6765fb563a5b03d128d8f53b9b3986128a3405 18-Feb-2010 Anders Carlsson <andersca@mac.com> Fix another bug and add another class.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96590 91177308-0d34-0410-b5e6-96231b3b80d8
table-layout-abi-examples.cpp
54d9a78b2ca41b89f5dc8ec6688086db59667495 18-Feb-2010 Anders Carlsson <andersca@mac.com> Add another class from cxx-vtable-ex.html

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96588 91177308-0d34-0410-b5e6-96231b3b80d8
table-layout-abi-examples.cpp
eb577d0df44df4df974e9b3a538575d92358a3b3 18-Feb-2010 Anders Carlsson <andersca@mac.com> More work on vcall offsets.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96587 91177308-0d34-0410-b5e6-96231b3b80d8
table-layout-abi-examples.cpp
be71e3b28a1440fe08c45ecbe25899d99235c309 18-Feb-2010 Anders Carlsson <andersca@mac.com> Add tests from the Itanium C++ ABI spec.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96586 91177308-0d34-0410-b5e6-96231b3b80d8
table-layout-abi-examples.cpp
92ac9ffecd236a6be0d6ab30cef56100e56b171c 17-Feb-2010 John McCall <rjmccall@apple.com> Emit complete constructors and destructors as aliases to base constructors
and destructors when the two entities are semantically identical, i.e. when
the class has no virtual base classes. We only do this for linkage types
for which aliases are supported, i.e. internal and external, i.e. not linkonce.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96451 91177308-0d34-0410-b5e6-96231b3b80d8
efault-arguments.cpp
angle-subst-std.cpp
angle.cpp
ember-templates.cpp
irtual-bases.cpp
irtual-destructor-calls.cpp
table-pointer-initialization.cpp
647a1ec397fa13af176d07d9f5d071560a94c7a9 16-Feb-2010 Daniel Dunbar <daniel@zuster.org> IRgen: Switch 'retval' to use CreateIRTemp.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96376 91177308-0d34-0410-b5e6-96231b3b80d8
lloca-align.cpp
150065722a5f010adb0f801d26d8a129a5243669 16-Feb-2010 Daniel Dunbar <daniel@zuster.org> IRgen: Switch EmitCompoundLiteralLValue to use CreateMemTemp.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96373 91177308-0d34-0410-b5e6-96231b3b80d8
lloca-align.cpp
61814f6a24c173a552ac147160979114289897cf 16-Feb-2010 Anders Carlsson <andersca@mac.com> Add an extreme vbase offsets test. I'm kinda amazed that this works myself ;)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96356 91177308-0d34-0410-b5e6-96231b3b80d8
table-layout-extreme.cpp
69dc04e94872616cebbdd8215d1f5036a8add3f7 16-Feb-2010 Anders Carlsson <andersca@mac.com> Handle layout of vtables for virtual bases.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96355 91177308-0d34-0410-b5e6-96231b3b80d8
table-layout.cpp
c7b631682f66b5d6144968cf75d3af895b611fc6 16-Feb-2010 Anders Carlsson <andersca@mac.com> Fix a bug where we would not emit secondary vtables for bases of a primary base.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96351 91177308-0d34-0410-b5e6-96231b3b80d8
table-layout.cpp
852213e54a1b2c2246776b4bb4e9527d70c98807 16-Feb-2010 Anders Carlsson <andersca@mac.com> Emit vbase offsets.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96329 91177308-0d34-0410-b5e6-96231b3b80d8
table-layout.cpp
b828afa89a3d50c4370199a7c6c04facfd843b47 14-Feb-2010 Anders Carlsson <andersca@mac.com> Don't compute final overriders or build vtables for bases that don't need a vtable.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96171 91177308-0d34-0410-b5e6-96231b3b80d8
table-layout.cpp
e67dc3072522570207a16724ea459f81a58e4621 14-Feb-2010 Anders Carlsson <andersca@mac.com> Improve support for non-virtual 'this' pointer adjustments. With this, it should be possible to use the new vtable layout code for all class hierarchies that do not involve virtual bases.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96137 91177308-0d34-0410-b5e6-96231b3b80d8
table-layout.cpp
49bac9a2ea08961b6de77c9a08ed77fbbb7f5a1a 14-Feb-2010 Anders Carlsson <andersca@mac.com> Add basic support for simple non-virtual 'this' pointer adjustments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96136 91177308-0d34-0410-b5e6-96231b3b80d8
table-layout.cpp
76f1aa7658c34532785e6f44c99af65f3e4bd194 13-Feb-2010 Anders Carlsson <andersca@mac.com> Start laying out secondary vtables.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96123 91177308-0d34-0410-b5e6-96231b3b80d8
table-layout.cpp
1d05be51b09ae1ce65b1ecd6220bade12908586d 13-Feb-2010 Anders Carlsson <andersca@mac.com> Don't make return adjustments for pure virtual member functions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96120 91177308-0d34-0410-b5e6-96231b3b80d8
table-layout.cpp
60db0ee2c1d91ea86b04b5e448810ba418058180 13-Feb-2010 Anders Carlsson <andersca@mac.com> Handle virtual bases in return adjustment types.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96119 91177308-0d34-0410-b5e6-96231b3b80d8
table-layout.cpp
7dbf47adb8b8ca84484fae0861ffb2f1eaf44011 13-Feb-2010 Anders Carlsson <andersca@mac.com> More work on covariant return types. We now handle non-virtual adjustments fine.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96114 91177308-0d34-0410-b5e6-96231b3b80d8
table-layout.cpp
c1eec891eb008cf3bc89d69d90af82678513f79b 12-Feb-2010 Anders Carlsson <andersca@mac.com> Fix a refacto that broke the clang-on-clang build.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95994 91177308-0d34-0410-b5e6-96231b3b80d8
irtual-function-calls.cpp
28cbc8b512db420748601dba276144d729a0d7a2 12-Feb-2010 Anders Carlsson <andersca@mac.com> Keep track of the address points for all primary bases, and add the ability to dump multiple address points for a single offset.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95970 91177308-0d34-0410-b5e6-96231b3b80d8
table-layout.cpp
96058953c72355efb266abe8e333db4f5715dbd2 12-Feb-2010 John McCall <rjmccall@apple.com> Fix a bug causing an assertion when a covariant return type differed from
an overriden type only by reduced qualification.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95968 91177308-0d34-0410-b5e6-96231b3b80d8
table-layout.cpp
57071e29bdb65d21f72e221f2a16f24f6bea72f3 12-Feb-2010 Anders Carlsson <andersca@mac.com> More work on vtable layout. We can now layout vtables with primary bases.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95965 91177308-0d34-0410-b5e6-96231b3b80d8
table-layout.cpp
982414266cbfbb3f2784c6b42f008532336ea64c 12-Feb-2010 Anders Carlsson <andersca@mac.com> When dumping vtables, dump whether a virtual member function is pure or not.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95963 91177308-0d34-0410-b5e6-96231b3b80d8
table-layout.cpp
bac727110b58f2e9dc28581d6870843e71ae9b8f 11-Feb-2010 Anders Carlsson <andersca@mac.com> Add virtual operator= example.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95888 91177308-0d34-0410-b5e6-96231b3b80d8
table-layout.cpp
848fa64143fbe5ae62a601ad61277f741e54dfab 11-Feb-2010 Anders Carlsson <andersca@mac.com> More vtable layout dumper improvements. Handle destructors, dump the complete function type of the member functions (using PredefinedExpr::ComputeName.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95887 91177308-0d34-0410-b5e6-96231b3b80d8
table-layout.cpp
822307bbb12bc1025910d6387b79723087d27d9f 11-Feb-2010 Anders Carlsson <andersca@mac.com> Keep track of, and dump, vtable address points.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95874 91177308-0d34-0410-b5e6-96231b3b80d8
table-layout.cpp
824d7ea07a4e9208925daa6ae9289fb2b39bce9f 11-Feb-2010 Anders Carlsson <andersca@mac.com> Check in the beginnings of my new vtable layout builder idea.

Right now, it's off by default but can be tested by passing -fdump-vtable-layouts to clang -cc1. This option will cause all vtables that will normally be emitted as part of codegen to also be dumped using the new layout code.

I've also added a very simple new vtable layout test case.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95865 91177308-0d34-0410-b5e6-96231b3b80d8
table-layout.cpp
e5712b1341ecae8901ca26f1bdfac2a281958209 09-Feb-2010 Daniel Dunbar <daniel@zuster.org> Update tests in -Asserts mode. These tests really need to be rewritten...

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95658 91177308-0d34-0410-b5e6-96231b3b80d8
ondition.cpp
irt.cpp
195337d2e5d4625ae9dc1328c7cdbc7115b0261b 09-Feb-2010 Daniel Dunbar <daniel@zuster.org> IRgen: Add CreateMemTemp, for creating an temporary memory object for a particular type, and flood fill. - CreateMemTemp sets the alignment on the alloca correctly, which fixes a great many places in IRgen where we were doing the wrong thing.

- This fixes many many more places than the test case, but my feeling is we need to audit alignment systematically so I'm not inclined to try hard to test the individual fixes in this patch. If this bothers you, patches welcome!

PR6240.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95648 91177308-0d34-0410-b5e6-96231b3b80d8
lloca-align.cpp
88786862424cb2d478516d911709dc19c962af9c 08-Feb-2010 John McCall <rjmccall@apple.com> Emit global references with constant initializers as constants. Fixes PR5585.

The standard actually says that such references should have internal linkage,
but gcc doesn't do that, so we probably can't get away with it.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95577 91177308-0d34-0410-b5e6-96231b3b80d8
onst-init.cpp
1851a12605bc6f1ea70d11974a315340ebaab6eb 07-Feb-2010 Anders Carlsson <andersca@mac.com> Make sure to set vtable pointers in the destructors as well.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95525 91177308-0d34-0410-b5e6-96231b3b80d8
table-pointer-initialization.cpp
585fa68ca00421af6c8289866a7bde27a8e8c0ce 07-Feb-2010 Anders Carlsson <andersca@mac.com> Use the right type when taking the address of a non-virtual member function pointer. Fixes PR6258.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95524 91177308-0d34-0410-b5e6-96231b3b80d8
ember-function-pointers.cpp
63a011378d4b9483ce24400c163cb8d65ea096a5 07-Feb-2010 Douglas Gregor <dgregor@apple.com> Fix assertion failure when parsing linkage specifications (PR5921),
from Keir Mierle!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95516 91177308-0d34-0410-b5e6-96231b3b80d8
xtern-c.cpp
f6b89a173827457c28ac77b7cf091a24ef484e8a 07-Feb-2010 Anders Carlsson <andersca@mac.com> Use the right linkage for static variables inside C++ inline functions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95512 91177308-0d34-0410-b5e6-96231b3b80d8
tatic-init.cpp
39de84d671bac60662251e98f20a5a6039795dfc 07-Feb-2010 Anders Carlsson <andersca@mac.com> Improved handling of the visibility attribute. Declarations now inherit their parent's visibility.

(This is kind of a risky change, but I did a self-host build and everything appears to work fine!)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95511 91177308-0d34-0410-b5e6-96231b3b80d8
isibility.cpp
a994ee4b197554282ae6b222c3284ccaa3a6484c 07-Feb-2010 Anders Carlsson <andersca@mac.com> Make EmitStartEHSpec and EmitEndEHSpec return early when exceptions are disabled.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95509 91177308-0d34-0410-b5e6-96231b3b80d8
o-exceptions.cpp
a508b7de6c5246ab04ed69d0ab4e9977ec1fb4d4 07-Feb-2010 Anders Carlsson <andersca@mac.com> Add support for threadsafe statics, and make them the default (matching gcc).

Daniel, I'd appreciate a review of the driver/cc1 parts.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95508 91177308-0d34-0410-b5e6-96231b3b80d8
hreadsafe-statics.cpp
aec2523ab2c91413ef2f66dc944d0d6ac6a58abe 06-Feb-2010 Anders Carlsson <andersca@mac.com> Only append 'L' for internal variable declarations, not all declarations. (Found by the mangle checker, yay)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95485 91177308-0d34-0410-b5e6-96231b3b80d8
angle.cpp
b2bcf1c176b200b36f371e189ce22f93c86cdf45 06-Feb-2010 Anders Carlsson <andersca@mac.com> Use the correct function info for constructors when applying function attributes. Fixes PR6245.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95474 91177308-0d34-0410-b5e6-96231b3b80d8
irtual-bases.cpp
32fb4e1fd1cbd2ff006cc0e06c997e4eea2f0e28 05-Feb-2010 Douglas Gregor <dgregor@apple.com> Implement name mangling for template template parameters

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95427 91177308-0d34-0410-b5e6-96231b3b80d8
angle.cpp
2ca4f633b21c65e1a4edc2405a768d7f5db564eb 05-Feb-2010 Anders Carlsson <andersca@mac.com> Fix the bug that was breaking self-host, and re-land the static ctor fixes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95400 91177308-0d34-0410-b5e6-96231b3b80d8
lobal-init.cpp
90c1c58aa72fecb8c3211aa25d0ef726ca6bf876 05-Feb-2010 Douglas Gregor <dgregor@apple.com> Revert r95363 and r95375, which broke self-host.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95389 91177308-0d34-0410-b5e6-96231b3b80d8
lobal-init.cpp
7e673c4c11cd1a26e87f666c37c744e9f0446dd9 05-Feb-2010 Anders Carlsson <andersca@mac.com> Fix a test case.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95374 91177308-0d34-0410-b5e6-96231b3b80d8
ointers-to-data-members.cpp
7d94a9503c90fd26cd41a5cae3831d79e334526f 05-Feb-2010 Anders Carlsson <andersca@mac.com> If a global initializer has a non-trivial destructor it can't be emitted as a constant (even if it has a trivial constructor).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95363 91177308-0d34-0410-b5e6-96231b3b80d8
lobal-init.cpp
0dc736627614b476ec696fa216dd2a524d0bafad 04-Feb-2010 Anders Carlsson <andersca@mac.com> When binding an lvalue to a reference, we always need to pop temporaries.

With this fix, and the other fixes committed today a make check-all with a clang-built LLVM now gives:

Expected Passes : 6933
Expected Failures : 46
Unsupported Tests : 40
Unexpected Failures: 27

which means that we pass 99.96% of all tests :) The resulting 27 tests are all LLVMC tests and seem to be because of differences in the clang and gcc drivers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95313 91177308-0d34-0410-b5e6-96231b3b80d8
emporaries.cpp
8ffc80fe5413bcb9f350ae4d1c2d7617af970c8e 04-Feb-2010 Anders Carlsson <andersca@mac.com> Update test.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95312 91177308-0d34-0410-b5e6-96231b3b80d8
onditional-temporaries.cpp
c1b32f69687ed289fb1150df34965ada250caf70 04-Feb-2010 Anders Carlsson <andersca@mac.com> Fix a bug where we would not mark temporaries as conditional when emitting a conditional operator as an lvalue.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95311 91177308-0d34-0410-b5e6-96231b3b80d8
onditional-temporaries.cpp
4e3014be0606d6be5554d76f317d5908be3bccfc 04-Feb-2010 Anders Carlsson <andersca@mac.com> Improve conditional temporaries test.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95310 91177308-0d34-0410-b5e6-96231b3b80d8
onditional-temporaries.cpp
51591bed1050827c23691cf36e2e1621dfe08b00 04-Feb-2010 Anders Carlsson <andersca@mac.com> Fix another pointer-to-member function miscompile, this time when trying to call a virtual member function.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95307 91177308-0d34-0410-b5e6-96231b3b80d8
ember-function-pointer-calls.cpp
5bb0ddd10b07ecc0df43f0d5f50f0b9f10046426 04-Feb-2010 Anders Carlsson <andersca@mac.com> Improve test.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95306 91177308-0d34-0410-b5e6-96231b3b80d8
onditional-temporaries.cpp
e8a81f7e8e26275d91c073bf908a7d6d246106c5 04-Feb-2010 Anders Carlsson <andersca@mac.com> Calculate offset correctly when taking the address of a virtual member function.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95305 91177308-0d34-0410-b5e6-96231b3b80d8
ember-function-pointers.cpp
2f27bf854f0519810b34afd209089cc75536b757 04-Feb-2010 John McCall <rjmccall@apple.com> Mangle member expressions. Also invented.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95284 91177308-0d34-0410-b5e6-96231b3b80d8
angle.cpp
1dd7383dc48718c452e71a625b29531dd96fbb9d 04-Feb-2010 John McCall <rjmccall@apple.com> Add mangling support for calls, sizeof/alignof, constructor calls,
float literals, and unresolved lookups (which required hand-wavey extensions).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95273 91177308-0d34-0410-b5e6-96231b3b80d8
angle.cpp
f6b6025a4e26bb0295a57e0efece73253038f278 03-Feb-2010 Anders Carlsson <andersca@mac.com> Don't try to fold DeclRefExprs that point to ParmVarDecls. This had the side-effect of always folding the expression to the default argument of the parameter. For example:

void f(int a = 10) {
return a;
}

would always return 10, regardless of the passed in argument.

This fixes another 600 test failures. We're now down to only 137 failures!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95262 91177308-0d34-0410-b5e6-96231b3b80d8
ember-initializers.cpp
e78ccb4d609a113c3e06a9c4583e845e90b1a037 03-Feb-2010 Anders Carlsson <andersca@mac.com> Handle reference binding in aggregate initializers. Fixes another 47 tests.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95235 91177308-0d34-0410-b5e6-96231b3b80d8
eferences.cpp
0b6bc8bd7a1d2a7d7478d13d78cff94cacad61fc 03-Feb-2010 Douglas Gregor <dgregor@apple.com> When a function or variable somehow depends on a type or declaration
that is in an anonymous namespace, give that function or variable
internal linkage.

This change models an oddity of the C++ standard, where names declared
in an anonymous namespace have external linkage but, because anonymous
namespace are really "uniquely-named" namespaces, the names cannot be
referenced from other translation units. That means that they have
external linkage for semantic analysis, but the only sensible
implementation for code generation is to give them internal
linkage. We now model this notion via the UniqueExternalLinkage
linkage type. There are several changes here:

- Extended NamedDecl::getLinkage() to produce UniqueExternalLinkage
when the declaration is in an anonymous namespace.
- Added Type::getLinkage() to determine the linkage of a type, which
is defined as the minimum linkage of the types (when we're dealing
with a compound type that is not a struct/class/union).
- Extended NamedDecl::getLinkage() to consider the linkage of the
template arguments and template parameters of function template
specializations and class template specializations.
- Taught code generation to rely on NamedDecl::getLinkage() when
determining the linkage of variables and functions, also
considering the linkage of the types of those variables and
functions (C++ only). Map UniqueExternalLinkage to internal
linkage, taking out the explicit checks for
isInAnonymousNamespace().

This fixes much of PR5792, which, as discovered by Anders Carlsson, is
actually the reason behind the pass-manager assertion that causes the
majority of clang-on-clang regression test failures. With this fix,
Clang-built-Clang+LLVM passes 88% of its regression tests (up from
67%). The specific numbers are:

LLVM:
Expected Passes : 4006
Expected Failures : 32
Unsupported Tests : 40
Unexpected Failures: 736

Clang:
Expected Passes : 1903
Expected Failures : 14
Unexpected Failures: 75

Overall:
Expected Passes : 5909
Expected Failures : 46
Unsupported Tests : 40
Unexpected Failures: 811

Still to do:
- Improve testing
- Check whether we should allow the presence of types with
InternalLinkage (in addition to UniqueExternalLinkage) given
variables/functions internal linkage in C++, as mentioned in
PR5792.
- Determine how expensive the getLinkage() calls are in practice;
consider caching the result in NamedDecl.
- Assess the feasibility of Chris's idea in comment #1 of PR5792.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95216 91177308-0d34-0410-b5e6-96231b3b80d8
nternal-linkage.cpp
a78fa2c40fbbe505485e7d120dc68a292ee0c968 02-Feb-2010 Anders Carlsson <andersca@mac.com> Set the correct vtable pointers _before_ generating code for any member initializers. Fixes about ~2000 clang/LLVM tests in the clang-on-clang build.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95116 91177308-0d34-0410-b5e6-96231b3b80d8
ember-initializers.cpp
fb8b69aef3377aaa786d1278aaae7e7b04ac095f 02-Feb-2010 John McCall <rjmccall@apple.com> Codegen CXXConstructExprs with trivial constructors as constants.
Eliminates a lot of spurious global initializers, fixing PR6205.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95077 91177308-0d34-0410-b5e6-96231b3b80d8
lobal-init.cpp
2e13db8bc64bc99922b0aeb45443c681c1643c82 02-Feb-2010 Anders Carlsson <andersca@mac.com> Check in a test case and a nasty workaround for PR6199.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95076 91177308-0d34-0410-b5e6-96231b3b80d8
emporaries.cpp
b217bcce1463db6d6a9c45f53b984af49ee35d03 02-Feb-2010 Daniel Dunbar <daniel@zuster.org> XFAIL two tests on Win32 until some cares to investigate... the problem on
dyncast is just due to \r\n newline interaction w/ regexps. The remap-load.c
failure is a bit stranger (the end of the extent is on the next line), but I
don't care to investigate.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95071 91177308-0d34-0410-b5e6-96231b3b80d8
yncast.cpp
2c12d0319a267b844cb7d569d84426cd344b90f7 02-Feb-2010 Anders Carlsson <andersca@mac.com> Improve handling of emitting 'null' pointers to data members.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95066 91177308-0d34-0410-b5e6-96231b3b80d8
ointers-to-data-members.cpp
45147d0098a34c3705f74ca121b27d7736ac113a 02-Feb-2010 Anders Carlsson <andersca@mac.com> Move pointer to data member emission to CodeGenModule and use it in CGExprConstant. Fixes PR5674.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95063 91177308-0d34-0410-b5e6-96231b3b80d8
ointers-to-data-members.cpp
63b071f28ea936772634c176a34de2bf0301f79c 02-Feb-2010 Anders Carlsson <andersca@mac.com> Merge a test into pointers-to-data-members.cpp and convert it to FileCheck.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95061 91177308-0d34-0410-b5e6-96231b3b80d8
ember-pointers-zero-init.cpp
ointers-to-data-members.cpp
fe40456f0c0060097564cecaf7faada39185463a 02-Feb-2010 Anders Carlsson <andersca@mac.com> Rename a test.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95060 91177308-0d34-0410-b5e6-96231b3b80d8
ember-pointer-cast.cpp
ointers-to-data-members.cpp
905a100f3d03039f6f3e3aecf2996a05cef4a267 31-Jan-2010 Anders Carlsson <andersca@mac.com> When performing a derived-to-base cast that we know will not change the offset, we don't need to null check the input pointer. Fixes PR5965.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94942 91177308-0d34-0410-b5e6-96231b3b80d8
erived-to-base.cpp
yncast.cpp
a552ea76b0e4ce4ccdbb845667f0a12da6608c52 31-Jan-2010 Anders Carlsson <andersca@mac.com> When doing a base-to-derived cast we don't need to null check the derived value if the class offset is 0.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94939 91177308-0d34-0410-b5e6-96231b3b80d8
erived-to-base.cpp
de4b1d86bf48bc2a84bddf6b188f6da53eaea845 29-Jan-2010 Douglas Gregor <dgregor@apple.com> Fix reference binding of const lvalue references to bit-fields, which
requires a temporary. Previously, we were building an initialization
sequence that bound to the bit-field as if it were a real lvalue. Note
that we previously (and still) diagnose binding of non-const
references to bit-fields, as we should.

There's no real way to test that this code is correct, since reference
binding does not *currently* have any representation in the AST. This
fix should make it easier for that to happen, so I've verified this
fix with...

Added InitializationSequence::dump(), to print an initialization
sequence for debugging purposes.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94826 91177308-0d34-0410-b5e6-96231b3b80d8
eference-init.cpp
46287c7922b1c715b6ade87478e91409b19f0247 29-Jan-2010 Douglas Gregor <dgregor@apple.com> Name mangling for cast expressions, from Matthias Schiffer! Fixes PR5876.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94811 91177308-0d34-0410-b5e6-96231b3b80d8
angle-exprs.cpp
bfc008d5970b5bff0fd3ec15ecbd5b46f56fd9a1 27-Jan-2010 Anders Carlsson <andersca@mac.com> Update xcode project.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94654 91177308-0d34-0410-b5e6-96231b3b80d8
86_32-arguments.cpp
798345c69505226a33258177fa6e06275ef59595 27-Jan-2010 Anders Carlsson <andersca@mac.com> XFAIL this for now.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94653 91177308-0d34-0410-b5e6-96231b3b80d8
onversion-function.cpp
202e42b9bf622cd474191cbcdece658d5ef3fd8f 27-Jan-2010 Anders Carlsson <andersca@mac.com> Fix test/CodeGenCXX/default-destructor-synthesis.cpp not to rely on asm output.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94652 91177308-0d34-0410-b5e6-96231b3b80d8
efault-destructor-synthesis.cpp
577cacc0a3d4b6c2130c25bbe0c949623590fee3 27-Jan-2010 Anders Carlsson <andersca@mac.com> Fix attr.cpp by not checking the generated assembler output.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94651 91177308-0d34-0410-b5e6-96231b3b80d8
ttr.cpp
15189fb2fb2b3b3df678e94b036b77b994704655 26-Jan-2010 Mike Stump <mrs@apple.com> Refine the non-virtual this adjustments for thunks by using the offset
to the declaring class from the nearest virtual base class. WIP.

This fixes 40% of all the problems remaining in one of my testcases.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94592 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
3bb92693c3332c1e99870a4e45afff3892e1c6ae 26-Jan-2010 Anders Carlsson <andersca@mac.com> Use the right definition when emitting a global variable. Fixes PR5564.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94555 91177308-0d34-0410-b5e6-96231b3b80d8
tatic-data-member.cpp
d0c4792ca6bde9d60002760c10eb605ed2eebde8 26-Jan-2010 Anders Carlsson <andersca@mac.com> If a global variable has an initializer with side effects, it can never be deferred (even if it's in an anonymous namespace).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94525 91177308-0d34-0410-b5e6-96231b3b80d8
nonymous-namespaces.cpp
e70d391ed56839841e4ace189d22ae3ee789b044 26-Jan-2010 Anders Carlsson <andersca@mac.com> Fix another debug info crash with virtual bases.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94520 91177308-0d34-0410-b5e6-96231b3b80d8
ebug-info.cpp
4433f1cf8a2704395e509d020d8f79da4e273458 26-Jan-2010 Anders Carlsson <andersca@mac.com> Fix the test I broke, and also fix a crash when declaring a virtual destructor. Add debug info support for pure virtual member functions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94519 91177308-0d34-0410-b5e6-96231b3b80d8
R4890-debug-info-dtor.cpp
ebug-info.cpp
071c81065a282edba989bcf7c260b5838a59db50 26-Jan-2010 Anders Carlsson <andersca@mac.com> Make sure to always mark a global variable as not being constant if it has a C++ initializer.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94504 91177308-0d34-0410-b5e6-96231b3b80d8
tatic-init.cpp
d99a4d2407a9d10d97db2b9bebed6ef4238c9d7a 26-Jan-2010 Mike Stump <mrs@apple.com> Be sure to track the non-virtual part of the vcall offset in complex
multiple inheritance cases. WIP.

This fixes 20% of the outstanding problems found by the randomized
tester.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94499 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
cf0b9cc2f72d0bc9e23a423c90836cb092f213cd 26-Jan-2010 Mike Stump <mrs@apple.com> Fixup a missing vcall entry. WIP.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94478 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
f7c00eda7f21ef89cfec48fa90b743a403b89d4b 25-Jan-2010 Fariborz Jahanian <fjahanian@apple.com> Fix a code gen. bug involving compiling global references.
(fixes radar 7574896).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94434 91177308-0d34-0410-b5e6-96231b3b80d8
eference-init.cpp
31455256ae26cc7069111643ec4429ea564377da 24-Jan-2010 Sean Hunt <rideau3@gmail.com> Mangle static variables with an extra name to distinguish them from non-static variables in the same TU.
Fixes PR5966 for real this time; also reverts r92911, which had a incorrect fix.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94352 91177308-0d34-0410-b5e6-96231b3b80d8
onst-global-linkage.cpp
eferred-global-init.cpp
lobal-llvm-constant.cpp
angle.cpp
08e9e453f40aff95a59bd67db49b8f050765e1f0 24-Jan-2010 Anders Carlsson <andersca@mac.com> Fix a nasty bug where temporaries weren't marked as being conditional in some cases.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94341 91177308-0d34-0410-b5e6-96231b3b80d8
emp-order.cpp
46171917dc87caf0c7a741a7301f36db2e20b132 23-Jan-2010 Mike Stump <mrs@apple.com> Insulate these from changes to the default for -Wunreachable-code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94326 91177308-0d34-0410-b5e6-96231b3b80d8
hrow-expressions.cpp
56c75a794e8949ef8a338320f44dfe067d84a0e7 23-Jan-2010 Benjamin Kramer <benny.kra@googlemail.com> Adjust testcase for recent AsmPrinter changes, sigh.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94307 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
9f16f13639860cf90030bde70b7b29227552fffd 23-Jan-2010 Daniel Dunbar <daniel@zuster.org> Fix a FIXME, this test folds to a constant now.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94263 91177308-0d34-0410-b5e6-96231b3b80d8
emp-order.cpp
f9d3e9bb0052d2605d6b33d7de356d534457c9ac 22-Jan-2010 Mike Stump <mrs@apple.com> Fixup the rest of the testcases to grep the .ll file instead of the .s
file, and add FIXMEs to the remaining broken tests.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94238 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
e07b6e58d3a23803f537ba861298475c1eb65eab 22-Jan-2010 Mike Stump <mrs@apple.com> Convert more testcases to checking the .ll file instead of the .s file.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94229 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
6ebee078ec83dbeb61abd95967ec385a15f6af91 22-Jan-2010 Mike Stump <mrs@apple.com> Be sure to select primary bases among the nearly empties in preorder,
not just among the direct bases. Before we where missing nearly
empties that were bases of virtual base classes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94208 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
fc9f16c9e64fa145b454ce4e7b7ecdbb3aecdcf3 22-Jan-2010 Mike Stump <mrs@apple.com> Ensure we output all non-virtual base vtables. Fixes PR5890.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94163 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
5bb4d982230f36e6e374ea6ac83f31011a8d0a6b 21-Jan-2010 Benjamin Kramer <benny.kra@googlemail.com> Revert r94073, it fails in Release-Asserts builds.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94089 91177308-0d34-0410-b5e6-96231b3b80d8
yncast.cpp
21c57918f45ac0d192d2202e907969fda22fa612 21-Jan-2010 Benjamin Kramer <benny.kra@googlemail.com> Match branch labels with the trailing colon so we don't accidentally match something else.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94073 91177308-0d34-0410-b5e6-96231b3b80d8
yncast.cpp
f79df0524de44c2866b5506ca605e54a3cba8fa8 20-Jan-2010 Chris Lattner <sabre@nondot.org> allow this test to pass, even with the recent .s printer changes.
Have I ever mentioned that clang regtests should not be grepping .s files??


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93998 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
35aa62aacf2b644f2ff2f0bdfd89136323698a39 18-Jan-2010 Anders Carlsson <andersca@mac.com> More VTT builder fixes. With these fixes we now correctly handle the very complex VTT example from the Itanium ABI spec.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93725 91177308-0d34-0410-b5e6-96231b3b80d8
tt-layout.cpp
20314fffcf5d97bab58686cdcb914637b453a166 18-Jan-2010 Anders Carlsson <andersca@mac.com> Fix a bunch of VTT layout bugs, add simple tests for VTT layout.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93709 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
tt-layout.cpp
0d8bb8ee72bd74382274a4cff50466d8af5d0a0c 18-Jan-2010 Anders Carlsson <andersca@mac.com> Update virt.cpp for changes to the LLVM asm printer (?) This test should really be all LLVM IR...

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93707 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
3364e626147dd6fc5e33d12cda0eaaa50baf2206 16-Jan-2010 Eli Friedman <eli.friedman@gmail.com> Fix crash generating debug info for constructor for anonymous struct.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93601 91177308-0d34-0410-b5e6-96231b3b80d8
ebug-info.cpp
3005efeb131ccddcda9c332c83e49c32349e2aed 16-Jan-2010 Eli Friedman <eli.friedman@gmail.com> Make the AST explicitly represent the cast of the first operand of a
pointer-to-member operator.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93592 91177308-0d34-0410-b5e6-96231b3b80d8
ember-function-pointers.cpp
8a850baa41ea9015b949183667ad96a981f10b09 15-Jan-2010 Eli Friedman <eli.friedman@gmail.com> Fix a couple bugs in copy assignment operator synthesis.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93546 91177308-0d34-0410-b5e6-96231b3b80d8
opy-assign-synthesis-3.cpp
69456f12c5e5211adbfd7c3500d13436d4fec8da 15-Jan-2010 Mike Stump <mrs@apple.com> Fix Release-Asserts for the time being.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93493 91177308-0d34-0410-b5e6-96231b3b80d8
yncast.cpp
53b4810bad9385fbc65f045711585517f99fd31b 13-Jan-2010 Mike Stump <mrs@apple.com> Fix Release-Asserts.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93353 91177308-0d34-0410-b5e6-96231b3b80d8
h.cpp
f8843631377ba83d4ffbfb99e8cfb13e1d02b0cf 13-Jan-2010 Mike Stump <mrs@apple.com> Fix for Release-Assert.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93348 91177308-0d34-0410-b5e6-96231b3b80d8
elete-two-arg.cpp
edc95e7b3b4f3200d192b3ec7f19340a3476d209 13-Jan-2010 Mike Stump <mrs@apple.com> Fix for Release-Asserts.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93347 91177308-0d34-0410-b5e6-96231b3b80d8
ondition.cpp
1d9e0aa25d718a0f6546446e12c276e1802adf1f 13-Jan-2010 Mike Stump <mrs@apple.com> Fix Release-Asserts.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93346 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
5535c38a2fcface6c13bc8bbeca66882de2fa227 12-Jan-2010 Chandler Carruth <chandlerc@gmail.com> Fix the CodeGen half of PR5911 by changing reference initialization to
correctly look through arrays to see cv-qualifiers. Also enhances the routine
for doing this to preserve more type sugaring for diagnostics.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93252 91177308-0d34-0410-b5e6-96231b3b80d8
eference-init.cpp
197a338f57a9a44efd5f025ce3d462430d260016 09-Jan-2010 Chris Lattner <sabre@nondot.org> implement codegen support for preinc as an lvalue, PR5514.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93076 91177308-0d34-0410-b5e6-96231b3b80d8
xpr.cpp
6c6bda3b0b1d8adaac2ba3f4da7056e9f1eef52e 08-Jan-2010 Eli Friedman <eli.friedman@gmail.com> Fix for PR5967: Make const-marking for LLVM globals correct for cases requiring
run-time initialization, and emit run-time initializers aggresively to avoid
ordering issues with deferred globals.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92976 91177308-0d34-0410-b5e6-96231b3b80d8
ttr.cpp
efault-destructor-synthesis.cpp
eferred-global-init.cpp
table-linkage.cpp
a9efbf009468f36df0bb66551677339055757d51 07-Jan-2010 Nuno Lopes <nunoplopes@sapo.pt> fix PR5869: mangle static symbols like gcc does to make it easier to diff symbol tables

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92911 91177308-0d34-0410-b5e6-96231b3b80d8
angle.cpp
c84622ae02283985ae39a0ff2ae99b43d1eebc3f 07-Jan-2010 Douglas Gregor <dgregor@apple.com> Test linkage of typeinfo and typeinfo names for class templates

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92897 91177308-0d34-0410-b5e6-96231b3b80d8
table-linkage.cpp
1a78afbde2257d01bd38a36e094d3e3231a9b412 06-Jan-2010 Douglas Gregor <dgregor@apple.com> Revert my available_externally vtables experiment. It's breaking the LLVM-with-Clang build with linker errors that I have yet to investigate.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92822 91177308-0d34-0410-b5e6-96231b3b80d8
table-linkage.cpp
074a2cf3c51229b90b77e998463530c9b06470e6 05-Jan-2010 Douglas Gregor <dgregor@apple.com> Make use of available_externally linkage for vtables when the
non-inline key function of a class template instantiation, when no key
function is present, the class template instantiation itself was
instantiated with an explicit instantiation declaration (aka extern
template). I'm fairly certain that the C++0x specification gives us
this lattitude, although GCC doesn't take advantage of it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92779 91177308-0d34-0410-b5e6-96231b3b80d8
table-linkage.cpp
bd6d6197fcfc98356ea60e816365eb0648b69556 05-Jan-2010 Douglas Gregor <dgregor@apple.com> Improve key-function computation for templates. In particular:
- All classes can have a key function; templates don't change that.
non-template classes when computing the key function.
- We always mark all of the virtual member functions of class
template instantiations.
- The vtable for an instantiation of a class template has weak
linkage.

We could probably use available_externally linkage for vtables of
classes instantiated by explicit instantiation declarations (extern
templates), but GCC doesn't do this and I'm not 100% that the ABI
permits it.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92753 91177308-0d34-0410-b5e6-96231b3b80d8
table-key-function.cpp
table-linkage.cpp
7af4ec744e30d573482aef7a37089d0d32cc07ef 05-Jan-2010 Anders Carlsson <andersca@mac.com> When emitting member function pointers, use the canonical decl if the member function is virtual. Fixes PR5940.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92680 91177308-0d34-0410-b5e6-96231b3b80d8
ember-function-pointers.cpp
69c1d02e9bb94d10d7ccacaf94889c3d976ca8e7 03-Jan-2010 Eli Friedman <eli.friedman@gmail.com> Improve coverage for test.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92440 91177308-0d34-0410-b5e6-96231b3b80d8
opy-assign-synthesis-3.cpp
c997d4278d329e18891aac9698fb991b2d4622eb 02-Jan-2010 Anders Carlsson <andersca@mac.com> Correctly pass VTT parameters to constructors and destructors. The VTTs aren't yet used in the ctors/dtors, but that will follow.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92409 91177308-0d34-0410-b5e6-96231b3b80d8
onstructor-template.cpp
efault-constructor-default-argument.cpp
irtual-destructor-calls.cpp
e8f90389c43efbbe820574f674a98ac701bf48a2 31-Dec-2009 Anders Carlsson <andersca@mac.com> If the key function of a record is inline, then the RTTI data should have weak_odr linkage.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92371 91177308-0d34-0410-b5e6-96231b3b80d8
tti-linkage.cpp
bba4d023de3e8e9866920c40a5b200e861c5d12c 31-Dec-2009 Anders Carlsson <andersca@mac.com> Remove rtti.cpp, it's very fragile and has been marked XFAIL for a while now. Between rtti-layout.cpp and rtti-linkage.cpp, RTTI testing should be covered.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92361 91177308-0d34-0410-b5e6-96231b3b80d8
tti.cpp
0814809e5bc27cccd59b63e99ab1eb52042dc13c 31-Dec-2009 Anders Carlsson <andersca@mac.com> Fix a bunch of bugs with VMI RTTI building, and add a whole bunch of tests.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92319 91177308-0d34-0410-b5e6-96231b3b80d8
tti-layout.cpp
beb80194298097ef8680136d28e96a9326df90ac 30-Dec-2009 Anders Carlsson <andersca@mac.com> Add base class checks.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92286 91177308-0d34-0410-b5e6-96231b3b80d8
tti-layout.cpp
2c0769e3e4ba4ad375421f0a6c6b110ed19a6dfe 30-Dec-2009 Anders Carlsson <andersca@mac.com> Add more vtable tests.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92285 91177308-0d34-0410-b5e6-96231b3b80d8
tti-layout.cpp
f64531a17037faa9e0119e90961d2db77d06865d 30-Dec-2009 Anders Carlsson <andersca@mac.com> More RTTI cleanup, test that RTTI classes have the correct vtables.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92284 91177308-0d34-0410-b5e6-96231b3b80d8
tti-layout.cpp
tti-linkage.cpp
9c7b6bb952672b9d184a4426138579d55c370afc 29-Dec-2009 Anders Carlsson <andersca@mac.com> Handle enum types as well.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92276 91177308-0d34-0410-b5e6-96231b3b80d8
tti-linkage.cpp
09b6e6e8854cc4a824060101a9633082e55d7a33 29-Dec-2009 Anders Carlsson <andersca@mac.com> Fix function type RTTI linkage and add tests.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92266 91177308-0d34-0410-b5e6-96231b3b80d8
tti-linkage.cpp
3521d01aed2f55b66c7ce2ad47541a9974079699 28-Dec-2009 Sam Weinig <sam.weinig@gmail.com> Fix for PR5871. Make __PRETTY_FUNCTION__ work for member functions defined in a class local to a function.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92200 91177308-0d34-0410-b5e6-96231b3b80d8
redefined-expr.cpp
190ccccdc481602e518a06d699156b1d203d09db 27-Dec-2009 Eli Friedman <eli.friedman@gmail.com> Fix runline.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92174 91177308-0d34-0410-b5e6-96231b3b80d8
onst-base-cast.cpp
09a8a0e6ec1252cad52666e9dbb21002b9c80f38 27-Dec-2009 Eli Friedman <eli.friedman@gmail.com> Fix PointerExprEvaluator::VisitCastExpr so it doesn't misfold C++ casts which
it doesn't know how to fold, like derived-to-base casts.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92173 91177308-0d34-0410-b5e6-96231b3b80d8
onst-base-cast.cpp
4eadcc569223135e13353c9381b448986e3f7053 27-Dec-2009 Sam Weinig <sam.weinig@gmail.com> Fix for PR5872. Add static specifier and const/volatile qualifiers to member functions in __PRETTY_FUNCTION__ predefined expressions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92171 91177308-0d34-0410-b5e6-96231b3b80d8
redefined-expr.cpp
cb48f8a60ad26b56d299cca9a57f8ea683d8a909 25-Dec-2009 Eli Friedman <eli.friedman@gmail.com> Make copy constructor elimination work in more cases; the case in question
here affects clang-on-clang.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92151 91177308-0d34-0410-b5e6-96231b3b80d8
opy-constructor-elim-2.cpp
6be112049b24ffaa8508646aa695834b4b5ca2b2 25-Dec-2009 Sam Weinig <sam.weinig@gmail.com> Fix for PR5844. Be explicit about anonymous struct/class/union/namespaces in __PRETTY_FUNCTION__ predefined expression.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92149 91177308-0d34-0410-b5e6-96231b3b80d8
redefined-expr.cpp
5132655e4296b780672e9a96b46a740135073534 24-Dec-2009 Douglas Gregor <dgregor@apple.com> When transforming CXXExprWithTemporaries and CXXBindTemporaryExpr
expressions (e.g., for template instantiation), just transform the
subexpressions and return those, since the temporary-related nodes
will be implicitly regenerated. Fixes PR5867, but I said that
before...


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92135 91177308-0d34-0410-b5e6-96231b3b80d8
emporaries.cpp
65552c424750aaa58533ca385a90b77c033cc635 24-Dec-2009 Douglas Gregor <dgregor@apple.com> InitializationSequence handles binding to temporaries, so that
argument-passing doesn't have to. Fixes PR5867, where we were binding
a temporary twice in the AST and, therefore, calling its destructor
twice.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92131 91177308-0d34-0410-b5e6-96231b3b80d8
emporaries.cpp
f28c687866aed1ed7b4b9ddf44a51673861236cf 23-Dec-2009 Anders Carlsson <andersca@mac.com> Mangle block pointer types. Fixes PR5858.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92069 91177308-0d34-0410-b5e6-96231b3b80d8
angle.cpp
154fe9812faddcd94568a64aee5f3cb0d47003d9 23-Dec-2009 Douglas Gregor <dgregor@apple.com> There is no such thing as typeinfo for a cv-qualified type. Assert
that this is true when mangling, then fix up the various places in
Sema and/or CodeGen that need to remove qualifiers. Addresses a
linking issue when building LLVM with Clang.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92064 91177308-0d34-0410-b5e6-96231b3b80d8
ry-catch.cpp
f57f207a0fcf5fb7883597b57dd03faf952318dd 23-Dec-2009 Douglas Gregor <dgregor@apple.com> Remove cv-qualifiers from the argument to typeid

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92041 91177308-0d34-0410-b5e6-96231b3b80d8
tti-linkage.cpp
9e85c743a4cefff7386764bba3f3f2cdbe5c06e2 23-Dec-2009 Anders Carlsson <andersca@mac.com> Mangle template template parameters. Fixes PR5861.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92030 91177308-0d34-0410-b5e6-96231b3b80d8
angle.cpp
f2a5539ea74bc4c4637851395f6bf6f78689f4e6 22-Dec-2009 Douglas Gregor <dgregor@apple.com> Make sure that reinterpret_cast gets a CastKind on all successful
paths. Fixes "cannot compile this unexpected cast lvalue yet" error in
llvm/lib/Analysis/IPA/GlobalsModRef.cpp.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91932 91177308-0d34-0410-b5e6-96231b3b80d8
asts.cpp
8257d411a759b91921681c3b7f79e50e0d9252db 22-Dec-2009 Anders Carlsson <andersca@mac.com> Make sure that we mangle overloaded operators that are member functions correctly, giving them the correct arity.

With this seemingly insignificant fix, we are now able to build and link clang using clang itself! (LLVM still has to be built with gcc for the time being).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91893 91177308-0d34-0410-b5e6-96231b3b80d8
angle.cpp
ember-functions.cpp
4971ff8eea7800bd2a73652add6dcf7a4adf5f74 22-Dec-2009 Daniel Dunbar <daniel@zuster.org> x86_64: Structures with no fields but which have padding should be classified as
integer.
- This is consistent, but may not be correct. I will revisit x86_64 ABI handling for C++ as a whole at some point.
- PR5831.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91874 91177308-0d34-0410-b5e6-96231b3b80d8
ember-functions.cpp
86_64-arguments.cpp
0d6d12b2db47ff34d6cd30917992a8c8ad97aac2 22-Dec-2009 Douglas Gregor <dgregor@apple.com> When converting from a type to itself or one of its base classes via a
constructor call, the conversion is only a standard conversion
sequence if that constructor is a copy constructor. This fixes PR5834
in a semi-lame way, because the "real" fix will be to move over to
InitializationSequence. That will happen "soonish", but not now.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91861 91177308-0d34-0410-b5e6-96231b3b80d8
R5834-constructor-conversion.cpp
610b0d94d71810773378be4f39922a56b1202a83 21-Dec-2009 Anders Carlsson <andersca@mac.com> Add tests for structs inside anonymous namespaces.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91806 91177308-0d34-0410-b5e6-96231b3b80d8
tti-linkage.cpp
625c1ae781e3b8973bc9ec520268fe3301e4caf5 21-Dec-2009 Anders Carlsson <andersca@mac.com> Incomplete structs should also have internal linkage.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91805 91177308-0d34-0410-b5e6-96231b3b80d8
tti-linkage.cpp
17fa6f971c1912c77aa10bdac4b7991b5e1646e2 21-Dec-2009 Anders Carlsson <andersca@mac.com> Correcly handle pointers to member pointer types where the class or the pointee is incomplete.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91804 91177308-0d34-0410-b5e6-96231b3b80d8
tti-layout.cpp
tti-linkage.cpp
8d1451535524cb21a6f8347bad9fed371b9d9ecb 20-Dec-2009 Anders Carlsson <andersca@mac.com> Rework the way pointer types are handled by the RTTI builder. We now get the right linkage for indirect pointers to incomplete structs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91799 91177308-0d34-0410-b5e6-96231b3b80d8
tti-layout.cpp
tti-linkage.cpp
7abfbdbc97ad8e7f340789f751df1e32b10118b4 19-Dec-2009 Douglas Gregor <dgregor@apple.com> Switch more of Sema::CheckInitializerTypes over to
InitializationSequence. Specially, switch initialization of a C++
class type (either copy- or direct-initialization).

Also, make sure that we create an elidable copy-construction when
performing copy initialization of a C++ class variable. Fixes PR5826.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91750 91177308-0d34-0410-b5e6-96231b3b80d8
onstructor-init.cpp
29f1a6070ac35fcbea9241c843df7f3f7c5c3228 19-Dec-2009 Anders Carlsson <andersca@mac.com> Correctly initialize the PrimaryBaseInfo if a base is null. Fixes PR5832.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91748 91177308-0d34-0410-b5e6-96231b3b80d8
irtual-function-calls.cpp
27a9b72bf1e4fe9f1d3ee9a5db1b9d614b0ee01c 19-Dec-2009 Eli Friedman <eli.friedman@gmail.com> Fix for PR5524: make reference binding in default argument work correctly.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91733 91177308-0d34-0410-b5e6-96231b3b80d8
eference-bind-default-argument.cpp
c2c0d562bb1d03501433b450bb97df7812598d4c 19-Dec-2009 Eli Friedman <eli.friedman@gmail.com> Test for r91724.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91730 91177308-0d34-0410-b5e6-96231b3b80d8
irtual-base-ctor.cpp
6f0e485a5cc120c5b30f5a5d11b2784de0c9c767 18-Dec-2009 Anders Carlsson <andersca@mac.com> Fix regression I introduced when dynamic_cast-ing to a reference type.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91687 91177308-0d34-0410-b5e6-96231b3b80d8
ynamic-cast.cpp
0ddb6f7506d3bffe4e526f877d3ef48e8d942b1d 18-Dec-2009 Anders Carlsson <andersca@mac.com> It's perfectly fine to see UserDefinedConversion casts when emitting scalar expressions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91686 91177308-0d34-0410-b5e6-96231b3b80d8
onversion-function.cpp
18ef5e28a9a2677f8b1dce1fb2638d66e0a1621f 18-Dec-2009 Douglas Gregor <dgregor@apple.com> Switch the initialization required by return statements over to the
new InitializationSequence. This fixes some bugs (e.g., PR5808),
changed some diagnostics, and caused more churn than expected. What's
new:

- InitializationSequence now has a "C conversion sequence" category
and step kind, which falls back to
- Changed the diagnostics for returns to always have the result type
of the function first and the type of the expression second.
CheckSingleAssignmentConstraints to peform checking in C.
- Improved ASTs for initialization of return values. The ASTs now
capture all of the temporaries we need to create, but
intentionally do not bind the tempoary that is actually returned,
so that it won't get destroyed twice.
- Make sure to perform an (elidable!) copy of the class object that
is returned from a class.
- Fix copy elision in CodeGen to properly see through the
subexpressions that occur with elidable copies.
- Give "new" its own entity kind; as with return values and thrown
objects, we don't bind the expression so we don't call a
destructor for it.

Note that, with this patch, I've broken returning move-only types in
C++0x. We'll fix it later, when we tackle NRVO.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91669 91177308-0d34-0410-b5e6-96231b3b80d8
emporaries.cpp
3b29901b1d106789e04ce8c4cdfebe72b251db4b 18-Dec-2009 Sean Callanan <scallanan@apple.com> Testcase fixes to reflect instruction table changes in the LLVM backend
(http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20091214/092780.html)
The instruction fixes were checked and approved by Chris Lattner, but
these testcase fixes are mine; please yell at me if there are any
problems with either.

* PR5050-constructor-conversion.cpp
* array-construction.cpp
* constructor-conversion.cpp
* cast-conversion.cpp
* constructor-default-arg.cpp
* derived-to-base-conv.cpp
* ptr-to-member-function.cpp
* call-arg-zero-temp.cpp
* default-destructor-synthesis.cpp
* global-array-destruction.cpp
* array-operator-delete-call.cpp
* decl-ref-init.cpp
* default-constructor-for-members.cpp
* convert-to-fptr.cpp
* constructor-for-array-members.cpp
* conversion-function.cpp
* objc-read-weak-byref.m
Fixed testcase to reflect call qualifier


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91640 91177308-0d34-0410-b5e6-96231b3b80d8
R5050-constructor-conversion.cpp
rray-construction.cpp
rray-operator-delete-call.cpp
all-arg-zero-temp.cpp
ast-conversion.cpp
onstructor-conversion.cpp
onstructor-default-arg.cpp
onstructor-for-array-members.cpp
onversion-function.cpp
onvert-to-fptr.cpp
ecl-ref-init.cpp
efault-constructor-for-members.cpp
efault-destructor-synthesis.cpp
erived-to-base-conv.cpp
lobal-array-destruction.cpp
tr-to-member-function.cpp
b23f20d72021548c812ddc81b91bf7ad78fe708c 17-Dec-2009 Nuno Lopes <nunoplopes@sapo.pt> revert part of my last patch, and mark only the c++ global new operator as noalias. the rest will be infered by llvm optz

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91600 91177308-0d34-0410-b5e6-96231b3b80d8
perator-new.cpp
e8820a888a5d19d2c687c222cc1d5e415aedd2a7 17-Dec-2009 Anders Carlsson <andersca@mac.com> Attempt to fix rtti-layout.cpp on Linux.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91581 91177308-0d34-0410-b5e6-96231b3b80d8
tti-layout.cpp
0a4f18696ccda75a00012b941430414954e678b9 17-Dec-2009 Anders Carlsson <andersca@mac.com> Add a (currently failing) RTTI layout test.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91580 91177308-0d34-0410-b5e6-96231b3b80d8
tti-layout.cpp
7dd4490e47a5348d3f5c6e05946f84666eceaec7 16-Dec-2009 Douglas Gregor <dgregor@apple.com> Fix test case to unbreak testing

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91551 91177308-0d34-0410-b5e6-96231b3b80d8
alue-init.cpp
16006c901315fa12a108b4e571f187f4b676e426 16-Dec-2009 Douglas Gregor <dgregor@apple.com> When value-initializing a class with no user-defined constructors but
with a non-trivial default constructor, zero-initialize the storage
and then call the default constructor. Fixes PR5800.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91548 91177308-0d34-0410-b5e6-96231b3b80d8
alue-init.cpp
4b3e5be334c93c3f48af2a49c0ea7cd9bae2a0e5 16-Dec-2009 Anders Carlsson <andersca@mac.com> Baby steps towards fixing PR5589. If a class needs a vtable pointer, add one.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91545 91177308-0d34-0410-b5e6-96231b3b80d8
lass-layout.cpp
irt.cpp
fc2844846e91398205fddc71196fe9dda04e105f 16-Dec-2009 Nuno Lopes <nunoplopes@sapo.pt> implement PR5654: add -fassume-sane-operator-new, which is enabled by default, and adds the malloc attribute to the global function new() and to the overloaded new operators.

feel free to chage the name to this lengthy argument

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91543 91177308-0d34-0410-b5e6-96231b3b80d8
ew.cpp
perator-new.cpp
tatic-init.cpp
e8e4a1c0bf2e3dd26dd0721a102307bbb589e96a 16-Dec-2009 Anders Carlsson <andersca@mac.com> Use GetAddrOfRTTI everywhere and remove GenerateRTTI and GenerateRTTIRef. With this change, we can now compile and link TableGen.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91520 91177308-0d34-0410-b5e6-96231b3b80d8
yncast.cpp
30311fa6b0735b9cb73b01e25bf9652a4b9b0c53 16-Dec-2009 Anders Carlsson <andersca@mac.com> Handle ImplicitValueInitExpr in AggExprEmitter.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91519 91177308-0d34-0410-b5e6-96231b3b80d8
ew.cpp
58040a5ee50bcaebbcbebe47fbdc5fd70be90e83 16-Dec-2009 Anders Carlsson <andersca@mac.com> Mangle CXXOperatorCallExprs, fixes PR5796.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91507 91177308-0d34-0410-b5e6-96231b3b80d8
angle.cpp
80737ad5e0a67d6e3dd0a0ba48446344215a5fd5 15-Dec-2009 Daniel Dunbar <daniel@zuster.org> Update tests to use %clang instead of 'clang', and forcibly disable use of '
clang ' or ' clang -cc1 ' or ' clang-cc ' in test lines (by substituting them to
garbage).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91460 91177308-0d34-0410-b5e6-96231b3b80d8
onstructor-convert.cpp
a5728872c7702ddd09537c95bc3cbd20e1f2fb09 15-Dec-2009 Daniel Dunbar <daniel@zuster.org> Update tests to use %clang_cc1 instead of 'clang-cc' or 'clang -cc1'.
- This is designed to make it obvious that %clang_cc1 is a "test variable"
which is substituted. It is '%clang_cc1' instead of '%clang -cc1' because it
can be useful to redefine what gets run as 'clang -cc1' (for example, to set
a default target).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91446 91177308-0d34-0410-b5e6-96231b3b80d8
R4827-cast.cpp
R4890-debug-info-dtor.cpp
R4983-constructor-conversion.cpp
R5050-constructor-conversion.cpp
R5093-static-member-function.cpp
_null.cpp
ddress-of-fntemplate.cpp
nonymous-namespaces.cpp
nonymous-union-member-initializer.cpp
rray-construction.cpp
rray-operator-delete-call.cpp
rray-pointer-decay.cpp
rray-value-initialize.cpp
ssign-operator.cpp
ttr.cpp
all-arg-zero-temp.cpp
ast-conversion.cpp
asts.cpp
lass-layout.cpp
ondition.cpp
onditional-expr-lvalue.cpp
onditional-temporaries.cpp
onst-global-linkage.cpp
onst-init.cpp
onstructor-conversion.cpp
onstructor-default-arg.cpp
onstructor-for-array-members.cpp
onstructor-init-reference.cpp
onstructor-init.cpp
onstructor-template.cpp
onversion-function.cpp
onversion-operator-base.cpp
onvert-to-fptr.cpp
opy-assign-synthesis-1.cpp
opy-assign-synthesis-2.cpp
opy-assign-synthesis-3.cpp
opy-assign-synthesis.cpp
opy-constructor-elim.cpp
opy-constructor-synthesis-2.cpp
opy-constructor-synthesis.cpp
ebug-info.cpp
ecl-ref-init.cpp
efault-arg-temps.cpp
efault-arguments.cpp
efault-constructor-default-argument.cpp
efault-constructor-for-members.cpp
efault-constructor-template-member.cpp
efault-destructor-synthesis.cpp
elete-two-arg.cpp
elete.cpp
erived-to-base-conv.cpp
erived-to-base.cpp
estructor-calls.cpp
estructors.cpp
evirtualize-virtual-function-calls.cpp
yncast.cpp
h.cpp
lide-call-reference.cpp
mpty-union.cpp
num.cpp
val-recursive-constant.cpp
xceptions.cpp
xplicit-instantiation.cpp
xpr.cpp
xtern-c.cpp
unction-template-explicit-specialization.cpp
unction-template-specialization.cpp
lobal-array-destruction.cpp
lobal-init.cpp
lobal-llvm-constant.cpp
mplicit-instantiation-1.cpp
nit-incomplete-type.cpp
nline-functions.cpp
nstantiate-init-list.cpp
ey-function-vtable.cpp
angle-extern-local.cpp
angle-extreme.cpp
angle-subst-std.cpp
angle-subst.cpp
angle-system-header.cpp
angle-template.cpp
angle-unnamed.cpp
angle.cpp
ember-call-parens.cpp
ember-expressions.cpp
ember-function-pointers.cpp
ember-functions.cpp
ember-init-struct.cpp
ember-init-union.cpp
ember-pointer-cast.cpp
ember-pointer-type-convert.cpp
ember-pointers-zero-init.cpp
ember-templates.cpp
amespace-aliases.cpp
ested-base-member-access.cpp
ew-operator-phi.cpp
ew-with-default-arg.cpp
ew.cpp
ullptr.cpp
verload-binop-implicitconvert.cpp
redefined-expr-sizeof.cpp
redefined-expr.cpp
tr-to-datamember.cpp
tr-to-member-function.cpp
eference-field.cpp
eference-init.cpp
eferences.cpp
einterpret-cast.cpp
tti-linkage.cpp
tti.cpp
tatic-assert.cpp
tatic-data-member.cpp
tatic-init-1.cpp
tatic-init-2.cpp
tatic-init.cpp
tatic-member-variable-explicit-specialization.cpp
emp-order.cpp
emplate-anonymous-union-member-initializer.cpp
emplate-linkage.cpp
emporaries.cpp
hrow-expressions.cpp
rivial-constructor-init.cpp
nary-type-trait.cpp
ararg-conversion-ctor.cpp
irt-call-offsets.cpp
irt-canonical-decl.cpp
irt-dtor-gen.cpp
irt-dtor-key.cpp
irt-template-vtable.cpp
irt-thunk-reference.cpp
irt.cpp
irtual-base-cast.cpp
irtual-base-destructor-call.cpp
irtual-bases.cpp
irtual-destructor-calls.cpp
irtual-destructor-synthesis.cpp
irtual-function-calls.cpp
irtual-functions-incomplete-types.cpp
irtual-implicit-copy-assignment.cpp
irtual-inherited-destructor.cpp
irtual-operator-call.cpp
irtual-pseudo-destructor-call.cpp
table-cast-crash.cpp
table-key-function.cpp
table-linkage.cpp
86_64-arguments.cpp
ea5ae3170d8022c2007295ec794bdaf63f0273a1 15-Dec-2009 Eli Friedman <eli.friedman@gmail.com> Fix a small bug in ComputeMethodVtableIndices.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91411 91177308-0d34-0410-b5e6-96231b3b80d8
irt-call-offsets.cpp
34531470e6f6e394de7fd47d69917db280fee206 15-Dec-2009 Eli Friedman <eli.friedman@gmail.com> Really fix this test.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91409 91177308-0d34-0410-b5e6-96231b3b80d8
onstructor-template.cpp
555f610d406e2510f83a4a488ec93827819d2727 15-Dec-2009 Eli Friedman <eli.friedman@gmail.com> Fix test broken by my last commit.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91396 91177308-0d34-0410-b5e6-96231b3b80d8
onstructor-template.cpp
4411d2e674b0119f682ac472c3a377f14fa9fa30 14-Dec-2009 Douglas Gregor <dgregor@apple.com> When rebuilding CXXConstructExprs after a transformation, use
CompleteConstructorCall to perform type-checking.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91279 91177308-0d34-0410-b5e6-96231b3b80d8
onstructor-convert.cpp
e170ba7846bc4cae4b376b52eb4448645c141e59 14-Dec-2009 Anders Carlsson <andersca@mac.com> Mangle unary, binary and ternary expressions correctly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91257 91177308-0d34-0410-b5e6-96231b3b80d8
angle.cpp
20e098b7e7fda6bed1d67441b56cce77cd3aa918 11-Dec-2009 Eli Friedman <eli.friedman@gmail.com> Fix for PR5714: make sure globals that will be modified aren't marked const.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91156 91177308-0d34-0410-b5e6-96231b3b80d8
lobal-llvm-constant.cpp
470fb73d4e09e1dfe62cb545d7fe0e567ac6e8d6 11-Dec-2009 Eli Friedman <eli.friedman@gmail.com> Fix linkage of type info and vtable for classes without linkage.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91152 91177308-0d34-0410-b5e6-96231b3b80d8
table-linkage.cpp
6f9f25dfc7bf9cc1ab1282d6d7e9cf7916d8a09c 11-Dec-2009 Eli Friedman <eli.friedman@gmail.com> Make sure mangling doesn't crash in another case. Add some more tests.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91149 91177308-0d34-0410-b5e6-96231b3b80d8
angle-unnamed.cpp
angle.cpp
ecb7e932e9274a0628477d17931a06b3b109024a 11-Dec-2009 Eli Friedman <eli.friedman@gmail.com> Fix for PR5706: let mangleName deal with mangling names without identifiers
correctly.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91136 91177308-0d34-0410-b5e6-96231b3b80d8
angle.cpp
22ed438eafdc9533b6abacb191ec82c192604f0d 11-Dec-2009 Anders Carlsson <andersca@mac.com> XFAIL this for now, fixing linkage bugs causes the order of globals to change. Will fix later today.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91130 91177308-0d34-0410-b5e6-96231b3b80d8
tti.cpp
4e7135613a558020f003972b2a5ae5f8d5306508 11-Dec-2009 Anders Carlsson <andersca@mac.com> Use GetAddrOfRTTI when getting the RTTI pointer for a base class.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91127 91177308-0d34-0410-b5e6-96231b3b80d8
tti-linkage.cpp
3a1737030e3c8d209987325c61dacb8e4a65123b 11-Dec-2009 Eli Friedman <eli.friedman@gmail.com> Move the code for converting a member pointer to a bool so that it is usable
for logical not.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91112 91177308-0d34-0410-b5e6-96231b3b80d8
ember-function-pointers.cpp
b81c786de58ce484230dc04f9a7c78bc48990106 11-Dec-2009 Eli Friedman <eli.friedman@gmail.com> Fix for PR5718: implement equality comparisons for member function pointers.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91108 91177308-0d34-0410-b5e6-96231b3b80d8
ember-function-pointers.cpp
31b7f52d8c8d459e80d2a72176cc7fcc4b7d8d38 11-Dec-2009 Anders Carlsson <andersca@mac.com> Improve linkage of RTTI data structures. Introduce CodeGenModule::GetAddrOfRTTI which figures out the right linkage of the RTTI information for the given type and whether it should be defined or not. I will migrate clients over to GetAddrOfRTTI in subsequent commits (with tests).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91098 91177308-0d34-0410-b5e6-96231b3b80d8
tti.cpp
irt-dtor-key.cpp
table-linkage.cpp
03981014e4f0c3b4e935872dda96a28c2f1874ea 11-Dec-2009 Eli Friedman <eli.friedman@gmail.com> Fix a recent regression from the initialization changes.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91097 91177308-0d34-0410-b5e6-96231b3b80d8
eference-init.cpp
8370c58b9295b32bee50443fe3ac43a47a2047e8 11-Dec-2009 Anders Carlsson <andersca@mac.com> When an exception needs to be freed by calling __cxa_exception_free, make sure to stash away the exception pointer somewhere.

This fixes an "Instruction does not dominate all uses!" verification error when compiling TableGen.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91084 91177308-0d34-0410-b5e6-96231b3b80d8
h.cpp
xceptions.cpp
9dfebdcdcdcc0cad8a3ef205d33b84f33233072b 10-Dec-2009 Eli Friedman <eli.friedman@gmail.com> Support unary type traits in a scalar context. Not that I've actually seen
this construct, but might as well for completeness.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91071 91177308-0d34-0410-b5e6-96231b3b80d8
nary-type-trait.cpp
29a7f3342c3c6dd15d914c61ae22246c36d51ce7 10-Dec-2009 Eli Friedman <eli.friedman@gmail.com> Clean up enum constants so that they're finally sane. Fixes PR3173 and a
recently introduced crash.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91070 91177308-0d34-0410-b5e6-96231b3b80d8
num.cpp
548e60efea9a1d2c31679e11e9ff0d2f19b96694 10-Dec-2009 Anders Carlsson <andersca@mac.com> Make sure that explicitly instantiated functions get the right linkage.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91069 91177308-0d34-0410-b5e6-96231b3b80d8
emplate-linkage.cpp
2ce79bc4fd6818abfcdaffcad136994905e62fea 10-Dec-2009 Eli Friedman <eli.friedman@gmail.com> Test for r90950.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91043 91177308-0d34-0410-b5e6-96231b3b80d8
onversion-operator-base.cpp
c7974ca5312eefd00b9e927203def9fbd8c1d169 10-Dec-2009 Anders Carlsson <andersca@mac.com> Handle emitting static variables that have reference type.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91027 91177308-0d34-0410-b5e6-96231b3b80d8
tatic-init.cpp
76958099828bac6ebd45abef9f76934b3e99e397 10-Dec-2009 Mike Stump <mrs@apple.com> Add terminate handler for copy constructors for thrown objects. WIP.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90994 91177308-0d34-0410-b5e6-96231b3b80d8
h.cpp
20093b4bf698f292c664676987541d5103b65b15 10-Dec-2009 Douglas Gregor <dgregor@apple.com> Reimplement reference initialization (C++ [dcl.init.ref]) using the
new notion of an "initialization sequence", which encapsulates the
computation of the initialization sequence along with diagnostic
information and the capability to turn the computed sequence into an
expression. At present, I've only switched one CheckReferenceInit
callers over to this new mechanism; more will follow.

Aside from (hopefully) being much more true to the standard, the
diagnostics provided by this reference-initialization code are a bit
better than before. Some examples:

p5-var.cpp:54:12: error: non-const lvalue reference to type 'struct
Derived'
cannot bind to a value of unrelated type 'struct Base'
Derived &dr2 = b; // expected-error{{non-const lvalue reference to
...
^ ~
p5-var.cpp:55:9: error: binding of reference to type 'struct Base' to
a value of
type 'struct Base const' drops qualifiers
Base &br3 = bc; // expected-error{{drops qualifiers}}
^ ~~

p5-var.cpp:57:15: error: ambiguous conversion from derived class
'struct Diamond' to base class 'struct Base':
struct Diamond -> struct Derived -> struct Base
struct Diamond -> struct Derived2 -> struct Base
Base &br5 = diamond; // expected-error{{ambiguous conversion from
...
^~~~~~~
p5-var.cpp:59:9: error: non-const lvalue reference to type 'long'
cannot bind to
a value of unrelated type 'int'
long &lr = i; // expected-error{{non-const lvalue reference to type
...
^ ~

p5-var.cpp:74:9: error: non-const lvalue reference to type 'struct
Base' cannot
bind to a temporary of type 'struct Base'
Base &br1 = Base(); // expected-error{{non-const lvalue reference to
...
^ ~~~~~~

p5-var.cpp:102:9: error: non-const reference cannot bind to bit-field
'i'
int & ir1 = (ib.i); // expected-error{{non-const reference cannot
...
^ ~~~~~~
p5-var.cpp:98:7: note: bit-field is declared here
int i : 17; // expected-note{{bit-field is declared here}}
^






git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90992 91177308-0d34-0410-b5e6-96231b3b80d8
eferences.cpp
77a259c6dbf582949af8a243b472c0c7faa373a6 08-Dec-2009 Eli Friedman <eli.friedman@gmail.com> Fix for PR5707: make sure implicit copy constructors initialize the vtable
pointer.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90840 91177308-0d34-0410-b5e6-96231b3b80d8
opy-constructor-synthesis-2.cpp
6bc20135a2c46f97da15994095616a305be35c6a 08-Dec-2009 Eli Friedman <eli.friedman@gmail.com> Fix for PR5710: make sure to put function template specializations into the
DeclContext, so they don't completely disappear from the AST.

I don't particularly like this fix, but I don't see any obviously better way
to deal with it, and I think it's pretty clearly an improvement; comments
welcome.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90835 91177308-0d34-0410-b5e6-96231b3b80d8
unction-template-explicit-specialization.cpp
0259ce2b4a94b7d1b28a084b76650cbf448e3eb8 08-Dec-2009 Eli Friedman <eli.friedman@gmail.com> Slight tweak to vtable linkage.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90832 91177308-0d34-0410-b5e6-96231b3b80d8
ey-function-vtable.cpp
61eab8872168af6eb1e0047a82901096cf145e27 08-Dec-2009 Eli Friedman <eli.friedman@gmail.com> Misc key function fixes.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90831 91177308-0d34-0410-b5e6-96231b3b80d8
ey-function-vtable.cpp
c4451dbb4fd3858a3ee7354fcca4ab452192ddb4 08-Dec-2009 Eli Friedman <eli.friedman@gmail.com> Fix some direct checks of expressions which might be surrounded by parentheses.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90825 91177308-0d34-0410-b5e6-96231b3b80d8
ember-call-parens.cpp
ebc3317c66638a05a089abb348877b9b823f52b0 08-Dec-2009 Eli Friedman <eli.friedman@gmail.com> Make copy assignment operator synthesis not explode for classes with complex
or non-record aggregate members.

It might be worth spending some time to optimize this code (and the parallel
code for copy constructors) to memcpy in larger chunks, rather than copying
one member at a time. Not sure exactly how beneficial that would be, but
it seems like could help for large classes with, for example, a vtable pointer
forcing the generation of a copy constructor.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90823 91177308-0d34-0410-b5e6-96231b3b80d8
opy-assign-synthesis-3.cpp
c2456824a106455bae5d738fe65d80b14a6804c4 08-Dec-2009 Anders Carlsson <andersca@mac.com> No need to add tail padding if the resulting LLVM struct type will have the same size as the final record size.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90820 91177308-0d34-0410-b5e6-96231b3b80d8
lass-layout.cpp
48daf59c9f52856ca80074f1f5a30aa29c235726 07-Dec-2009 Eli Friedman <eli.friedman@gmail.com> Correctly handle conditional operators involving throw.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90800 91177308-0d34-0410-b5e6-96231b3b80d8
hrow-expressions.cpp
91f8860de5f4280607e74c9d653751cd3f891ca7 07-Dec-2009 Anders Carlsson <andersca@mac.com> Mangle basic_ostream and basic_iostream specializations.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90794 91177308-0d34-0410-b5e6-96231b3b80d8
angle-subst-std.cpp
d58987c67d0fa02a71af98a9fa66ffd73c1501ed 07-Dec-2009 Anders Carlsson <andersca@mac.com> It's OK to try to emit a vtable definition more than once. Fixes PR5697.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90751 91177308-0d34-0410-b5e6-96231b3b80d8
table-key-function.cpp
721e77db41cd9a07d2e1c9fdf08a4bd2eee1bc98 07-Dec-2009 Eli Friedman <eli.friedman@gmail.com> Move RequireCompleteType requirement for fields early into ActOnField so that
subsequent code which depends on a complete type does the right thing.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90727 91177308-0d34-0410-b5e6-96231b3b80d8
efault-constructor-template-member.cpp
3a1ce1ed0f5686384e712837bad28c576622e442 07-Dec-2009 Sam Weinig <sam.weinig@gmail.com> Don't print a void return type for C++ constructors and destructors when generating a predefined expr for them.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90725 91177308-0d34-0410-b5e6-96231b3b80d8
redefined-expr.cpp
72649ed78a25365d003b5218cae7b332c418800e 06-Dec-2009 Eli Friedman <eli.friedman@gmail.com> Work-in-progess rewrite of thunks: move thunk generation outside of vtable
generation, and make sure we generate thunks when the function is defined
rather than when the vtable is defined.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90722 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
20f12a20ba9cfa6f8d53c8304e24f50903c45184 06-Dec-2009 Anders Carlsson <andersca@mac.com> Add rudimentary support for member pointers to CGDebugInfo.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90711 91177308-0d34-0410-b5e6-96231b3b80d8
ebug-info.cpp
0336843eb0d04f2d4423189c26ec55b7654b1dec 06-Dec-2009 Eli Friedman <eli.friedman@gmail.com> Fix a slight oversight in computing whether a copy constructor is elidable.
Fixes PR5695.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90702 91177308-0d34-0410-b5e6-96231b3b80d8
lide-call-reference.cpp
5794c9714a7d8c7eb8003d3e2616ab389ba9e45b 06-Dec-2009 Anders Carlsson <andersca@mac.com> More linkage improvements.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90687 91177308-0d34-0410-b5e6-96231b3b80d8
table-linkage.cpp
891c8b739917ec4d171a62ceaefc640115089e7d 05-Dec-2009 Anders Carlsson <andersca@mac.com> If a class does not have a key function, its linkage should be weak_odr.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90680 91177308-0d34-0410-b5e6-96231b3b80d8
irt-template-vtable.cpp
table-linkage.cpp
152d4dce59a123b9a103b3087dc3be7f0b71033e 05-Dec-2009 Anders Carlsson <andersca@mac.com> Use createGlobalVariable for creating vtable variables too.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90679 91177308-0d34-0410-b5e6-96231b3b80d8
table-linkage.cpp
7ca464366349e6b197cb521794517fa026259ee4 05-Dec-2009 Anders Carlsson <andersca@mac.com> Factor vtable related GlobalVariable creation out into a separate function. Add vtable linkage test.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90667 91177308-0d34-0410-b5e6-96231b3b80d8
table-linkage.cpp
378fe06b93752669d8a7dd8fa7000094b9679267 05-Dec-2009 Eli Friedman <eli.friedman@gmail.com> Tweak "key function" rules so that they work for templates with virtual
inline functions.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90645 91177308-0d34-0410-b5e6-96231b3b80d8
irt-template-vtable.cpp
1b3171dd6c7c319655f79de80ed8fed03f758e51 05-Dec-2009 Anders Carlsson <andersca@mac.com> Don't emit explicit specializations of static member variable declarations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90624 91177308-0d34-0410-b5e6-96231b3b80d8
tatic-member-variable-explicit-specialization.cpp
48eda2c5d6d2a5c95775a1a3a8a22428bb6869c6 04-Dec-2009 Anders Carlsson <andersca@mac.com> Be a little more clever about inline member functions that are marked inline in the inline class declaration but not in the actual definition:

class A {
inline void f();
}

void A::f() { }

This is not the most ideal solution, since it doesn't work 100% with regular functions (as my FIXME comment states).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90607 91177308-0d34-0410-b5e6-96231b3b80d8
nline-functions.cpp
5c478cf2d54157062cd843737324e0d0df03a464 04-Dec-2009 Anders Carlsson <andersca@mac.com> Diagnose declarations of implicit member functions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90605 91177308-0d34-0410-b5e6-96231b3b80d8
angle.cpp
fd12649cd54074ca9efa0774a7812e330619d198 04-Dec-2009 Anders Carlsson <andersca@mac.com> When generating a virtual destructor, don't try to make a virtual call to the base class destructor because then we'll just re-enter the same destructor!

This was done to fix PR5619, so I went ahead and passed a dummy VTT pointer for now.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90578 91177308-0d34-0410-b5e6-96231b3b80d8
irtual-destructor-calls.cpp
47846d2b4c19972e57563bb05a777748939bfb47 04-Dec-2009 Anders Carlsson <andersca@mac.com> Correctly mangle the 'std' namespace inside extern "C++" blocks.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90544 91177308-0d34-0410-b5e6-96231b3b80d8
angle-subst-std.cpp
84206757573bb9f3c91a48cebf800e3fb6c48301 04-Dec-2009 Eli Friedman <eli.friedman@gmail.com> Test for non-canonical decl and vtables.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90541 91177308-0d34-0410-b5e6-96231b3b80d8
irt-canonical-decl.cpp
c013118155077cf8bdaef743c5dbce760114eed3 03-Dec-2009 Eli Friedman <eli.friedman@gmail.com> Add recursion guards to ice-checking and evaluation for declrefs, so we
don't infinitely recurse for cases we can't evaluate.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90480 91177308-0d34-0410-b5e6-96231b3b80d8
val-recursive-constant.cpp
7b0ca3fa6f9e89d81db96fe51d4d73bf69d17edc 03-Dec-2009 Anders Carlsson <andersca@mac.com> Handle static_assert inside functions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90461 91177308-0d34-0410-b5e6-96231b3b80d8
tatic-assert.cpp
2d09ed028a626d2ebccc6d7971f8c1066a177954 03-Dec-2009 Benjamin Kramer <benny.kra@googlemail.com> Make test 64 bit safe.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90452 91177308-0d34-0410-b5e6-96231b3b80d8
ember-pointer-type-convert.cpp
4a2251bb06a03166e34b509ca840b36f816c4081 03-Dec-2009 Eli Friedman <eli.friedman@gmail.com> Fix for PR5659: correct a rather nasty oversight in the type conversion for
member pointer types.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90450 91177308-0d34-0410-b5e6-96231b3b80d8
ember-pointer-type-convert.cpp
6804fa27eb17567f8a783f92ab8c768ca0b561ba 03-Dec-2009 Eli Friedman <eli.friedman@gmail.com> Fix thunk generation for thunks with a parameter with reference type.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90412 91177308-0d34-0410-b5e6-96231b3b80d8
irt-thunk-reference.cpp
7facf8408ff426be732b9eb62c58d42e6177dd7b 02-Dec-2009 Eli Friedman <eli.friedman@gmail.com> Fix for PR5522 and PR5666: fix a bunch of mangling issues with extern variables
and funcctions declared locally within a function.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90344 91177308-0d34-0410-b5e6-96231b3b80d8
angle-extern-local.cpp
5fcf1f0df06e72581647efd579f970378f77eb55 02-Dec-2009 Eli Friedman <eli.friedman@gmail.com> Fix another "operator delete missing" crash: make sure we don't check
isVirtual() before we've actually calculated whether the destructor is
virtual.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90303 91177308-0d34-0410-b5e6-96231b3b80d8
irtual-inherited-destructor.cpp
f195357836e712b85591b22c47e63e327c657ceb 02-Dec-2009 Eli Friedman <eli.friedman@gmail.com> Tweak test to check for a bit more.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90302 91177308-0d34-0410-b5e6-96231b3b80d8
irtual-implicit-copy-assignment.cpp
ca6affd01612fa1e4db78ae40509ac01d661730d 02-Dec-2009 Eli Friedman <eli.friedman@gmail.com> Make sure to call AddOverriddenMethods for implicit copy assignment operators;
it's rare, but possible, for the difference to be significant.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90301 91177308-0d34-0410-b5e6-96231b3b80d8
irtual-implicit-copy-assignment.cpp
6bc9768408d4b45e00350018b6e3540bc05d267d 02-Dec-2009 Fariborz Jahanian <fjahanian@apple.com> Fix a code gen. crash synthesizing a destructor.
Fixes pr5660.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90283 91177308-0d34-0410-b5e6-96231b3b80d8
irtual-destructor-synthesis.cpp
abce6999b271f4928aa98b11d42ffebedcde1e13 30-Nov-2009 Fariborz Jahanian <fjahanian@apple.com> Test for my last patch.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90159 91177308-0d34-0410-b5e6-96231b3b80d8
irtual-base-destructor-call.cpp
30e682e1ef4c5c82b354fe622afad1a3dd8952d7 30-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add missing assignment operator to test, and add tests for while loops and for
loops (including temporaries inside the initializers).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90151 91177308-0d34-0410-b5e6-96231b3b80d8
emp-order.cpp
f64e44c5400ace9103de08407bb28aaa1b868b18 30-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add more sophisticated test for destruction order of C++ temporaries, please
feel free to extend!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90143 91177308-0d34-0410-b5e6-96231b3b80d8
emp-order.cpp
8432f25cb242cbc809f9b10672e8e2074d362f80 28-Nov-2009 Eli Friedman <eli.friedman@gmail.com> Add a much more thorough test of casts to virtual bases, and fix
GetCXXBaseClassOffset to actually pass the test.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90025 91177308-0d34-0410-b5e6-96231b3b80d8
irtual-base-cast.cpp
9b3727457d1f779da81569c2ca42ff6cd5f5b03d 27-Nov-2009 Eli Friedman <eli.friedman@gmail.com> Some member pointer casting tests.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89989 91177308-0d34-0410-b5e6-96231b3b80d8
ember-function-pointers.cpp
ember-pointer-cast.cpp
c16668acc904bec0ee20f6bfc2a72d6a3821a589 27-Nov-2009 Eli Friedman <eli.friedman@gmail.com> Fix for PR5594: use EmitGlobalDefinition instead of EmitCXXDestructor so that
we check whether the vtable needs to be generated.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89984 91177308-0d34-0410-b5e6-96231b3b80d8
irt-dtor-key.cpp
15233e5a4d98b66b3c6cfcc4e6413ad776a79481 26-Nov-2009 Eli Friedman <eli.friedman@gmail.com> Simplify and fix up the handling of implicit constructors, copy assignment
operators, and destructors. Avoids generating declarations/definitions of
trivial constructors/destructors, and makes sure the trivial copy assignment
operator is generated when necessary.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89943 91177308-0d34-0410-b5e6-96231b3b80d8
opy-assign-synthesis-2.cpp
9a14630714da7176c981e3c8d050f82bc42c2643 26-Nov-2009 Eli Friedman <eli.friedman@gmail.com> Implement IRGen for MemberExpr referring to static member function.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89938 91177308-0d34-0410-b5e6-96231b3b80d8
ember-expressions.cpp
e9d6554ba78fb81e810fdaec9b2c98ab96526e83 26-Nov-2009 Eli Friedman <eli.friedman@gmail.com> Slight tweak to the algorithm for getLinkage().



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89932 91177308-0d34-0410-b5e6-96231b3b80d8
onst-global-linkage.cpp
bd94ab9a19cb4bed55ecae9558533da9606bedcf 26-Nov-2009 Eli Friedman <eli.friedman@gmail.com> Use new getLinkage() method to correctly compute whether a variable has
internal linkage. Fixes PR5433.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89931 91177308-0d34-0410-b5e6-96231b3b80d8
onst-global-linkage.cpp
f6c56e2323c3f973253805a2f35629f3253ebed4 25-Nov-2009 Anders Carlsson <andersca@mac.com> Add VTT parameter to base ctors/dtors with virtual bases. (They aren't used yet).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89835 91177308-0d34-0410-b5e6-96231b3b80d8
irtual-bases.cpp
d975206755e26a391f4a1cd8bf8f96a6a65b05e6 25-Nov-2009 Douglas Gregor <dgregor@apple.com> Implement proper cleanup semantics for condition variables in for
statements, e.g.,

for(; X x = X(); ) { ... }

Daniel or Anders, please review!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89832 91177308-0d34-0410-b5e6-96231b3b80d8
ondition.cpp
345e7d29d597a8fff97a20845f3ab63bec81db35 25-Nov-2009 Douglas Gregor <dgregor@apple.com> Tweak the code-generation-for-condition-variables test case to get to what we want to test

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89818 91177308-0d34-0410-b5e6-96231b3b80d8
ondition.cpp
99e9b4d172f6877e6ba5ebe75bb8238721f5e01c 25-Nov-2009 Douglas Gregor <dgregor@apple.com> Eliminate CXXConditionDeclExpr with extreme prejudice.

All statements that involve conditions can now hold on to a separate
condition declaration (a VarDecl), and will use a DeclRefExpr
referring to that VarDecl for the condition expression. ForStmts now
have such a VarDecl (I'd missed those in previous commits).

Also, since this change reworks the Action interface for
if/while/switch/for, use FullExprArg for the full expressions in those
expressions, to ensure that we're emitting

Note that we are (still) not generating the right cleanups for
condition variables in for statements. That will be a follow-on
commit.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89817 91177308-0d34-0410-b5e6-96231b3b80d8
ondition.cpp
5656e14d91405417182171a705ed3e3d2d6d7aa3 24-Nov-2009 Douglas Gregor <dgregor@apple.com> Clean up the AST for while loops and fix several problems with
cleanups for while loops:

1) Make sure that we destroy the condition variable of a while statement each time through the loop for, e.g.,

while (shared_ptr<WorkInt> p = getWorkItem()) {
// ...
}

2) Make sure that we always enter a new cleanup scope for the body of the while loop, even when there is no compound expression, e.g.,

while (blah)
RAIIObject raii(blah+1);



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89800 91177308-0d34-0410-b5e6-96231b3b80d8
ondition.cpp
e9cbf15b2ebedebc8bb8e162bb5cf25abd70f578 24-Nov-2009 Anders Carlsson <andersca@mac.com> Handle references correctly when synthesizing copy constructors.

With this change, the clang-on-clang test result is now

Expected Passes : 224
Unexpected Failures: 37

Which means that we can compile over 80% of clang with clang! :)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89799 91177308-0d34-0410-b5e6-96231b3b80d8
opy-constructor-synthesis.cpp
744823c8741b858a477545eeea28f17570dc2e24 24-Nov-2009 Fariborz Jahanian <fjahanian@apple.com> Fix the test case failed in buildbot.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89791 91177308-0d34-0410-b5e6-96231b3b80d8
ew.cpp
5d4d946ec2d88696fd8422aeb64dc29688e6a2c1 24-Nov-2009 Anders Carlsson <andersca@mac.com> Handle cases where we're constructing an array of objects and the constructor has default arguments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89783 91177308-0d34-0410-b5e6-96231b3b80d8
efault-arguments.cpp
048f52aa9c9c78538fa369af2fc4b7031a55fa77 24-Nov-2009 Fariborz Jahanian <fjahanian@apple.com> Refactor collection of call arguments in common code.
Add support for variadic collection functions. More to do
here.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89781 91177308-0d34-0410-b5e6-96231b3b80d8
ew.cpp
d3d5301c44138b92bf01286183f5bf310cdd37cf 24-Nov-2009 Douglas Gregor <dgregor@apple.com> Explicitly store the condition variable within switch statements, and
make sure that this variable is destroyed when we exit the switch
statement.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89776 91177308-0d34-0410-b5e6-96231b3b80d8
ondition.cpp
c102297fb2857ef1af191a8e85e842cc3ac3239e 24-Nov-2009 Anders Carlsson <andersca@mac.com> We always need to emit the base expression of a member expression, even when the member decl refers to an enum. Thanks to Eli for pointing this out!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89775 91177308-0d34-0410-b5e6-96231b3b80d8
ember-expressions.cpp
a244dc3a554f6bf82416697e34f9e96dc1efbb88 24-Nov-2009 Anders Carlsson <andersca@mac.com> Fix a crash when "instantiating" VarDecls that are neither type nor value dependent.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89774 91177308-0d34-0410-b5e6-96231b3b80d8
ember-templates.cpp
01234bbc1cb94946df8046ad95e17537082b4f71 24-Nov-2009 Douglas Gregor <dgregor@apple.com> Introduce cleanup scopes for "if" statements in two places:
- Outside the "if", to ensure that we destroy the condition variable
at the end of the "if" statement rather than at the end of the
block containing the "if" statement.
- Inside the "then" and "else" branches, so that we emit then- or
else-local cleanups at the end of the corresponding block when the
block is not a compound statement.

To make adding these new cleanup scopes easier (and since
switch/do/while will all need the same treatment), added the
CleanupScope RAII object to introduce a new cleanup scope and make
sure it gets cleaned up.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89773 91177308-0d34-0410-b5e6-96231b3b80d8
ondition.cpp
7e120030a07ad8c4365526b1c5cd22a641297635 24-Nov-2009 Anders Carlsson <andersca@mac.com> When mangling a ctor/dtor we need to take into consideration whether it's a member template.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89741 91177308-0d34-0410-b5e6-96231b3b80d8
ember-templates.cpp
1fe598c026dc03fddbd65efb8119eb1afd9b1520 24-Nov-2009 Anders Carlsson <andersca@mac.com> Ignore constructor member templates in CodeGenModule::EmitTopLevelDecl.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89737 91177308-0d34-0410-b5e6-96231b3b80d8
ember-templates.cpp
ecf282b0486873309fd58ec4d3ec0dbf983b33d4 24-Nov-2009 Anders Carlsson <andersca@mac.com> It is common for vtables to contain pointers to functions that have either incomplete return types or incomplete argument types.

Handle this by returning the llvm::OpaqueType for those cases, which CodeGenModule::GetOrCreateLLVMFunction knows about, and treats as being an "incomplete function".


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89736 91177308-0d34-0410-b5e6-96231b3b80d8
irtual-functions-incomplete-types.cpp
a1b29a74eb702067f18f4cac184bc705e915fd6b 23-Nov-2009 Anders Carlsson <andersca@mac.com> Don't try to treat an enum constant as an lvalue.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89705 91177308-0d34-0410-b5e6-96231b3b80d8
ember-expressions.cpp
a4c98cd60e7151ea6eccfc677742bdbcf58d2a55 23-Nov-2009 Anders Carlsson <andersca@mac.com> Convert the && and || operands to bool using standard conversions. Fixes PR5593.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89704 91177308-0d34-0410-b5e6-96231b3b80d8
ember-function-pointers.cpp
bc0e0781da778bd5eb41a810419912893ae20448 23-Nov-2009 Anders Carlsson <andersca@mac.com> Handle converting member pointers to bool.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89692 91177308-0d34-0410-b5e6-96231b3b80d8
ember-function-pointers.cpp
5d484e8cf710207010720589d89602233de61d01 23-Nov-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Intercept sizeof and alignof references before they get into ASTContext methods. This fixes a crash when writing sizeof(Incomplete&), and lets ASTContext's methods do the right thing for CodeGen, which fixes PR5590.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89668 91177308-0d34-0410-b5e6-96231b3b80d8
eferences.cpp
ce9f423d2ce4b8699d9f6c7623053f645ac4dc6d 23-Nov-2009 Daniel Dunbar <daniel@zuster.org> x86_64, PR5582: Layout bases for C++ records.
- Ideally we would have an single iteration interface for this, but this works
for now.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89632 91177308-0d34-0410-b5e6-96231b3b80d8
86_64-arguments.cpp
09edb9c38cc7dc596d97d68ba6d23545c7ad3abd 22-Nov-2009 Anders Carlsson <andersca@mac.com> Use EmitStoreOfScalar when copying the scalar to the space allocated by 'new'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89613 91177308-0d34-0410-b5e6-96231b3b80d8
ew.cpp
01a79acd9a5a701c7ddb46174ddfcb0e54349f4a 22-Nov-2009 Anders Carlsson <andersca@mac.com> Support emitting aggregate class initializers. Fixes PR5581.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89569 91177308-0d34-0410-b5e6-96231b3b80d8
onst-init.cpp
7e0c1957d19ab012e372c1e5e75a9264e3bacf41 21-Nov-2009 Daniel Dunbar <daniel@zuster.org> Mangler: Sketch mangling for TemplateArgument::Declaration kind.
- Several important FIXMEs related to whether arguments are expressions or external names, and the mangling of extern "C" names (c.f., PR5522).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89556 91177308-0d34-0410-b5e6-96231b3b80d8
angle-template.cpp
a446343a46ec5a2e3813f3d3314476be267fa242 20-Nov-2009 Mike Stump <mrs@apple.com> Add testcases for recent checkins.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89469 91177308-0d34-0410-b5e6-96231b3b80d8
h.cpp
a36bf8f74180e834c6bf2db867796fd5338495ab 20-Nov-2009 Anders Carlsson <andersca@mac.com> Fix lifetime of conditional temporaries. Patch by Victor Zverovich!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89467 91177308-0d34-0410-b5e6-96231b3b80d8
onditional-temporaries.cpp
a84b4044b79f2cc424c6ae7ee5edb97e948ba806 20-Nov-2009 Mike Stump <mrs@apple.com> Fixup key function calculations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89412 91177308-0d34-0410-b5e6-96231b3b80d8
yncast.cpp
irt.cpp
498429fa24555ac1c849d8bc6a893d29bd3da4b6 19-Nov-2009 Fariborz Jahanian <fjahanian@apple.com> Patch to implement new-operators with default args.
Fixes pr5547.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89370 91177308-0d34-0410-b5e6-96231b3b80d8
ew-with-default-arg.cpp
88a4a62b8a18dc24006ef9d44e28de6c7dc987ba 18-Nov-2009 Mike Stump <mrs@apple.com> Be sure to set visibility for ZTI symbols for classes from the class.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89186 91177308-0d34-0410-b5e6-96231b3b80d8
tti.cpp
066b983348e06a5f9dbbb72041077bbf1a0fb9c1 18-Nov-2009 Mike Stump <mrs@apple.com> Make _ZTI symbols hidden. This speeds up the dynamic linker.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89185 91177308-0d34-0410-b5e6-96231b3b80d8
tti.cpp
2710c4159ff4761ba9867aca18f60a178b297686 18-Nov-2009 Mike Stump <mrs@apple.com> Fix one last gotcha with typeid.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89172 91177308-0d34-0410-b5e6-96231b3b80d8
tti.cpp
ae9b2be5a3771a0d45cfaba171b80e5b0c71c6ca 18-Nov-2009 Mike Stump <mrs@apple.com> Add rtti support for arrays, functiond without prototypes, vectors and
enums.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89165 91177308-0d34-0410-b5e6-96231b3b80d8
tti.cpp
64989f04d13d9a4a62cc7ebee6351b7c4dbe2e74 18-Nov-2009 Mike Stump <mrs@apple.com> Add rtti info for function prototypes and refactor. This allows
pointer to member functions to work. WIP.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89161 91177308-0d34-0410-b5e6-96231b3b80d8
tti.cpp
5fae856de2520b63fd371c281a9d36c1547e17f3 17-Nov-2009 Mike Stump <mrs@apple.com> Add rtti support for pointer to data members.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89155 91177308-0d34-0410-b5e6-96231b3b80d8
tti.cpp
61c38012571dbabf1bf8f12c31bb64af1fc8d1d5 17-Nov-2009 Mike Stump <mrs@apple.com> Add rtti support for non-member pointers. WIP.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89148 91177308-0d34-0410-b5e6-96231b3b80d8
tti.cpp
aa069aee2e6290af170a48110641a43f80d25840 17-Nov-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Undo previous test fix. -split-phi-edges now disables automatically when the
local register allocator is used.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89127 91177308-0d34-0410-b5e6-96231b3b80d8
onstructor-default-arg.cpp
9f853df0d3c25c646907a7b7ef22398370def00f 17-Nov-2009 Anders Carlsson <andersca@mac.com> Unify the way destructor epilogues are generated for synthesized and regular destructors. Also fix PR5529.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89034 91177308-0d34-0410-b5e6-96231b3b80d8
estructors.cpp
21f5d5d74a1d8c750c29e5fc68fb45e4abfbae58 17-Nov-2009 Mike Stump <mrs@apple.com> Add typeinfo support for T* and const T* for all builtin types T.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89030 91177308-0d34-0410-b5e6-96231b3b80d8
tti.cpp
ea2c0b5dec07c28222856e66177f0922c9f508b1 17-Nov-2009 Mike Stump <mrs@apple.com> Add typeid for the builtin types. WIP.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89028 91177308-0d34-0410-b5e6-96231b3b80d8
tti.cpp
936d2a8a3968231199dddbc78378e8fddbab6e25 17-Nov-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix tests after enabling -split-phi-edges.

object-size.c aws simply too fragile.

constructor-default-arg.cpp triggers an issue when LiveVariables is run before RALocal.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89025 91177308-0d34-0410-b5e6-96231b3b80d8
onstructor-default-arg.cpp
db519a4bb2082b98e03162ac1a4399978833643b 17-Nov-2009 Mike Stump <mrs@apple.com> Ensure we peer through () when handling typeid(*p).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89015 91177308-0d34-0410-b5e6-96231b3b80d8
tti.cpp
c888f485caaedfcdf62a728d542419232ee89ca0 17-Nov-2009 Mike Stump <mrs@apple.com> Note why this doesn't yet work.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89012 91177308-0d34-0410-b5e6-96231b3b80d8
yncast.cpp
f4a08d0d8b496a7f52702e05b8d7622e030dd9d8 17-Nov-2009 Mike Stump <mrs@apple.com> Trim spacing.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89006 91177308-0d34-0410-b5e6-96231b3b80d8
yncast.cpp
4d26b43f7c6fc9d2974da7e7389337fe32dc29d0 17-Nov-2009 Eli Friedman <eli.friedman@gmail.com> Fix up EmitMemberInitializer to handle many more cases.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88999 91177308-0d34-0410-b5e6-96231b3b80d8
ember-init-struct.cpp
39f36e37f53bfec22a4bc2a594f2dd314395c86c 17-Nov-2009 Mike Stump <mrs@apple.com> Testcase for dynamic_cast.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88996 91177308-0d34-0410-b5e6-96231b3b80d8
yncast.cpp
1db5345eec54f8c57d4d448e490715025cb9b9bb 16-Nov-2009 Eli Friedman <eli.friedman@gmail.com> Make member initializers for union members work correctly.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88989 91177308-0d34-0410-b5e6-96231b3b80d8
ember-init-union.cpp
6d10ac9ef3435993d0ceae7782fbeee7659af30e 16-Nov-2009 Eli Friedman <eli.friedman@gmail.com> Implement a few more cases for copy constructor synthesis.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88971 91177308-0d34-0410-b5e6-96231b3b80d8
opy-constructor-synthesis.cpp
912b662aec7ed42515a823431deb5aed070cc0d6 16-Nov-2009 Mike Stump <mrs@apple.com> Fix members to be public.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88944 91177308-0d34-0410-b5e6-96231b3b80d8
ypeinfo
333dfe94b9d57650a3ca7da7fcc0bd77c0353246 16-Nov-2009 Mike Stump <mrs@apple.com> Make bots happy.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88941 91177308-0d34-0410-b5e6-96231b3b80d8
tti.cpp
ypeinfo
2a70e94c543338059432fc38b801a56c60f0e0d7 16-Nov-2009 Mike Stump <mrs@apple.com> Fix spelling for target triplet.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88928 91177308-0d34-0410-b5e6-96231b3b80d8
elete-two-arg.cpp
xplicit-instantiation.cpp
083e3060b77917c1c1096127ab99ae921d7e8782 16-Nov-2009 Mike Stump <mrs@apple.com> Try and fix buildbot issue.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88900 91177308-0d34-0410-b5e6-96231b3b80d8
elete-two-arg.cpp
8dfa2b3a5b818aa888d21eed8585e3d1b9d3506b 16-Nov-2009 Eli Friedman <eli.friedman@gmail.com> Fix a couple of cases where we weren't generating the right kind of call
for a call to a virtual function.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88891 91177308-0d34-0410-b5e6-96231b3b80d8
irtual-operator-call.cpp
irtual-pseudo-destructor-call.cpp
eaea8c4c23b6892c82640c6f67034d9ed4498d45 16-Nov-2009 Eli Friedman <eli.friedman@gmail.com> Implement two-argument form of delete operator.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88890 91177308-0d34-0410-b5e6-96231b3b80d8
elete-two-arg.cpp
333b2a7463fcdda83b5b9373bdb35f63ae342c4c 15-Nov-2009 Mike Stump <mrs@apple.com> Fix linux buildbots.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88856 91177308-0d34-0410-b5e6-96231b3b80d8
tti.cpp
f549e898a44fe91aca46fe34e9ba04a2f08318bf 15-Nov-2009 Mike Stump <mrs@apple.com> Finish off zero check for typeid(*p) so that it will do a __cxa_bad_typeid.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88852 91177308-0d34-0410-b5e6-96231b3b80d8
tti.cpp
c2e84ae9a6d25cea3e583c768e576b4c981ec028 15-Nov-2009 Mike Stump <mrs@apple.com> Implement typeid for class types.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88843 91177308-0d34-0410-b5e6-96231b3b80d8
tti.cpp
a8285a88647805b294e946527ecee8e5ececc4ff 15-Nov-2009 Mike Stump <mrs@apple.com> Finish off support for typeinfo generation for classes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88828 91177308-0d34-0410-b5e6-96231b3b80d8
tti.cpp
658e8123a80d0e62f227a0c1532f2a4f106b3e73 14-Nov-2009 Anders Carlsson <andersca@mac.com> Handle CK_BitCast in EmitCastLValue.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88810 91177308-0d34-0410-b5e6-96231b3b80d8
einterpret-cast.cpp
5b6117a7727565be9fcaf709706c7d720bf191ad 14-Nov-2009 Anders Carlsson <andersca@mac.com> Canonicalize the type before trying to create a debug type.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88808 91177308-0d34-0410-b5e6-96231b3b80d8
ebug-info.cpp
55f9bdd88c93b5c8dab631c0808f7f7a541cea14 14-Nov-2009 Eli Friedman <eli.friedman@gmail.com> Avoid assert-crash in a case where the expression passed to EmitConstantExpr
legitimately has side-effects (and needs to be generated as a non-constant).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88767 91177308-0d34-0410-b5e6-96231b3b80d8
tatic-init-2.cpp
2f0055275755807395cbd94e636347ae53fb1f03 14-Nov-2009 Eli Friedman <eli.friedman@gmail.com> Fix a couple of tests.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88756 91177308-0d34-0410-b5e6-96231b3b80d8
irt-dtor-gen.cpp
ea9a20834cf9311fdf758cfbd73b8daa8e655f15 14-Nov-2009 Eli Friedman <eli.friedman@gmail.com> PR5483: Generate missing form of destructor when it is virtual. (Someone
more familiar with this stuff should double-check that there isn't some more
general rule; this is purely from inspecting g++ output.)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88755 91177308-0d34-0410-b5e6-96231b3b80d8
irt-dtor-gen.cpp
49e2b8e2e5d096851b5135ea5aed222e8aa95bde 14-Nov-2009 Eli Friedman <eli.friedman@gmail.com> Fix for PR5489: don't skip the complete type requrirement for variable
definitions just because the type happens to be an array type.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88752 91177308-0d34-0410-b5e6-96231b3b80d8
nit-incomplete-type.cpp
370e53864aaed0288afdf532e127efe35d4b49f1 14-Nov-2009 Anders Carlsson <andersca@mac.com> Handle CXXDefaultArgExprs in EmitLValue. Fixes PR5484.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88735 91177308-0d34-0410-b5e6-96231b3b80d8
efault-arguments.cpp
534ba90a1b865f3731aa56423e8f02d49ff62ec7 13-Nov-2009 Fariborz Jahanian <fjahanian@apple.com> Code gen. For virtual destructor call on array objects
(still part of pr5472).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88712 91177308-0d34-0410-b5e6-96231b3b80d8
rray-operator-delete-call.cpp
22efb85eb5c09a1859956aaf408900ff83e08c53 13-Nov-2009 Mike Stump <mrs@apple.com> More VTT and constructor vtable testcases from recent work.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88710 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
513225fd7942b01adae2cfbaef978568e23dfbca 13-Nov-2009 Mike Stump <mrs@apple.com> Add more testcase for construction vtables and VTTs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88702 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
2cdcbdb5e69275b4269786afbe1c439200092fcd 13-Nov-2009 Mike Stump <mrs@apple.com> Add some more VTT testcases.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88699 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
9326c5695f0e15e3a1e0f6d4372c17c113656850 13-Nov-2009 Mike Stump <mrs@apple.com> Add a testcase for the recent VTT work.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88681 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
72c2153b466263a21870b2b1c817900d4981493e 13-Nov-2009 Fariborz Jahanian <fjahanian@apple.com> Code gen for arrady delete operator. Fixes pr5472.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88680 91177308-0d34-0410-b5e6-96231b3b80d8
rray-operator-delete-call.cpp
a660440263ceb3a2502f5dbd48b4e166544ed9fe 13-Nov-2009 Mike Stump <mrs@apple.com> This falls into the category of stupid pet tricks. I hate to do this,
but this is necessary to continue work on virtual vtables. We don't
want to penalize virtual table building testcases, just because
complex virtual conversions don't yet work.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88676 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
4b3cbeaea60a1a2d1adc73738123c24549b7ce2c 13-Nov-2009 Anders Carlsson <andersca@mac.com> Don't bind arguments to temporaries if the argument has a reference type.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88662 91177308-0d34-0410-b5e6-96231b3b80d8
emporaries.cpp
03d8ed439f55b692634f9c71721ecfabbe347c4d 13-Nov-2009 Anders Carlsson <andersca@mac.com> Fix two bugs with temporaries:

1. For

A f() {
return A();
}

we were incorrectly calling the A destructor on the returned object.

2. For

void f(A);
void g() {
A a;
f(a);
}

we were incorrectly not calling the copy constructor.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@87082 91177308-0d34-0410-b5e6-96231b3b80d8
emporaries.cpp
010c3f531a634d0b6d56f433323f7283f684c1d0 12-Nov-2009 Daniel Dunbar <daniel@zuster.org> Fix test portability.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86911 91177308-0d34-0410-b5e6-96231b3b80d8
ew.cpp
f42d74f41076542fc9b4f4d5fa034dfa93b3c916 11-Nov-2009 Fariborz Jahanian <fjahanian@apple.com> Make test more platform independent.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86890 91177308-0d34-0410-b5e6-96231b3b80d8
ew-operator-phi.cpp
e8b31cc500473f0e2558c77c8a46458deff6ce51 11-Nov-2009 Fariborz Jahanian <fjahanian@apple.com> Value initialize non-class array members in ctor's
initializer list. Fixes PR5463.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86849 91177308-0d34-0410-b5e6-96231b3b80d8
rray-value-initialize.cpp
47d1e828674a2d9c020db9f9ec45f27025a39e35 11-Nov-2009 Daniel Dunbar <daniel@zuster.org> Fix some tests in -Asserts mode.
- FileCheck is a *huuuuge* improvement here.

- Still feels like we could use a better tool for this though, either teach
llvm-dis to spit out the FileCheck syntax, or provide another tool to turn a
.ll into a "matchable" input.

- Also on my Christmas list is better FileCheck diagnostics with missing
variables or mismatches.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86800 91177308-0d34-0410-b5e6-96231b3b80d8
ember-function-pointers.cpp
b03bfa55d03ca38922ffedac19225d0832e8d911 11-Nov-2009 Fariborz Jahanian <fjahanian@apple.com> Diagnose illegally typed operator new/new[].



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86755 91177308-0d34-0410-b5e6-96231b3b80d8
ew-operator-phi.cpp
7f1de456fe6b6fb6d3fb8144df6173d2354f595a 10-Nov-2009 Eli Friedman <eli.friedman@gmail.com> Fix for PR5454: make sure to use the right block as the predecessor in the
generated PHI node for the null check of a new operator.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86738 91177308-0d34-0410-b5e6-96231b3b80d8
ew-operator-phi.cpp
88f4280f6b60edcbdea6a38a3da8b17d66473ad6 10-Nov-2009 Fariborz Jahanian <fjahanian@apple.com> This patch implements Code gen. for destruction of
global array of objects.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86701 91177308-0d34-0410-b5e6-96231b3b80d8
lobal-array-destruction.cpp
d49c7b61d9d5682565524e845bd8d0dc90294e45 09-Nov-2009 Eli Friedman <eli.friedman@gmail.com> Add code generation test for r86500.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86574 91177308-0d34-0410-b5e6-96231b3b80d8
efault-constructor-default-argument.cpp
bb4a33cdf6342110811ae16f7ca6accababf432f 09-Nov-2009 Eli Friedman <eli.friedman@gmail.com> Add hack to make the given testcase work. As far as I can tell, this change is
reasonably safe, but it doesn't seem like the right solution.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86508 91177308-0d34-0410-b5e6-96231b3b80d8
nstantiate-init-list.cpp
49c16da71b9c95cc53b4af6de2833a022cb69b6a 09-Nov-2009 Eli Friedman <eli.friedman@gmail.com> Unify the codepaths used to verify base and member initializers for explicitly
and implicitly defined constructors. This has a number of benefits:

1. Less code.

2. Explicit and implicit constructors get the same diagnostics.

3. The AST explicitly contains constructor calls from implicit default
constructors. This allows handing some cases that previously weren't handled
correctly in IRGen without any additional code. Specifically, implicit default
constructors containing calls to constructors with default arguments are now
handled correctly.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86500 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
2475d76920b43014e661690836642ca3c9967179 08-Nov-2009 Daniel Dunbar <daniel@zuster.org> Remove RUN: true lines.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86432 91177308-0d34-0410-b5e6-96231b3b80d8
R5050-constructor-conversion.cpp
rray-construction.cpp
all-arg-zero-temp.cpp
ast-conversion.cpp
onstructor-conversion.cpp
onstructor-default-arg.cpp
onstructor-for-array-members.cpp
onstructor-template.cpp
onversion-function.cpp
onvert-to-fptr.cpp
opy-assign-synthesis-1.cpp
opy-constructor-elim.cpp
opy-constructor-synthesis.cpp
ecl-ref-init.cpp
efault-constructor-for-members.cpp
efault-destructor-synthesis.cpp
erived-to-base-conv.cpp
mplicit-instantiation-1.cpp
tr-to-member-function.cpp
rivial-constructor-init.cpp
ararg-conversion-ctor.cpp
irt.cpp
86_64-arguments.cpp
4fcfde4d5c8f25e40720972a5543d538a0dcb220 08-Nov-2009 Daniel Dunbar <daniel@zuster.org> Eliminate &&s in tests.
- 'for i in $(find . -type f); do sed -e 's#\(RUN:.*[^ ]\) *&& *$#\1#g' $i | FileUpdate $i; done', for the curious.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86430 91177308-0d34-0410-b5e6-96231b3b80d8
R5050-constructor-conversion.cpp
rray-construction.cpp
ttr.cpp
all-arg-zero-temp.cpp
ast-conversion.cpp
lass-layout.cpp
onstructor-conversion.cpp
onstructor-default-arg.cpp
onstructor-for-array-members.cpp
onstructor-template.cpp
onversion-function.cpp
onvert-to-fptr.cpp
opy-assign-synthesis-1.cpp
opy-assign-synthesis.cpp
opy-constructor-elim.cpp
opy-constructor-synthesis.cpp
ecl-ref-init.cpp
efault-arg-temps.cpp
efault-constructor-for-members.cpp
efault-destructor-synthesis.cpp
elete.cpp
erived-to-base-conv.cpp
xplicit-instantiation.cpp
xtern-c.cpp
mplicit-instantiation-1.cpp
ember-functions.cpp
ember-pointers-zero-init.cpp
tr-to-member-function.cpp
einterpret-cast.cpp
tatic-init-1.cpp
tatic-init.cpp
rivial-constructor-init.cpp
ararg-conversion-ctor.cpp
irt.cpp
86_64-arguments.cpp
589f9e3f7845c2a1bf97ae4357aec5b457a5ea19 08-Nov-2009 Anders Carlsson <andersca@mac.com> Handle member expressions where the member declaration is actually a static variable. Fixes PR5392.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86414 91177308-0d34-0410-b5e6-96231b3b80d8
ember-expressions.cpp
a1e1622d1549c470acc999c4399456863e58a011 07-Nov-2009 Anders Carlsson <andersca@mac.com> Always mangle functions with special names. Fixes PR5420.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86350 91177308-0d34-0410-b5e6-96231b3b80d8
angle-system-header.cpp
433d1374409a8eeaa4b0975fa187a542d5e40c23 07-Nov-2009 Anders Carlsson <andersca@mac.com> When looking up and adding substitutions to the substitution table, make sure to always use the canonical declaration. With tihs change, FileCheck compiles and links but crashes during startup.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86339 91177308-0d34-0410-b5e6-96231b3b80d8
angle-subst.cpp
88fad6310d3104e3ac4ab685227beabaa76faf7b 07-Nov-2009 Eli Friedman <eli.friedman@gmail.com> Make sure isCopyAssignment is only true for actual copy assignment operators,
instead of all assignment operators. The mistake messes up IRGen because
it ends up assuming that the assignment operator is actually the implicit
copy assignment operator, and therefore tries to emit the RHS as an lvalue.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86307 91177308-0d34-0410-b5e6-96231b3b80d8
ssign-operator.cpp
9e7e3c6c47f2819bce456950617a966d26839eb4 07-Nov-2009 Mike Stump <mrs@apple.com> Refine the non-virtual this adjustment. Optimize out virtual this
adjustments of zero.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86300 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
e504170f688b0e2113011839b933a4ec450b5182 06-Nov-2009 Fariborz Jahanian <fjahanian@apple.com> Prevent a code gen. crash on empty unions - pr5408.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86287 91177308-0d34-0410-b5e6-96231b3b80d8
mpty-union.cpp
a031b35ba4da13e105a349493f5351014cfb3354 06-Nov-2009 Anders Carlsson <andersca@mac.com> Simplify the debug info code, handle lvalue references and template specializations.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86277 91177308-0d34-0410-b5e6-96231b3b80d8
ebug-info.cpp
30509a30a9a6ac9ee737e5cf39744a92170d7ea4 06-Nov-2009 Fariborz Jahanian <fjahanian@apple.com> This patch fixes code gen. part of pr5333 (Conversion
using elipsis conversion).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86276 91177308-0d34-0410-b5e6-96231b3b80d8
ararg-conversion-ctor.cpp
ba397fe24468fae6cb46f259a3f946770163bfe2 06-Nov-2009 Anders Carlsson <andersca@mac.com> Handle QualifiedNameType and SubstTemplateTypeParmType types in CGDebugInfo::CreateTypeNode.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86274 91177308-0d34-0410-b5e6-96231b3b80d8
ebug-info.cpp
5e1b91875c275f0ec50d3680afbac150d684fdba 06-Nov-2009 Anders Carlsson <andersca@mac.com> If a member variable of reference type is bound to a temporary in its member initializer it needs to be destroyed at the end of the constructor.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86230 91177308-0d34-0410-b5e6-96231b3b80d8
emporaries.cpp
1faf67478c6d423880726a327c737db13b8d9f0b 06-Nov-2009 Anders Carlsson <andersca@mac.com> If a member initializer create temporaries we need to destroy them. Fixes PR5077.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86225 91177308-0d34-0410-b5e6-96231b3b80d8
emporaries.cpp
a7694087e4abaea261918ffbb3ffe38feb1da489 06-Nov-2009 Anders Carlsson <andersca@mac.com> Handle ParenExprs in mangleExpression.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86218 91177308-0d34-0410-b5e6-96231b3b80d8
angle.cpp
33c530e33a2232e8d6089f4a3028e6b8c3e2b746 06-Nov-2009 Mike Stump <mrs@apple.com> Refine the vcall for a function that is defined in a virtual base
class that is overridden in a base that isn't morally virtual.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86217 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
599837ac1ec78e6b8d2c573f9c6d4eac0922c1f0 06-Nov-2009 Mike Stump <mrs@apple.com> Convert file over to checking the .ll file for codegen. Also, we
speed up this file by not doing twice the checking.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86205 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
393c247fe025ccb5f914e37e948192ea86faef8c 05-Nov-2009 Fariborz Jahanian <fjahanian@apple.com> Added support for static variables which require
initialization before main. Fixes pr5396.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86145 91177308-0d34-0410-b5e6-96231b3b80d8
tatic-init-1.cpp
7c276b84d6881df18c847b036fe3c95d94d9b5b3 05-Nov-2009 Mike Stump <mrs@apple.com> Refine covariant return value adjustments for thunks when null
pointers are returned.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86120 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
99faefdac32eda8cf0d6db722588a76caa3add22 05-Nov-2009 Mike Stump <mrs@apple.com> Testcase for a recent checkin.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86118 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
941e3f3f5e771bab984df140e8fda0a67f6aa2d5 05-Nov-2009 Mike Stump <mrs@apple.com> Update.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86117 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
105aa51c146b66f7dc4ac78faa9a7021acb98d75 04-Nov-2009 Fariborz Jahanian <fjahanian@apple.com> Add code gen for pointer-to-member function in
ctor's initializer. Fixes pr5178.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86040 91177308-0d34-0410-b5e6-96231b3b80d8
tr-to-member-function.cpp
7799621ad7d16f3c6a1aeda024312d63ecd77777 04-Nov-2009 Fariborz Jahanian <fjahanian@apple.com> This patch extends CleanupScope to support destruction
of array objects on block exit. Patch is by Anders Calrsson.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86032 91177308-0d34-0410-b5e6-96231b3b80d8
rray-construction.cpp
87c12c4a4667279dacb3d4a93c64b49148a0ff79 04-Nov-2009 Douglas Gregor <dgregor@apple.com> Store the unresolved class type in MemberPointerType's Class field,
from Peter Collingbourne!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86030 91177308-0d34-0410-b5e6-96231b3b80d8
tr-to-datamember.cpp
7af5d19b138516244d042b6e2e94943ff4eadbc6 04-Nov-2009 Chris Lattner <sabre@nondot.org> this test has started failing due to an optimizer change. Clang tests
should only look at -O0 IR output not -O3 assembly output. XFAIL it for
now.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86029 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
d0fe5366d4040545d5f72c547ae54e2c21e4cb68 04-Nov-2009 Mike Stump <mrs@apple.com> Split out return adjustments in thunks from this adjustment in thunks
so the optimizer can tailcall into the return value adjustment thunk.
This improves codesize for complex hierarchies.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85988 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
62db245427b1cfb64cc0a25c918e17489a4a039c 03-Nov-2009 Mike Stump <mrs@apple.com> vtable testcase for recent work on vcall/vbase offsets.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85925 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
9c21289a866b677d21ed3d5ecfdfd5ced5a55410 03-Nov-2009 Mike Stump <mrs@apple.com> Refine codegen for covariant thunks that return references.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85916 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
c902d22129322731607988dafb8cd7f708eb75b1 03-Nov-2009 Mike Stump <mrs@apple.com> Refine return value adjustments for thunks.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85905 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
3114af3f7911befa8f05a9a76f7d9e380538075b 31-Oct-2009 Benjamin Kramer <benny.kra@googlemail.com> Add missing colons for FileCheck.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85683 91177308-0d34-0410-b5e6-96231b3b80d8
emporaries.cpp
6a9612f384deecf078e2e9c5c02a0992a2a1283a 31-Oct-2009 Mike Stump <mrs@apple.com> Refine vcall/vbase ordering with vtable construction.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85677 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
ae013b9da64b48f22ca82828aa3c7a909f99dbd7 28-Oct-2009 Fariborz Jahanian <fjahanian@apple.com> Code gen for array construction - WIP



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85432 91177308-0d34-0410-b5e6-96231b3b80d8
rray-construction.cpp
7809e0d165103864ce6063070e093a0b7cd30cd9 28-Oct-2009 Mike Stump <mrs@apple.com> Finish off pure virtual function handling.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85354 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
52f08bcbb81c750ed62b53ed0b34aff16143b877 26-Oct-2009 Fariborz Jahanian <fjahanian@apple.com> Add Code gen support for '->*' operator which fell
through the crack.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85160 91177308-0d34-0410-b5e6-96231b3b80d8
tr-to-datamember.cpp
7a1f4cc8d5ce5813d8def23d6ec9783cb2f4450b 23-Oct-2009 Fariborz Jahanian <fjahanian@apple.com> Fixed a code gen bug (by fixing the AST) involving user-defined
pointer-to-member type conversion follwed by a pointer-to-member
standard conversion.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84955 91177308-0d34-0410-b5e6-96231b3b80d8
tr-to-member-function.cpp
8bfd31f9dad09cd52225d868bbd92a9bebe87775 23-Oct-2009 Fariborz Jahanian <fjahanian@apple.com> Complete code gen for '.*' binary expression for
both scalar and aggregates.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84910 91177308-0d34-0410-b5e6-96231b3b80d8
tr-to-datamember.cpp
f51dc64f90851f636302dbaaf3f52c0524cdac36 22-Oct-2009 Fariborz Jahanian <fjahanian@apple.com> Code gen for '.*' binary expressions - WIP.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84800 91177308-0d34-0410-b5e6-96231b3b80d8
tr-to-datamember.cpp
39762951ad2abfed7b743c01c672fac85034b856 21-Oct-2009 Fariborz Jahanian <fjahanian@apple.com> Expand on code gen. for pointer to data members so it works
for base classe members as well. Test case enhanced for this.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84780 91177308-0d34-0410-b5e6-96231b3b80d8
tr-to-datamember.cpp
a63629930177da7a0eb99c3fdfb35d8618808ca1 21-Oct-2009 Fariborz Jahanian <fjahanian@apple.com> Code gen for pointer-to-datamember - WIP.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84771 91177308-0d34-0410-b5e6-96231b3b80d8
tr-to-datamember.cpp
96ad5337a4949523ce9df617dad8ca10d3ab9788 21-Oct-2009 Anders Carlsson <andersca@mac.com> Change FixOverloadedFunctionReference to return a (possibly new) expression. Substitute TemplateIdRefExprs with DeclRefExprs. Doug, plz review :)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84763 91177308-0d34-0410-b5e6-96231b3b80d8
ddress-of-fntemplate.cpp
48620bafe4ba879f96c2d17caefeb79f3fae2eea 21-Oct-2009 Fariborz Jahanian <fjahanian@apple.com> Code-gen for CXXZeroInitValueExpr AST passed
as argument to a function call. Removes a FIXME.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84694 91177308-0d34-0410-b5e6-96231b3b80d8
all-arg-zero-temp.cpp
40092972b591646b47037d2b46b695a4014df413 21-Oct-2009 Anders Carlsson <andersca@mac.com> Fix the 32-bit ABI to return structures with non-trivial copy ctors or dtors indirectly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84686 91177308-0d34-0410-b5e6-96231b3b80d8
eferences.cpp
9a2c8bb599a2460807e341182655a68515574124 20-Oct-2009 Anders Carlsson <andersca@mac.com> Force triple for test.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84589 91177308-0d34-0410-b5e6-96231b3b80d8
eferences.cpp
3759a0361ec00e03584cb6f9ce64fb1f1c947336 19-Oct-2009 Fariborz Jahanian <fjahanian@apple.com> Copy conversion of an expression to its base class
is a standard convesion and not a user-defined
conversion.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84525 91177308-0d34-0410-b5e6-96231b3b80d8
erived-to-base-conv.cpp
86aa0cdfd5aa7b099efbcd612a014d1b5f0ff799 19-Oct-2009 Anders Carlsson <andersca@mac.com> Handle emitting the assignment operator when the lhs is a reference. Fixes PR5227.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84518 91177308-0d34-0410-b5e6-96231b3b80d8
eferences.cpp
da921fd19fd496494365f9f2325c338e66216709 19-Oct-2009 Anders Carlsson <andersca@mac.com> Set the cast kind to CK_NoOp for C-style casts that are really const casts. Fixes PR5248.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84514 91177308-0d34-0410-b5e6-96231b3b80d8
asts.cpp
e1b7ea1b025c54b082f838ede2f483e657481fdc 19-Oct-2009 Anders Carlsson <andersca@mac.com> When binding a reference to a temporary, it's important that other temporaries created as on the RHS are destroyed before emitting the dtor for the temporary.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84451 91177308-0d34-0410-b5e6-96231b3b80d8
eferences.cpp
4fa26848acfbec29a748df4b58d6d654027b49c7 18-Oct-2009 Anders Carlsson <andersca@mac.com> When building a cast argument, make sure to bind the result to a temporary.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84448 91177308-0d34-0410-b5e6-96231b3b80d8
emporaries.cpp
fa4f55067bb62a61eb48f77b0216ab1bb1168d27 18-Oct-2009 Anders Carlsson <andersca@mac.com> Convert temporaries.cpp to using FileCheck.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84446 91177308-0d34-0410-b5e6-96231b3b80d8
emporaries.cpp
8dafd5fe87588f8abb0d4ba55dd1b232b9a1256f 18-Oct-2009 Anders Carlsson <andersca@mac.com> Rename temp-1.cpp to temporaries.cpp.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84443 91177308-0d34-0410-b5e6-96231b3b80d8
emp-1.cpp
emporaries.cpp
bb378cbf04e343fb15ae3611a153dde60671b514 18-Oct-2009 Anders Carlsson <andersca@mac.com> Use CK_BitCast for member function pointer casts. Fixes PR5138.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84438 91177308-0d34-0410-b5e6-96231b3b80d8
ember-function-pointers.cpp
329763b1e9ec8c216025e3a8379ed446d7372cbc 18-Oct-2009 Nuno Lopes <nunoplopes@sapo.pt> add support for codegening CXXZeroInitValueExprs

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84418 91177308-0d34-0410-b5e6-96231b3b80d8
efault-arg-temps.cpp
07ab20203fb4254f6152c9a7176732fe199adccd 17-Oct-2009 Sebastian Redl <sebastian.redl@getdesigned.at> When resolving the address of an overloaded function or function template, mark the result as referenced.

The most important effect of this is that function templates only referenced by address expressions now get instantiated. This, in turn, means that Hello World compiles with the Apache stdcxx library even when using endl.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84363 91177308-0d34-0410-b5e6-96231b3b80d8
ddress-of-fntemplate.cpp
759986e85990281ea741820822809ac57fd28c40 17-Oct-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Don't add implicit casts of explicit address-taking of overloaded functions.

Taking the address of an overloaded function with an explicit address-of operator wrapped the operator in an implicit cast that added yet another pointer level, leaving us with a corrupted AST, which crashed CodeGen in the test case I've added. Fix this by making FixOverloadedFunctionReference return whether there was an address-of operator and not adding the implicit cast in that case.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84362 91177308-0d34-0410-b5e6-96231b3b80d8
ddress-of-fntemplate.cpp
7804bcba90bf5ea8ec6cd0f6cc9a64577f1a9259 17-Oct-2009 Chris Lattner <sabre@nondot.org> Fix PR5211: codegen shouldn't assume that the result of ||/&& is int
anymore. In C++ it is bool.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84308 91177308-0d34-0410-b5e6-96231b3b80d8
xpr.cpp
93034ca3d025e948ddfcdd78868957efc70741a7 16-Oct-2009 Fariborz Jahanian <fjahanian@apple.com> Implement derived-to-base AST/code gen. There is a
FIXME in CGCXX.cpp that I would like Anders to
take a look at.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84265 91177308-0d34-0410-b5e6-96231b3b80d8
erived-to-base-conv.cpp
410f7640cfa7483132b1524138b1333b9fb9ab33 16-Oct-2009 Anders Carlsson <andersca@mac.com> Builtin types are subsitutable if they are qualified. Fixes PR5196.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84237 91177308-0d34-0410-b5e6-96231b3b80d8
angle-subst.cpp
b3f744252a460c45e2e77053491285978286c384 15-Oct-2009 Anders Carlsson <andersca@mac.com> Handle

struct A { };
struct B : A { };

void f() {
const A& a = B();
}

correctly. (This now does the offset conversion if necessary and calls the destructor when a goes out of scope).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84162 91177308-0d34-0410-b5e6-96231b3b80d8
eferences.cpp
54150d9b1d308334d40864c8d8d8d6d1a9da363e 14-Oct-2009 Mike Stump <mrs@apple.com> Testcase for recent checkin. WIP.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84123 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
3eea6350412eb7db13f0e2791c118920b36130a4 13-Oct-2009 Anders Carlsson <andersca@mac.com> Don't assume that the LHS and RHS of a member pointer expression is a DeclRefExpr. Fixes PR5177.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83986 91177308-0d34-0410-b5e6-96231b3b80d8
ember-function-pointers.cpp
d9878a181f09ffc76b61d430aa3a001102fda5af 13-Oct-2009 Mike Stump <mrs@apple.com> Refine handling for return value conversions with respect to virtual
offsets for covariant thunks.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83965 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
5db02476f6bce38bfe055edeeee9cc7deb83f0a5 12-Oct-2009 Anders Carlsson <andersca@mac.com> Fix test.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83888 91177308-0d34-0410-b5e6-96231b3b80d8
irtual-function-calls.cpp
4a0d832ecdc15b0667616d3ec570cade4761ceaf 12-Oct-2009 Anders Carlsson <andersca@mac.com> Even more devirtualization cleverness.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83886 91177308-0d34-0410-b5e6-96231b3b80d8
evirtualize-virtual-function-calls.cpp
cf5deecd7885b544f1197846897513858863e3af 12-Oct-2009 Anders Carlsson <andersca@mac.com> More devirtualization improvements.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83883 91177308-0d34-0410-b5e6-96231b3b80d8
evirtualize-virtual-function-calls.cpp
76366487694e92509f938164f384bbdfad002f2b 12-Oct-2009 Anders Carlsson <andersca@mac.com> Devirtualize calls on temporaries. A().f() for example.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83882 91177308-0d34-0410-b5e6-96231b3b80d8
evirtualize-virtual-function-calls.cpp
8e7670de19334eccfe9ac5fc70fa57015b1654c8 12-Oct-2009 Anders Carlsson <andersca@mac.com> Factor out devirtualization checking into a separate function and make it handle references correctly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83880 91177308-0d34-0410-b5e6-96231b3b80d8
evirtualize-virtual-function-calls.cpp
irtual-function-calls.cpp
3b89f3fa61b65b73f58808c037826c8333830313 12-Oct-2009 Anders Carlsson <andersca@mac.com> If the base type of a member call is a record type we don't need to emit a virtual call.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83816 91177308-0d34-0410-b5e6-96231b3b80d8
irtual-function-calls.cpp
76bee4b756badefda61ce867c757cc31b7afa12f 09-Oct-2009 Mike Stump <mrs@apple.com> Speed up testing by avoiding stdio.h, also helps testing on windows.
Patch by John Thompson.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83593 91177308-0d34-0410-b5e6-96231b3b80d8
redefined-expr.cpp
74d644abe56809d9bcea7311f37aa9063ab9e064 08-Oct-2009 Anders Carlsson <andersca@mac.com> If a global initializer has a non-trivial constructor or destructor, we never want to defer generation of it, even if it is declared static.

With this change we're finally able to compile and run the (infamous)

#include <string>
#include <iostream>

int main(int argc, char **argv) {
std::cout << "Hello, World" << std::endl;
}

$ clang hello.cpp -lstdc++ -o hello
$ ./hello
Hello, World



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83559 91177308-0d34-0410-b5e6-96231b3b80d8
lobal-init.cpp
a3f36ab6dd9567ae4d1f1703a8413df911b91863 08-Oct-2009 Anders Carlsson <andersca@mac.com> Port test over to FileCheck.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83558 91177308-0d34-0410-b5e6-96231b3b80d8
lobal-init.cpp
8f8fd8ea7e5c5d04f95a3cf4af95aa93225bc2b4 08-Oct-2009 Anders Carlsson <andersca@mac.com> Mangle std::basic_ostream<char, std::char_traits<char>> as So.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83557 91177308-0d34-0410-b5e6-96231b3b80d8
angle-subst-std.cpp
c4355b6883382b85cda3b7337587784dabf3450b 07-Oct-2009 Anders Carlsson <andersca@mac.com> Mangle anonymous structs/unions correctly. Fixes PR5139.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83448 91177308-0d34-0410-b5e6-96231b3b80d8
angle.cpp
edee783ed3edcd7fd988b9fb1dc58361a7e8f8a0 07-Oct-2009 Anders Carlsson <andersca@mac.com> Uncomment some commented out code.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83428 91177308-0d34-0410-b5e6-96231b3b80d8
irtual-base-cast.cpp
2f1986b557fa671c4f8c9dd0d071398edfc073d5 07-Oct-2009 Anders Carlsson <andersca@mac.com> Change GetAddressCXXOfBaseClass to use CXXBasePaths for calculating base class offsets. Fix the code to handle virtual bases as well.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83426 91177308-0d34-0410-b5e6-96231b3b80d8
irtual-base-cast.cpp
b217c1b9d2225521f4021984ad5a424784fa22bb 06-Oct-2009 Anders Carlsson <andersca@mac.com> When mangling names, always use the canonical decl. Fixes PR5144.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83420 91177308-0d34-0410-b5e6-96231b3b80d8
angle.cpp
65705d1d76bd4edca324a52eaf27ecb6e6a8151c 06-Oct-2009 Anders Carlsson <andersca@mac.com> Fix test.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83398 91177308-0d34-0410-b5e6-96231b3b80d8
irtual-function-calls.cpp
c33e4ba20304e222692e77f2c6ad26a5d8d32f83 06-Oct-2009 Anders Carlsson <andersca@mac.com> Emit the destructor epilogue in a cleanup block so a return from a destructor body still calls the epilogue.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83397 91177308-0d34-0410-b5e6-96231b3b80d8
estructor-calls.cpp
b299d3516d4722ef527b1070bb87133427e621a3 06-Oct-2009 Anders Carlsson <andersca@mac.com> Pass the right type to GetAddrOfFunction when getting functions for the VTable. Fixes PR5021.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83395 91177308-0d34-0410-b5e6-96231b3b80d8
irtual-function-calls.cpp
56fc0d18caf9c829647a5e3ce35197f0d7e0feee 06-Oct-2009 Fariborz Jahanian <fjahanian@apple.com> Refixed pr5086 by letting Expr::isNullPointerConstant
handle checking for a null pointer for a zero-valued
enumerator; moving the test case from CodeGen to Sema.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83350 91177308-0d34-0410-b5e6-96231b3b80d8
R5086-ambig-resolution-enum.cpp
fb51ddfafcd5f8536d0312b3daa3c0b74b90ab5b 06-Oct-2009 Mike Stump <mrs@apple.com> Ensure we have atleast 2-byte alignment for member functions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83337 91177308-0d34-0410-b5e6-96231b3b80d8
ttr.cpp
4c83f7cf500a5b91e58312922089d1e00f2bbf41 06-Oct-2009 Mike Stump <mrs@apple.com> Testcase for recent checkin.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83330 91177308-0d34-0410-b5e6-96231b3b80d8
ttr.cpp
375c31c4673f83f925de221752cf801c2fbbb246 03-Oct-2009 Anders Carlsson <andersca@mac.com> Implement code generation of member function pointer calls. Fixes PR5121.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83271 91177308-0d34-0410-b5e6-96231b3b80d8
ember-function-pointers.cpp
26bc220377705292a0519a71d3ea3aef68fcfec6 03-Oct-2009 Anders Carlsson <andersca@mac.com> Ignore No-op casts when evaluating lvalue expressions. Fixes PR5122.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83267 91177308-0d34-0410-b5e6-96231b3b80d8
eferences.cpp
a024d17048cd7fb71bfaee3876993ef2c27057be 03-Oct-2009 Anders Carlsson <andersca@mac.com> Teach AggExprEmitter about pointers to member functions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83266 91177308-0d34-0410-b5e6-96231b3b80d8
ember-function-pointers.cpp
2c51f092e4d75550f51b4dd6f831aa5e5e6ae928 03-Oct-2009 Anders Carlsson <andersca@mac.com> Handle base-to-derived casts of member function pointers in CGExprConstant.cpp

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83265 91177308-0d34-0410-b5e6-96231b3b80d8
ember-function-pointers.cpp
f57b4e44d03266f2ec1b427645555ed8952bc830 03-Oct-2009 Anders Carlsson <andersca@mac.com> Handle members to function pointers in CGExprConstant.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83264 91177308-0d34-0410-b5e6-96231b3b80d8
ember-function-pointers.cpp
ee383163a656a7e8d99efa4e5ee98c705c7fdf89 03-Oct-2009 Anders Carlsson <andersca@mac.com> Rewrite member function pointer test not to rely on -O2.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83262 91177308-0d34-0410-b5e6-96231b3b80d8
ember-function-pointers.cpp
f8c3ad7653697ae91634bda56cb0e3d6eac2ef45 02-Oct-2009 Fariborz Jahanian <fjahanian@apple.com> enumerator value of 0 is not a null pointer constant for
deciding const of null pointer conversion. Fixes PR5086.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83217 91177308-0d34-0410-b5e6-96231b3b80d8
R5086-ambig-resolution-enum.cpp
4513272f444c59705123ccb6207414ce62c9a568 01-Oct-2009 Douglas Gregor <dgregor@apple.com> CodeGen may see out-of-line declarations of the various special member
functions when they are explicitly declared, e.g., via a function
template specialization or explicit template instantiation
declaration. Don't try to synthesize bodies for the special member
functions in this case; rather, check whether we have an implicit
declaration and, if so, synthesize the appropriate function
body. Fixes PR5084.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83212 91177308-0d34-0410-b5e6-96231b3b80d8
estructors.cpp
249ceade4942a2a5d7888541c547abeda5bb85b4 01-Oct-2009 Fariborz Jahanian <fjahanian@apple.com> Patch to implement static casting which requires one
user-defined type conversion. Fixes PR5040.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83211 91177308-0d34-0410-b5e6-96231b3b80d8
ast-conversion.cpp
d69dd780866d8478516153870e8c3491c6eaa156 01-Oct-2009 Douglas Gregor <dgregor@apple.com> Fix a lame regression in IR gen for C++ delete expressions. PR5102

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83195 91177308-0d34-0410-b5e6-96231b3b80d8
elete.cpp
9aeed32282fe8a775c24c01c923717ca86695685 01-Oct-2009 John McCall <rjmccall@apple.com> Anonymous namespaces, sema + codegen. A lot of semantics are still broken,
apparently because using directives aren't quite working correctly.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83184 91177308-0d34-0410-b5e6-96231b3b80d8
nonymous-namespaces.cpp
fcd0029a4ccd1380e0148b846de3bd85d2fa8ab4 29-Sep-2009 Anders Carlsson <andersca@mac.com> Remove PR5061 workaround.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83046 91177308-0d34-0410-b5e6-96231b3b80d8
angle-subst-std.cpp
2472bf0a1735fa9c60a01946d5ed53b64c9c2422 29-Sep-2009 Anders Carlsson <andersca@mac.com> Handle CXXMemberCallExprs that point to a static method. Fixes PR5093.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83045 91177308-0d34-0410-b5e6-96231b3b80d8
R5093-static-member-function.cpp
7b69956387785006244e7868f8dab09b371dbb6d 29-Sep-2009 Anders Carlsson <andersca@mac.com> Forgot test.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83044 91177308-0d34-0410-b5e6-96231b3b80d8
ember-function-pointers.cpp
740256bafbba6c5b5cb95a5c5bd7db161f3b2833 29-Sep-2009 Mike Stump <mrs@apple.com> Fix http://llvm.org/PR5090.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83035 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
d8307b1033ef52a1ae640691bc45052fddb07a69 28-Sep-2009 Fariborz Jahanian <fjahanian@apple.com> Patch for AST representation for the implicit conversion to a function
reference/pointer. And a test case for code gen.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83000 91177308-0d34-0410-b5e6-96231b3b80d8
onvert-to-fptr.cpp
50755b0dcc81eed9dcf27abe9162527013f26bd4 27-Sep-2009 Anders Carlsson <andersca@mac.com> Mangle dependent name expressions. Fixes PR5063.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82915 91177308-0d34-0410-b5e6-96231b3b80d8
angle.cpp
e45117b945a0d8c1fdcc4cd8ee4500f5ee8742be 27-Sep-2009 Anders Carlsson <andersca@mac.com> Use mangleTemplatePrefix when we know that we're mangling a nested template name.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82912 91177308-0d34-0410-b5e6-96231b3b80d8
angle-subst.cpp
88599176d106453935a8fa984f690362cc48b470 27-Sep-2009 Anders Carlsson <andersca@mac.com> Look for substitutions when mangling TypenameTypes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82885 91177308-0d34-0410-b5e6-96231b3b80d8
angle-subst.cpp
0ccdf8d62cba2ad730001f133b6cc4836c42da83 27-Sep-2009 Anders Carlsson <andersca@mac.com> Better template parameter type mangling.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82883 91177308-0d34-0410-b5e6-96231b3b80d8
angle.cpp
f514b544b24926834adbfe8265a72ed8b9b09d81 27-Sep-2009 Anders Carlsson <andersca@mac.com> Mangle std::basic_string<char, std::char_traits<char>, std::allocator<char> > as Ss.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82882 91177308-0d34-0410-b5e6-96231b3b80d8
angle-subst-std.cpp
189d59cfc762d0f683b9253ddec2cf519ec85b65 27-Sep-2009 Anders Carlsson <andersca@mac.com> Mangle ::std::basic_string as Sb.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82881 91177308-0d34-0410-b5e6-96231b3b80d8
angle-subst-std.cpp
8c0315563f05a9face7209221325019e272075fb 27-Sep-2009 Anders Carlsson <andersca@mac.com> Mangle ::std::allocator as Sa.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82880 91177308-0d34-0410-b5e6-96231b3b80d8
angle-subst-std.cpp
aeb85374e92619b8e4ce92ac6e30756b5053a137 27-Sep-2009 Anders Carlsson <andersca@mac.com> Handle substitutions in mangleTemplatePrefix.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82879 91177308-0d34-0410-b5e6-96231b3b80d8
angle.cpp
e7c8cb6b2728aa98258288d221b09bc66cc05543 26-Sep-2009 Anders Carlsson <andersca@mac.com> Substitute "::std::" as "St".


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82874 91177308-0d34-0410-b5e6-96231b3b80d8
angle-subst-std.cpp
1668f2062b237ddb137f5d16388b3dea49651f85 26-Sep-2009 Anders Carlsson <andersca@mac.com> Don't crash when trying to mangle function templates.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82872 91177308-0d34-0410-b5e6-96231b3b80d8
angle.cpp
d99edc44300b36732a14c294c93899ba28d479ea 26-Sep-2009 Anders Carlsson <andersca@mac.com> Mangle record types as decls.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82843 91177308-0d34-0410-b5e6-96231b3b80d8
R5050-constructor-conversion.cpp
onstructor-default-arg.cpp
opy-assign-synthesis-1.cpp
opy-constructor-synthesis.cpp
angle-subst.cpp
ember-functions.cpp
ae3524866124021f3bc695886668254093c0793f 26-Sep-2009 Anders Carlsson <andersca@mac.com> Improve mangling of typename types.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82833 91177308-0d34-0410-b5e6-96231b3b80d8
angle.cpp
b3c477415f49668be7a770c8f44c217b42e3ccd3 25-Sep-2009 Fariborz Jahanian <fjahanian@apple.com> Refixed pr5050 per Anders comment. Test case enhanced
per Doug's comment.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82791 91177308-0d34-0410-b5e6-96231b3b80d8
R5050-constructor-conversion.cpp
7498e50aea92276fdd8aceb7076b4156ee6dbab4 25-Sep-2009 Fariborz Jahanian <fjahanian@apple.com> Fix the AST tree so ir-gen can do the conversion via copy construction.
Fixed pr5050.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82783 91177308-0d34-0410-b5e6-96231b3b80d8
R5050-constructor-conversion.cpp
8f489d692fedeafbb572103d6edca71d7762e83d 24-Sep-2009 Fariborz Jahanian <fjahanian@apple.com> patch to ir-gen conversion function call used in
initializing a reference class.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82664 91177308-0d34-0410-b5e6-96231b3b80d8
ecl-ref-init.cpp
018837b081bd1a725bae1c020eb1649975b04d67 23-Sep-2009 Anders Carlsson <andersca@mac.com> Handle namespace aliases.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82644 91177308-0d34-0410-b5e6-96231b3b80d8
amespace-aliases.cpp
6ac5fc49ee70b4e3ce3e242c02c66586f652d7ac 23-Sep-2009 Anders Carlsson <andersca@mac.com> Emit new[] cookie when needed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82642 91177308-0d34-0410-b5e6-96231b3b80d8
ew.cpp
a4d4c019bf477ce6ff7b01517e690f6c5fd6ad71 23-Sep-2009 Anders Carlsson <andersca@mac.com> Basic support for new[].

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82628 91177308-0d34-0410-b5e6-96231b3b80d8
ew.cpp
add28829c7a8d3c5da9ae140f18d3c9ad2d8b599 22-Sep-2009 Anders Carlsson <andersca@mac.com> CXXMethodDecls should always be mangled, even if they are inside an extern "C" block. Fixes PR5017.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82567 91177308-0d34-0410-b5e6-96231b3b80d8
angle.cpp
5cc58c6cfe4a6378287dbf92f9b1a23e133a6118 22-Sep-2009 Anders Carlsson <andersca@mac.com> Don't assert that linkage decls are always C++, it's not true. Fixes PR5019.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82557 91177308-0d34-0410-b5e6-96231b3b80d8
angle.cpp
d553f8c57fc77a46f6a1a1c90d7fd8f2d0e96073 21-Sep-2009 Anders Carlsson <andersca@mac.com> Start mangling expressions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82423 91177308-0d34-0410-b5e6-96231b3b80d8
angle.cpp
7482e247163978792654ca1a99913e19dd507e0a 18-Sep-2009 Anders Carlsson <andersca@mac.com> More mangling goodness.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82193 91177308-0d34-0410-b5e6-96231b3b80d8
angle.cpp
b251e9346e4ff0f995aa33c26f691406a70f0ed1 18-Sep-2009 Anders Carlsson <andersca@mac.com> Fix error in test.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82190 91177308-0d34-0410-b5e6-96231b3b80d8
angle.cpp
7624f219388f2434a4988ba2508a6ca7b57ba1c3 18-Sep-2009 Anders Carlsson <andersca@mac.com> Handle mangling of TemplateSpecializationType.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82189 91177308-0d34-0410-b5e6-96231b3b80d8
angle.cpp
d58d6f778de936516d8815783f2e88348c41dce4 17-Sep-2009 Anders Carlsson <andersca@mac.com> Ignore extern "C++" { } when mangling.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82146 91177308-0d34-0410-b5e6-96231b3b80d8
angle.cpp
068f347772fee0cdf66614230d7dba69cd3fa2e6 17-Sep-2009 Anders Carlsson <andersca@mac.com> Revert r82123 for now.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82125 91177308-0d34-0410-b5e6-96231b3b80d8
angle-subst.cpp
657094b1ad9c0806d64e96e3faf15e7fcb0e8d65 17-Sep-2009 Anders Carlsson <andersca@mac.com> Treat an unqualified RecordType as a RecordDecl when substituting.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82123 91177308-0d34-0410-b5e6-96231b3b80d8
angle-subst.cpp
6862fc720b8e35ee4408822b2390020f263646b2 17-Sep-2009 Anders Carlsson <andersca@mac.com> Substitution for prefixes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82122 91177308-0d34-0410-b5e6-96231b3b80d8
angle-extreme.cpp
angle-subst.cpp
7ed5ea9146cc0c61ab8ce94feff1153c2e8cd6db 17-Sep-2009 Anders Carlsson <andersca@mac.com> Convert mangle-subst.cpp over to using FileCheck.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82121 91177308-0d34-0410-b5e6-96231b3b80d8
angle-subst.cpp
03c9d530dbdcbb00b0b1ac0abced5dcce2e21408 17-Sep-2009 Anders Carlsson <andersca@mac.com> Substitute unscoped template names.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82119 91177308-0d34-0410-b5e6-96231b3b80d8
unction-template-specialization.cpp
angle.cpp
511ec0579593296d28f63a940847c38867329073 17-Sep-2009 Anders Carlsson <andersca@mac.com> Get rid of the last grep.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82115 91177308-0d34-0410-b5e6-96231b3b80d8
unction-template-specialization.cpp
9234b7ff2bb99479fb97d5faa181a55aacf28b78 17-Sep-2009 Anders Carlsson <andersca@mac.com> When mangling function template specialization, mangle the type encoding of the original function template. Also, port mangle.cpp and function-template-specialization.cpp over to using FileCheck.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82114 91177308-0d34-0410-b5e6-96231b3b80d8
unction-template-specialization.cpp
angle.cpp
7696737d41321cf20aef1aab1454872f2ff7a1c8 17-Sep-2009 Anders Carlsson <andersca@mac.com> Add basic substitution to the C++ mangler. It currently only looks at types.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82102 91177308-0d34-0410-b5e6-96231b3b80d8
unction-template-specialization.cpp
angle-extreme.cpp
angle-subst.cpp
cf85b933fef4ce827df83ef2d22c322ab2078aa5 17-Sep-2009 Anders Carlsson <andersca@mac.com> Add a simple const mangling test.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82096 91177308-0d34-0410-b5e6-96231b3b80d8
angle.cpp
0a8f847e97f40cce51dc69051b964732333dc028 16-Sep-2009 Anders Carlsson <andersca@mac.com> x86-64 ABI: If a type is a C++ record with either a non-trivial destructor or a non-trivial copy constructor, it should be passed in a pointer. Daniel, plz review.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82050 91177308-0d34-0410-b5e6-96231b3b80d8
86_64-arguments.cpp
71710113531a828679ce9b7deaca8d8df08c88da 15-Sep-2009 Anders Carlsson <andersca@mac.com> Add back the workaround since it lead to constructor conversion bugs :(

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81917 91177308-0d34-0410-b5e6-96231b3b80d8
R4983-constructor-conversion.cpp
8c12506ea0e9d2500f59c9865ff05ebdbae77f49 15-Sep-2009 Anders Carlsson <andersca@mac.com> Add test case.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81868 91177308-0d34-0410-b5e6-96231b3b80d8
onditional-expr-lvalue.cpp
aac6e3a6bbca5952263648e70cbd56d9f89cf4a2 15-Sep-2009 Anders Carlsson <andersca@mac.com> If a conversion operator exists in a base class, make sure to cast the object to that base class.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81852 91177308-0d34-0410-b5e6-96231b3b80d8
onversion-function.cpp
7f9e646b7ed47bc8e9a60031ad0c2b55031e2077 15-Sep-2009 Anders Carlsson <andersca@mac.com> Handle reinterpret_cast between integral types and pointer types.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81837 91177308-0d34-0410-b5e6-96231b3b80d8
einterpret-cast.cpp
c1eb14a66fdd955aff3f957a5843295f27952bdd 15-Sep-2009 Anders Carlsson <andersca@mac.com> Codegen support for nullptr from C++0x.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81835 91177308-0d34-0410-b5e6-96231b3b80d8
ullptr.cpp
b191e2dda9f4dc033cb21f9625a78fe80d4ac105 14-Sep-2009 Fariborz Jahanian <fjahanian@apple.com> Used visible conversion function api to do overload
resolution of type conversion functions in base and
current class.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81784 91177308-0d34-0410-b5e6-96231b3b80d8
onversion-function.cpp
283e4d59b8fe63e93f20b6ffb3a623a4f60a85ea 14-Sep-2009 Anders Carlsson <andersca@mac.com> If a function call returns a reference, don't bind it to a temporary.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81743 91177308-0d34-0410-b5e6-96231b3b80d8
emp-1.cpp
0a23d76999f838257f70bd43dc7f1e2242147609 13-Sep-2009 Daniel Dunbar <daniel@zuster.org> Don't use the PredefinedExpr string as the global variable name, these don't
make very nice symbols, just use the function name.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81653 91177308-0d34-0410-b5e6-96231b3b80d8
redefined-expr.cpp
0ee33cf81eb7e7e53a897efb772edf4d53af5bf1 12-Sep-2009 Anders Carlsson <andersca@mac.com> Handle CK_DerivedToBase when emitting lvalue casts.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81614 91177308-0d34-0410-b5e6-96231b3b80d8
erived-to-base.cpp
c7cba15f5fd86b96c03c57a1d307dde468f7399b 12-Sep-2009 Anders Carlsson <andersca@mac.com> Fix a crash when generating vtables that contain destructors.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81587 91177308-0d34-0410-b5e6-96231b3b80d8
table-cast-crash.cpp
9f185076dc8b79c8240b20a8746da96beb3f147b 11-Sep-2009 Douglas Gregor <dgregor@apple.com> Tweak the semantics of FunctionDecl::isOutOfLine to consider an
instantiation of a member function template or member function of a
class template to be out-of-line if the definition of that function
template or member function was defined out-of-line. This ensures that
we get the correct linkage for explicit instantiations of out-of-line
definitions.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81562 91177308-0d34-0410-b5e6-96231b3b80d8
xplicit-instantiation.cpp
d5d6778fb91d018cbd57456cae71289640ea8e66 11-Sep-2009 Sam Weinig <sam.weinig@gmail.com> Add test for dependent PredefinedExprs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81550 91177308-0d34-0410-b5e6-96231b3b80d8
redefined-expr-sizeof.cpp
1860a31edf826bc4001e153f1a8c10e17d97af87 11-Sep-2009 Anders Carlsson <andersca@mac.com> Pass the GlobalDecl to getMangledName, fixes PR4890.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81486 91177308-0d34-0410-b5e6-96231b3b80d8
R4890-debug-info-dtor.cpp
1eb4433ac451dc16f4133a88af2d002ac26c58ef 09-Sep-2009 Mike Stump <mrs@apple.com> Remove tabs, and whitespace cleanups.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81346 91177308-0d34-0410-b5e6-96231b3b80d8
onstructor-conversion.cpp
onstructor-default-arg.cpp
onstructor-for-array-members.cpp
onstructor-init.cpp
onstructor-template.cpp
onversion-function.cpp
opy-assign-synthesis-1.cpp
opy-constructor-elim.cpp
opy-constructor-synthesis.cpp
efault-constructor-for-members.cpp
efault-destructor-synthesis.cpp
ested-base-member-access.cpp
irt.cpp
3a082d81006e7a2e01a6e431a22e21c78490ff8f 08-Sep-2009 Anders Carlsson <andersca@mac.com> Vastly improve PredefinedExpr output, both in Sema and CodeGen. Patch by Sam Weinig!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81237 91177308-0d34-0410-b5e6-96231b3b80d8
redefined-expr.cpp
dec025b15c63e0353768e402ad1fd566d97d2be7 07-Sep-2009 Mike Stump <mrs@apple.com> Refine vcall offsets. Cleanups. WIP.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81143 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
d0e3daf2b980b505e535d35b432c938c6d0208ef 05-Sep-2009 Douglas Gregor <dgregor@apple.com> Improve the AST representation and semantic analysis for extern
templates. We now distinguish between an explicit instantiation
declaration and an explicit instantiation definition, and know not to
instantiate explicit instantiation declarations. Unfortunately, there
is some remaining confusion w.r.t. instantiation of out-of-line member
function definitions that causes trouble here.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81053 91177308-0d34-0410-b5e6-96231b3b80d8
xplicit-instantiation.cpp
34374e6ce5710a91c478f69379220ff20c3e7f15 04-Sep-2009 Fariborz Jahanian <fjahanian@apple.com> Patch to instantiate destructors used to destruct
base and data members when they are needed.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80967 91177308-0d34-0410-b5e6-96231b3b80d8
onstructor-template.cpp
9d436205be3e4c05854530134be61b46b13136ff 03-Sep-2009 Fariborz Jahanian <fjahanian@apple.com> Mark constructors used in initialization of base(s) and fields
as referecned with location where they are used. Still
need to look at destructor aspects of them.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80950 91177308-0d34-0410-b5e6-96231b3b80d8
onstructor-template.cpp
cf1b9c790ad9c944131e7150ef13e2d421f79e88 03-Sep-2009 Fariborz Jahanian <fjahanian@apple.com> Referenced instatiated default constructors
must be defined. Fixed pr4853.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80846 91177308-0d34-0410-b5e6-96231b3b80d8
onstructor-template.cpp
c186b8fe4a308b53569fe839a3224de70d92ab0e 02-Sep-2009 Anders Carlsson <andersca@mac.com> Fix an assertion when initializing a union using a member initializer. (We weren't casting from the union type to the initializer type correctly).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80837 91177308-0d34-0410-b5e6-96231b3b80d8
nonymous-union-member-initializer.cpp
a0d4b63d15138ca00e12df3c0573954b07ea40a8 02-Sep-2009 Anders Carlsson <andersca@mac.com> Fix a crash when referencing static data members.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80835 91177308-0d34-0410-b5e6-96231b3b80d8
tatic-data-member.cpp
f4b5f5c6a1487317aab9aa30d97bccfd57c82c98 02-Sep-2009 Anders Carlsson <andersca@mac.com> Fix a codegen crash when a class template has a constructor that does member initialization of an anonymous union.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80826 91177308-0d34-0410-b5e6-96231b3b80d8
emplate-anonymous-union-member-initializer.cpp
636a0ffbd2bda998236ddc9bb14b9222f7b49359 02-Sep-2009 Fariborz Jahanian <fjahanian@apple.com> Allow null initialization of scalara data members
in constructors's initializer list. pr4854



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80802 91177308-0d34-0410-b5e6-96231b3b80d8
rivial-constructor-init.cpp
74be00b83130859e589a72b8ab370317f4a9f095 02-Sep-2009 Mike Stump <mrs@apple.com> Testcase for recent checkin.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80725 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
faf86648bfab7e0fa975e2b32c10fe1d8b461e8c 01-Sep-2009 Anders Carlsson <andersca@mac.com> Handle member expressions that return references correctly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80723 91177308-0d34-0410-b5e6-96231b3b80d8
eferences.cpp
72f6d678c8de9f3a770e8ae5fc4979abf3940668 01-Sep-2009 Douglas Gregor <dgregor@apple.com> In CXXBaseOrMemberInitializer, don't confuse CtorTocall with
AnonUnionMember. Fixes PR4826.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80721 91177308-0d34-0410-b5e6-96231b3b80d8
onstructor-template.cpp
cb3c308ef0e63b2902911b985517309c26f975dc 01-Sep-2009 Anders Carlsson <andersca@mac.com> Use the correct cast kinds for bit casts and function to pointer decay. Fixes PR4827.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80720 91177308-0d34-0410-b5e6-96231b3b80d8
R4827-cast.cpp
174754cda4596f3bb2539df61ab2ab7a17aad6bf 01-Sep-2009 Anders Carlsson <andersca@mac.com> We can generate constructors/destructors with base classes and non-trivial fields just fine now.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80701 91177308-0d34-0410-b5e6-96231b3b80d8
estructors.cpp
c4c65f2b696cf7a29e31f98fad6b00493f724217 01-Sep-2009 Douglas Gregor <dgregor@apple.com> Move C++ test over to CodeGenCXX, since it requires CodeGen to reproduce

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80672 91177308-0d34-0410-b5e6-96231b3b80d8
verload-binop-implicitconvert.cpp
e3a97db45ac46adf963115d0266cfd3e6bc2dce8 29-Aug-2009 Eli Friedman <eli.friedman@gmail.com> Make IRGen for initializing a member reference work correctly.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80439 91177308-0d34-0410-b5e6-96231b3b80d8
onstructor-init-reference.cpp
383d29853331e4f6c0c720a1df9cab31f6ab3dba 29-Aug-2009 Fariborz Jahanian <fjahanian@apple.com> Patch to ir-gen user-defined conversions used in expressions
[12.3.2-p3]



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80436 91177308-0d34-0410-b5e6-96231b3b80d8
onversion-function.cpp
31976591dee494994f2546c72c23e1e35a9c1555 29-Aug-2009 Fariborz Jahanian <fjahanian@apple.com> Patch for code gen. for c-style cast which ends in
using class's conversion functions [12.3.2-p2]


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80433 91177308-0d34-0410-b5e6-96231b3b80d8
onversion-function.cpp
15a24e0e0737c3aa6f85fd18af64c3b6195454c3 29-Aug-2009 Mike Stump <mrs@apple.com> iGenerate vcalls as we build up the methods. WIP.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80405 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
7fe5d72fbc8605b60d42d32394248ea76cf763a0 29-Aug-2009 Fariborz Jahanian <fjahanian@apple.com> path to ir-gen 12.3.1 Conversion by constructor



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80398 91177308-0d34-0410-b5e6-96231b3b80d8
onstructor-conversion.cpp
d8417784e415cefba220c8fae5f6de4322a539de 28-Aug-2009 Fariborz Jahanian <fjahanian@apple.com> Test case for conversion type method call ir-gen.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80375 91177308-0d34-0410-b5e6-96231b3b80d8
onversion-function.cpp
bf3fe20f60eb3910a3717c638718ccdbe2e874c1 27-Aug-2009 Mike Stump <mrs@apple.com> Testcase for an almost recent checkin.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80189 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
63bb7c2b281c62a30233b1638ecd8fb4048a38c4 27-Aug-2009 Mike Stump <mrs@apple.com> Fixup codegen for static dispatch to a virtual function that was
almost correct. :-)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80181 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
f0070dbae9535836ad41711081465dec2259786b 26-Aug-2009 Mike Stump <mrs@apple.com> Implement virtual dispatch. :-) This is self-consistent with clang,
but not yet necessarily perfectly consistent with gcc. Also addressed
Doug and John's comments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80137 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
eb1a1b6df0ba8d6d42e16f056cf54a2c87780ffe 26-Aug-2009 Anders Carlsson <andersca@mac.com> Revert r80064 since it broke the build.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80066 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
78e7d3af10c861678127dc9befe5dcdef5d1baea 26-Aug-2009 Mike Stump <mrs@apple.com> Implement virtual dispatch. :-) This is self-consistent with clang, but not yet
necessarily perfectly consistent with gcc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80064 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
293361afd4199c92aabff9267fddea890943c586 25-Aug-2009 Anders Carlsson <andersca@mac.com> Emit conversion functions correctly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79985 91177308-0d34-0410-b5e6-96231b3b80d8
onversion-function.cpp
e9776247577715ad3a19461769a3488a445a8cbd 24-Aug-2009 Anders Carlsson <andersca@mac.com> Handle CK_NullToMemberPointer in ScalarExprEmitter::EmitCast

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79929 91177308-0d34-0410-b5e6-96231b3b80d8
ember-pointers-zero-init.cpp
55a759b8bb52e9d74c92e17543780751c5e5c5ec 23-Aug-2009 Daniel Dunbar <daniel@zuster.org> Fix a few tests to be -Asserts agnostic.
- Ugh.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79860 91177308-0d34-0410-b5e6-96231b3b80d8
ember-pointers-zero-init.cpp
d1a9bac24466831e089c8f330ec9264fb3ace367 23-Aug-2009 Anders Carlsson <andersca@mac.com> Handle CK_NullToMemberPointer casts in the constant expr emitter.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79790 91177308-0d34-0410-b5e6-96231b3b80d8
ember-pointers-zero-init.cpp
c28bbc2d2271aab6c5d79ef2758604221cd92a4b 22-Aug-2009 Fariborz Jahanian <fjahanian@apple.com> Patch to ir-gen copy assigning array members when synthesizing
a copy assignment operator function.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79681 91177308-0d34-0410-b5e6-96231b3b80d8
opy-assign-synthesis-1.cpp
eb0b6d556ff2b4a5053e89fd084eb34e44cea14c 21-Aug-2009 Fariborz Jahanian <fjahanian@apple.com> Patch to provide ir-gen support in copying array members
when synthesizing a copy constructor. Arrays's base element
may have a trivial or non-trivial copy constructor.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79653 91177308-0d34-0410-b5e6-96231b3b80d8
opy-constructor-synthesis.cpp
666a91edc949f5b52eeef481601e2a60de4fdebe 21-Aug-2009 Mike Stump <mrs@apple.com> Testcase for a recent checkin.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79646 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
64a54ad29929443006d4c8502173c163bedaa223 21-Aug-2009 Fariborz Jahanian <fjahanian@apple.com> Array member construction in prologue of user-declared
constructors.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79640 91177308-0d34-0410-b5e6-96231b3b80d8
onstructor-init.cpp
1633427f4e2eeb26e16652c407666df39b846993 21-Aug-2009 Mike Stump <mrs@apple.com> Fix typo.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79632 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
b9871a253d351e8776cfa5483d6330d5dffe4562 21-Aug-2009 Mike Stump <mrs@apple.com> We now support overriding base functions in vtables. WIP.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79587 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
6b48720ae0ae977ca052472562fadb498a6dcb6f 21-Aug-2009 Fariborz Jahanian <fjahanian@apple.com> Added member arrays to more tests now that ir-gen supports it.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79575 91177308-0d34-0410-b5e6-96231b3b80d8
efault-destructor-synthesis.cpp
1c536bf6bbb0cdc039cff754825b36f9abfe0629 21-Aug-2009 Fariborz Jahanian <fjahanian@apple.com> Patch to ir-gen destruction of array member elements in revers order
of their construction.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79571 91177308-0d34-0410-b5e6-96231b3b80d8
onstructor-for-array-members.cpp
b983744cccb7e2e5c2bc96de3dcc090ed17fa392 20-Aug-2009 Mike Stump <mrs@apple.com> Refine vbase offsets for the inductive case. Things are now starting
to come together nicely. Still a WIP.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79521 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
7fa0d93a3bbe290244f4f157078d9a0d6e87b44f 20-Aug-2009 Mike Stump <mrs@apple.com> Ensure we don't output repeated vbase offsets. I have a testcase for
this, but need to fixup the actual offset value before I can check it
in. WIP.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79506 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
995d2818a11395b15995694a30f842a0e4fdee4f 20-Aug-2009 Fariborz Jahanian <fjahanian@apple.com> Test case for my last patch plus a minor clean up.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79500 91177308-0d34-0410-b5e6-96231b3b80d8
onstructor-for-array-members.cpp
9c88d985f5e1ddef9b17feba79b90249510a9cb0 19-Aug-2009 Mike Stump <mrs@apple.com> Update for recent improvements.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79421 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
09765ece710f29dcdbd66eec361d60e53bd5a4fd 19-Aug-2009 Mike Stump <mrs@apple.com> Restore vbase offsets for classes without a primary.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79402 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
b46c92dfedf02239e7c73b9a18dcf09071731793 19-Aug-2009 Mike Stump <mrs@apple.com> Refine vcalls a little.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79400 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
0880bacf8fdb7de9d9c5b53b81ea0e53afccafb5 17-Aug-2009 Fariborz Jahanian <fjahanian@apple.com> Patch to 1) synthesizing non-trivial default destructor when
one is not provided by user. 2) More complete
emission of ctor prologue when it has no initializer
list or when it is synthesized.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79269 91177308-0d34-0410-b5e6-96231b3b80d8
efault-destructor-synthesis.cpp
60e282cc1e508be327b0481cecedc206873cb86a 16-Aug-2009 Anders Carlsson <andersca@mac.com> Improve handling of delete expressions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79205 91177308-0d34-0410-b5e6-96231b3b80d8
elete.cpp
fe3010d09cec5cd06e31a3d57fe188a04d9bfa17 16-Aug-2009 Mike Stump <mrs@apple.com> Refine vbase offset calculations. WIP.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79198 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
2d46eb21eb2c904831b0e9f75ab3523384c70e66 16-Aug-2009 Anders Carlsson <andersca@mac.com> Call MaybeBindToTemporary for overloaded binary and unary operators.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79173 91177308-0d34-0410-b5e6-96231b3b80d8
emp-1.cpp
a303f9eab9ceb356a24d84e178d079f0d41ad8d4 16-Aug-2009 Anders Carlsson <andersca@mac.com> Call MaybeBindToTemporary when constructing functino call operator calls.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79172 91177308-0d34-0410-b5e6-96231b3b80d8
emp-1.cpp
6f68027af2b6ce294a2706f23a1d3cb7ca1b8d37 16-Aug-2009 Anders Carlsson <andersca@mac.com> Add MaybeBindToTemporary calls for member call expressions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79171 91177308-0d34-0410-b5e6-96231b3b80d8
emp-1.cpp
ec74c5929c78bd1670619022f6cfd471becf65aa 16-Aug-2009 Anders Carlsson <andersca@mac.com> Make sure to call MaybeBindToTemporary when creating CallExprs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79168 91177308-0d34-0410-b5e6-96231b3b80d8
emp-1.cpp
4ec04c4e27b045f65541de7dffccbc04304a9b85 16-Aug-2009 Mike Stump <mrs@apple.com> Use the -NEXT feature of FileCheck.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79166 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
276b9f1d814f4f6551cc3000590759a34185d6da 16-Aug-2009 Mike Stump <mrs@apple.com> Cleanups and fixups for calculating the virtual base offsets. WIP.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79156 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
7a039eb88d03b35311cb2c99f84eb76634f37a71 16-Aug-2009 Anders Carlsson <andersca@mac.com> Add a simple test for temporaries.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79147 91177308-0d34-0410-b5e6-96231b3b80d8
emp-1.cpp
1d9b5efffaec2349f33510dee2cf2e90c3d2d6aa 15-Aug-2009 Fariborz Jahanian <fjahanian@apple.com> Improved on ir-gen for synthesis of non-trivial default
constructor body whose class has non-static data-members which
required non-trivial construction.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79125 91177308-0d34-0410-b5e6-96231b3b80d8
efault-constructor-for-members.cpp
343a3cf57ee950b024bade8b6b0a2b51663f43cd 14-Aug-2009 Fariborz Jahanian <fjahanian@apple.com> ir-gen for generation of trvial copy constructor
call.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79034 91177308-0d34-0410-b5e6-96231b3b80d8
opy-constructor-elim.cpp
929742338206eec29caa7c20e3c484cc79f18240 14-Aug-2009 Mike Stump <mrs@apple.com> Testcase for a recent checkin.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78974 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
bff10c52ca5041b331132233983157859c0aecdc 14-Aug-2009 Mike Stump <mrs@apple.com> Testcase for recent checkin.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78973 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
12de461664121da777cbec7d2e01c1b0bb730484 14-Aug-2009 Mike Stump <mrs@apple.com> Testcase for a recent checkin.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78972 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
183d7181fd59842ac969cbc6fe0376f85dc63ae4 14-Aug-2009 Fariborz Jahanian <fjahanian@apple.com> Fixed a bug in ir-gen for copy assignment synthesis.
Fixed a bug when evaluating those copy-assignments
which need by lazily syntheized. A test case
for these.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78965 91177308-0d34-0410-b5e6-96231b3b80d8
opy-assign-synthesis-1.cpp
788467852cfbd940c796537849db5beef20253e8 14-Aug-2009 Mike Stump <mrs@apple.com> Add testcase for recent work.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78959 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
4ef980984fd0e131fca3f9e6ba15e8a79cabf88c 14-Aug-2009 Mike Stump <mrs@apple.com> Refine vtable layout for virtual bases and keep better track of
primaries. WIP.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78950 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
eea0a5c6e347842fcfdd371f27c0e3b8fc644ee7 13-Aug-2009 Fariborz Jahanian <fjahanian@apple.com> Adds testing of copy assignment of anonymous union
data members.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78943 91177308-0d34-0410-b5e6-96231b3b80d8
opy-assign-synthesis.cpp
6dee5d81a6d43b1ff03fe47ab180a45bee44b371 13-Aug-2009 Fariborz Jahanian <fjahanian@apple.com> More complete test for my previous patch.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78941 91177308-0d34-0410-b5e6-96231b3b80d8
opy-assign-synthesis.cpp
ad25883a644dd6b52c7923dd128a7d05fb26213c 13-Aug-2009 Fariborz Jahanian <fjahanian@apple.com> Patch to force synthesis of copy assignment operator
function in the order according to c++03. ir-gen
for copy assignment in the trivial case and the first
test case.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78938 91177308-0d34-0410-b5e6-96231b3b80d8
opy-assign-synthesis.cpp
94d0bceeb3afd82293326261c793b45023fd3cab 13-Aug-2009 Mike Stump <mrs@apple.com> Refine virtual base layout. WIP.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78873 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
d76264e0b20470267249660ab947197cf6d6e31f 12-Aug-2009 Mike Stump <mrs@apple.com> Refine primary vbase selection ordering. WIP.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78844 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
34fae9cf27b19664f1f4526e195aff2299de2c40 12-Aug-2009 Mike Stump <mrs@apple.com> Improve the secondary vtables to not include vbase offsets. WIP.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78831 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
664f8934e06cf10de98083b4526aef7bce191a3f 12-Aug-2009 Dan Gohman <gohman@apple.com> Use the inbounds variant of getelementptr for common pointer arithmetic.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78756 91177308-0d34-0410-b5e6-96231b3b80d8
lobal-init.cpp
tatic-init.cpp
e64941280877d065a27e8cefd2a9038256d0e3ac 11-Aug-2009 Fariborz Jahanian <fjahanian@apple.com> ir-gen support for anonymous union data member
copying in copy constructors and used in
default constructor's initializer list.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78700 91177308-0d34-0410-b5e6-96231b3b80d8
opy-constructor-synthesis.cpp
49520944c688a9d5fc78d0c2af544b825873477b 11-Aug-2009 Mike Stump <mrs@apple.com> Implement more of the inductive case for vtable layout involving
virtual base primaries and improve the layout of classes with virtual
bases. WIP.

Hey, I've decided I want a change to FileCheck, I need to ensure that
the group is together, nothing in between. Can we change it to check
the match line is from the line immediately following the last matched
line, if the source for the matched line is immediately after the
source for the previously matched line?

// CHECK: 1
// CHECK: 2
// CHECK: 3

// CHECK: 4
// CHECK: 5
// CHECK: 6

would require 1 2 and 3 to be continuous in the output, and 4 5 and 6
to be continuous.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78638 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
f05fe65e64a5de93ba6d30e1b830fd0fc36358e9 10-Aug-2009 Fariborz Jahanian <fjahanian@apple.com> ir-gen for generating copying of scalar data members in
a synthesized copy constructor.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78580 91177308-0d34-0410-b5e6-96231b3b80d8
opy-constructor-synthesis.cpp
370c884d172329384973e452647fba0b2f5146d5 10-Aug-2009 Fariborz Jahanian <fjahanian@apple.com> Fixed a ir-gen bug in synthesizing copy constructors.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78570 91177308-0d34-0410-b5e6-96231b3b80d8
opy-constructor-synthesis.cpp
237957c45774713f81fbd5394b3db4317fef0938 09-Aug-2009 Anders Carlsson <andersca@mac.com> Improve handling of member pointers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78536 91177308-0d34-0410-b5e6-96231b3b80d8
ember-pointers-zero-init.cpp
942f4f33d02dba823594bd2d7b3d317cb01c74f8 09-Aug-2009 Fariborz Jahanian <fjahanian@apple.com> ir-gen for initialization, in synthesize copy constructor,
of base/field which have trivial copy constructor.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78516 91177308-0d34-0410-b5e6-96231b3b80d8
opy-constructor-synthesis.cpp
89ed31d3f9eeb8ec77c284a5cf404a74bf5e7acf 09-Aug-2009 Anders Carlsson <andersca@mac.com> Add support for global initializers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78515 91177308-0d34-0410-b5e6-96231b3b80d8
lobal-init.cpp
3b2e16b3d25f6b311dba2871e2a566c96238c3d2 08-Aug-2009 Anders Carlsson <andersca@mac.com> Refactor some code and implement support for global destructors for static variables.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78507 91177308-0d34-0410-b5e6-96231b3b80d8
tatic-init.cpp
824957643238ea1712b966deee9c65043ac6ffea 08-Aug-2009 Anders Carlsson <andersca@mac.com> Use CastExpr::CK_ArrayToPointerDecay and fix an assert.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78502 91177308-0d34-0410-b5e6-96231b3b80d8
rray-pointer-decay.cpp
57cf2f3abad1c3541cd388d9b7882d65cf6daa7c 07-Aug-2009 Mike Stump <mrs@apple.com> Add vbase offsets to the vtable. Wow, having an rbegin was so
fortuitous. WIP.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78413 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
928f1506eb38bb26a1284b876213a8f5244f6933 07-Aug-2009 Mike Stump <mrs@apple.com> Add ability to generate vcall offsets for primary virtual base.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78396 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
02cf1e264719b4dada4377cc8a43888cb66f8815 07-Aug-2009 Mike Stump <mrs@apple.com> Add support for vcall generation for vtables for virtual bases. WIP.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78357 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
dac64a51e37a68ca095634aac47a5f14746555e6 07-Aug-2009 Mike Stump <mrs@apple.com> Almost forgot to turn on 32-bit test.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78346 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
636548d0a3a83f51b8553132f8e1abafe66bb04b 06-Aug-2009 Mike Stump <mrs@apple.com> Testcase for recent checkin.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78344 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
e1be2b16a3a24acda0b63c3dcb4ae3384fcdaf75 06-Aug-2009 Mike Stump <mrs@apple.com> Also generate the rtti field for virtual bases for vtables. Turn on
rtti so we can properly test it. Refactor code a little. Still a
work in progress.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78343 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
70101ce87ff1d73ac90e4d99a3af0ae509e5934f 06-Aug-2009 Mike Stump <mrs@apple.com> Layout the primary base first in the vtable.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78327 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
8a12b564923a72224730a467007e61b5701e4aa7 06-Aug-2009 Mike Stump <mrs@apple.com> More layout for virtual tables for virtual bases. Still in progress.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78314 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
37148f4efb150c1ee862ce36a7468e83dbb0085d 06-Aug-2009 Mike Stump <mrs@apple.com> Let's remember we want better codegen for these.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78310 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
c5708d992fceb57e58673f628af4125662da60fd 06-Aug-2009 Mike Stump <mrs@apple.com> Testcase for a recent checkin for vbase layout ordering. I hate to
optimize and check for non-optimal code, but until the frontend is as
powerful as fold...


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78309 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
eb19fa948173502f47c26357c2ec41aa4be197b4 06-Aug-2009 Mike Stump <mrs@apple.com> Layout virtual bases. Work in progress.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78308 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
6904cbb1f21002317387e8fc7b14b7f8c09d198f 06-Aug-2009 Fariborz Jahanian <fjahanian@apple.com> Patch to optimize away copy constructor call when
appropriate.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78267 91177308-0d34-0410-b5e6-96231b3b80d8
opy-constructor-elim.cpp
2effeca6b4461c56c9b2d38778cd718be006f90e 06-Aug-2009 Mike Stump <mrs@apple.com> Fixup object layout when we have a primary base (it goes first). Start preping for
virtual base layout.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78265 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
26899b0cac15372ef76486e26769351c2cbb98d0 06-Aug-2009 Mike Stump <mrs@apple.com> Add another test for a recent checkin.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78253 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
6f376336138ea719e3c4757ae046a5768043b276 06-Aug-2009 Mike Stump <mrs@apple.com> Calculate the primary base class better and use that when laying down
the vtable. Still a work in progress.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78252 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
aed2b3e5f3a1f849ee864c2a12e8d6a1bf8150c5 05-Aug-2009 Fariborz Jahanian <fjahanian@apple.com> A blank line to separate the two blocks(per Mike comment).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78248 91177308-0d34-0410-b5e6-96231b3b80d8
onstructor-default-arg.cpp
b5bc3d6a052fcfe027e5de82bc8ef628efdf2d56 05-Aug-2009 Fariborz Jahanian <fjahanian@apple.com> Modified test case to use FileCheck.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78231 91177308-0d34-0410-b5e6-96231b3b80d8
onstructor-default-arg.cpp
caa499b50bd6d423d095b79aca857f1c57345a0a 05-Aug-2009 Fariborz Jahanian <fjahanian@apple.com> Handle destruction of temporaries used in default argument
construction of constructor calls.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78222 91177308-0d34-0410-b5e6-96231b3b80d8
efault-arg-temps.cpp
b2c352ed5586cf869a5dad87a528b9ac000d2fae 05-Aug-2009 Fariborz Jahanian <fjahanian@apple.com> Patch to improve ir-gen for constructors with default argument
expressions and a test case.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78213 91177308-0d34-0410-b5e6-96231b3b80d8
onstructor-default-arg.cpp
104ffaaa05d31d0a3dc886b7b18ebb2496bc2af4 04-Aug-2009 Mike Stump <mrs@apple.com> vtable building for simple inheritance. Still in progress.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78110 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
06758d0ea712795fe0ff5c2dee4b9a162569dfef 04-Aug-2009 Mike Stump <mrs@apple.com> Test cases for some recent work.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78100 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
6ca0b32227c21ba4bc66e8f1bdbf767b563567a8 03-Aug-2009 Fariborz Jahanian <fjahanian@apple.com> ir-gen for destructor calls.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77991 91177308-0d34-0410-b5e6-96231b3b80d8
estructor-calls.cpp
3dee6efcad9ad56d14f7edd1c29924f0b876a7f9 30-Jul-2009 Mike Stump <mrs@apple.com> Add ability to layout the vtable pointer in trivial cases. I noticed
that we would silently do bad things with virtual bases in the layout
code, so, we just turn them off. When people do better things with
them, we can turn them back on.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77556 91177308-0d34-0410-b5e6-96231b3b80d8
irt.cpp
c238a79a97ad35227a28acf16028ab63127c2fb7 30-Jul-2009 Fariborz Jahanian <fjahanian@apple.com> ir-gen for nested non-virtual base member access
in current class.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77554 91177308-0d34-0410-b5e6-96231b3b80d8
ested-base-member-access.cpp
98a541e80848d3b7d1131237ac04e698faffd151 29-Jul-2009 Fariborz Jahanian <fjahanian@apple.com> Patch to provide cast of objects in member access
excpression, if needed, and remove some ir-gen code
now unnencessary.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77490 91177308-0d34-0410-b5e6-96231b3b80d8
onstructor-init.cpp
1c698e0d4f9bf3d141c019d33d9040085a8a67dd 28-Jul-2009 Fariborz Jahanian <fjahanian@apple.com> More cleanup of data member access and then some.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77351 91177308-0d34-0410-b5e6-96231b3b80d8
onstructor-init.cpp
9e809e7da2448c08aa11f15be4680226754678ce 28-Jul-2009 Fariborz Jahanian <fjahanian@apple.com> More work toward data member access ir-gen.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77332 91177308-0d34-0410-b5e6-96231b3b80d8
onstructor-init.cpp
bc0a2226c7fcd18b29b6846049e2cfcb872d3593 27-Jul-2009 Owen Anderson <resistor@mac.com> Update for LLVM API change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77249 91177308-0d34-0410-b5e6-96231b3b80d8
unction-template-specialization.cpp
696798febaf1f69020cdf7474b91e71736c5aa69 27-Jul-2009 Anders Carlsson <andersca@mac.com> Use the CGRecordLayoutBuilder even if there are no fields, because in C++ an empty class will have a padding byte.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77205 91177308-0d34-0410-b5e6-96231b3b80d8
lass-layout.cpp
742cd1b7bb86b52b23b335d47abbd842dac0e1bf 25-Jul-2009 Fariborz Jahanian <fjahanian@apple.com> ir-gen for non-virtual base class initialization
in constructors.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77087 91177308-0d34-0410-b5e6-96231b3b80d8
onstructor-init.cpp
1fd2dd145d9bcdf0b8d60a88e1795b6ae83656f5 30-Jun-2009 Douglas Gregor <dgregor@apple.com> Improve code generation for function template specializations:
- Track implicit instantiations vs. the not-yet-supported explicit
specializations
- Give implicit instantiations of function templates (and member
functions of class templates) linkonce_odr linkage.
- Improve name mangling for function template specializations,
including the template arguments of the instantiation and the return
type of the function.

Note that our name-mangling is improved, but not correct: we still
don't mangle substitutions, although the manglings we produce can be
demangled.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74466 91177308-0d34-0410-b5e6-96231b3b80d8
unction-template-specialization.cpp
127102b5196ffe04bdb70fd553fe62c265ab10a9 29-Jun-2009 Douglas Gregor <dgregor@apple.com> Keep track of function template specializations, to eliminate
redundant, implicit instantiations of function templates and provide a
place where we can hang function template specializations.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74454 91177308-0d34-0410-b5e6-96231b3b80d8
unction-template-specialization.cpp
d7f37bf8b9a211455c5037df7b7e88e5a9510119 23-Jun-2009 Douglas Gregor <dgregor@apple.com> Implement implicit instantiation of the member functions of a class template
specialization. At present, all implicit instantiations occur at the
end of the translation unit.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73915 91177308-0d34-0410-b5e6-96231b3b80d8
mplicit-instantiation-1.cpp
f54741e6465692d3bdbae974ac3beeeab92e4a95 16-Jun-2009 Anders Carlsson <andersca@mac.com> Handle temporaries in default arguments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73462 91177308-0d34-0410-b5e6-96231b3b80d8
efault-arg-temps.cpp
36674d2978eb53962218ac67bb4d352cc287ea05 11-Jun-2009 Anders Carlsson <andersca@mac.com> Don't assert when generating code with static_asserts.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73208 91177308-0d34-0410-b5e6-96231b3b80d8
tatic-assert.cpp
215bd208d6eeff397bc4316d046ea8b4633efedf 01-Jun-2009 Anders Carlsson <andersca@mac.com> Fix a thinko.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72679 91177308-0d34-0410-b5e6-96231b3b80d8
ew.cpp
f11085398dc27c0010663c711d4a10113e41d70f 01-Jun-2009 Anders Carlsson <andersca@mac.com> Check for null correctly for new expressions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72678 91177308-0d34-0410-b5e6-96231b3b80d8
ew.cpp
d3fd6bad1249d3f34d71b73e2333fab0db51cce4 31-May-2009 Anders Carlsson <andersca@mac.com> Improve irgen of 'new' further.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72677 91177308-0d34-0410-b5e6-96231b3b80d8
ew.cpp
627a3e573f1d9f0429d62c7ceb742a21cdabfce0 31-May-2009 Anders Carlsson <andersca@mac.com> ...and aggregate POD types.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72676 91177308-0d34-0410-b5e6-96231b3b80d8
ew.cpp
3923e95280210ef877153f0c3dbab12d6ed2ad43 31-May-2009 Anders Carlsson <andersca@mac.com> Support for complex types.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72675 91177308-0d34-0410-b5e6-96231b3b80d8
ew.cpp
6d0ffad181215fc4ec0fca37c55eae82df6e0531 31-May-2009 Anders Carlsson <andersca@mac.com> Better support for scalar POD types in 'new' expressions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72674 91177308-0d34-0410-b5e6-96231b3b80d8
ew.cpp
d958389d52170be1c6dee93031d34b13809b786b 31-May-2009 Anders Carlsson <andersca@mac.com> Make sure to copy back arguments that can be changed by FindAllocationOverload. This fixes placement new. (Sebastian, please review).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72673 91177308-0d34-0410-b5e6-96231b3b80d8
ew.cpp
ed4e367f8e27d2c700efdaff9412f2bf83ddba00 31-May-2009 Anders Carlsson <andersca@mac.com> Very basic irgen support for new expressions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72672 91177308-0d34-0410-b5e6-96231b3b80d8
ew.cpp
2be586108bb401019647791feca19ea03fd477ce 30-May-2009 Eli Friedman <eli.friedman@gmail.com> Some small fixes for fields of reference type.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72636 91177308-0d34-0410-b5e6-96231b3b80d8
eference-field.cpp
1f65cd9291d580d4f57df5f850d19805e37c5b62 28-May-2009 Douglas Gregor <dgregor@apple.com> Add a target triple, because this test depends on details of the x86-64 ABI

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72503 91177308-0d34-0410-b5e6-96231b3b80d8
ember-functions.cpp
e70e8f7fef3efb3d526ee25b3a0e2a4bf67a04b6 27-May-2009 Anders Carlsson <andersca@mac.com> IRgen support for calls to functions that return references to aggregate exressions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72479 91177308-0d34-0410-b5e6-96231b3b80d8
eferences.cpp
50c39ea4858265f3f5f42a0c624557ce2281936b 27-May-2009 Eli Friedman <eli.friedman@gmail.com> Fix up constant expression handling to deal with the address
of a reference correctly.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72463 91177308-0d34-0410-b5e6-96231b3b80d8
eferences.cpp
4a18784dea763be146df68546e6dbf4233c33077 27-May-2009 Eli Friedman <eli.friedman@gmail.com> Add IRGen support for local variables of reference type.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72462 91177308-0d34-0410-b5e6-96231b3b80d8
eferences.cpp
d54b6ac2f4f6f0bd0076cbfa885b57277066f06c 27-May-2009 Eli Friedman <eli.friedman@gmail.com> Add IRGen support for return statements in functions with reference
type.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72459 91177308-0d34-0410-b5e6-96231b3b80d8
eferences.cpp
0f294632f36459174199b77699e339715244b5ab 27-May-2009 Anders Carlsson <andersca@mac.com> Handle operator call expressions where the callee is a member function.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72458 91177308-0d34-0410-b5e6-96231b3b80d8
ember-functions.cpp
e9f2f45fe9bf79bd4aea47fa1ad9204b68510fd9 27-May-2009 Anders Carlsson <andersca@mac.com> Functions that return references can be rvalues as well.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72457 91177308-0d34-0410-b5e6-96231b3b80d8
eferences.cpp
68ea78a093271301dc6396fc683644d8e13a90dd 27-May-2009 Anders Carlsson <andersca@mac.com> Add another test.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72450 91177308-0d34-0410-b5e6-96231b3b80d8
eferences.cpp
482656833a71b63f67f3e93ee8c2d45b3d351ca8 27-May-2009 Anders Carlsson <andersca@mac.com> Add support for emitting calls to functions that return references (as lvalues only for now)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72449 91177308-0d34-0410-b5e6-96231b3b80d8
eferences.cpp
aba43bb13b3aa3e81990989375fba3a902bfe1c2 26-May-2009 Douglas Gregor <dgregor@apple.com> Make sure that CodeGen sees template instantiations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72433 91177308-0d34-0410-b5e6-96231b3b80d8
xplicit-instantiation.cpp
5df0d426026b3820b5f0b13a8d4e60e9373d8d9d 20-May-2009 Eli Friedman <eli.friedman@gmail.com> Handle the remaining unhandled cases in EmitReferenceBindingToExpr.

It would be nice if someone could write an ObjC++ testcase for the case
of passing a property returning a struct to a function taking a const
reference.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72159 91177308-0d34-0410-b5e6-96231b3b80d8
eferences.cpp
7cd3a648b3d3057805c022b9470bbdfe21d732a5 20-May-2009 Anders Carlsson <andersca@mac.com> irgen for references to complex rvales (Very important...)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72157 91177308-0d34-0410-b5e6-96231b3b80d8
eferences.cpp
9f75e6be16b9df33d58ec73955b3e3e3c71b2682 20-May-2009 Anders Carlsson <andersca@mac.com> Bad anders.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72156 91177308-0d34-0410-b5e6-96231b3b80d8
eferences.cpp
38d068e8f13a119b89a3b8b0f79f35cab1ffd09a 20-May-2009 Anders Carlsson <andersca@mac.com> Create a temporary if the lvalue is a bitfield. Reported by Eli.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72155 91177308-0d34-0410-b5e6-96231b3b80d8
eferences.cpp
e04d1c77ae15a6e973e2fac7723f6c364884f58d 20-May-2009 Anders Carlsson <andersca@mac.com> Add support for binding references to scalar rvalues.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72153 91177308-0d34-0410-b5e6-96231b3b80d8
eferences.cpp
4bbab92167713bf4f79c0b14dcc4e83d08ac4019 20-May-2009 Anders Carlsson <andersca@mac.com> Bind references to lvalues correctly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72150 91177308-0d34-0410-b5e6-96231b3b80d8
eferences.cpp
c8667a866bfc1d9f807282f2de5644d6aa4e9423 19-May-2009 Anders Carlsson <andersca@mac.com> Improve support for irgen of references.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72133 91177308-0d34-0410-b5e6-96231b3b80d8
eferences.cpp
0e650017acdbbeb0c590e77bbea88c200ea1caef 17-May-2009 Anders Carlsson <andersca@mac.com> Add support for converting member pointer types to LLVM types. Also mangle pointer to member functions correctly and add tests.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71981 91177308-0d34-0410-b5e6-96231b3b80d8
angle.cpp
2928c2107f2e0007f35fe1c224aab63535f1403d 16-May-2009 Anders Carlsson <andersca@mac.com> extern "C" should preserve the 'extern' qualifier for VarDecls. Fixes 6853728.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71957 91177308-0d34-0410-b5e6-96231b3b80d8
xtern-c.cpp
angle.cpp
167b824ce1947bf71ec8a71296daa2c54ebe58df 15-May-2009 Anders Carlsson <andersca@mac.com> A C++ member function always has either weak linkage (if it's inline or defined inline) or strong linkage (other cases).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71873 91177308-0d34-0410-b5e6-96231b3b80d8
ember-functions.cpp
7a0ba875a7dcee94ec74fa79b7f8a247d200a76c 15-May-2009 Anders Carlsson <andersca@mac.com> Name mangling for class template specializations and template arguments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71861 91177308-0d34-0410-b5e6-96231b3b80d8
angle.cpp
b4880bab7fc1b61267cfd9a0ad52188e7a828cb3 12-May-2009 Chris Lattner <sabre@nondot.org> push GlobalDecl through enough of the CodeGenModule interfaces
to allow us to support generation of deferred ctors/dtors.
It looks like codegen isn't emitting a call to the dtor in
member-functions.cpp:test2, but when it does, its body should
get emitted.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71594 91177308-0d34-0410-b5e6-96231b3b80d8
ember-functions.cpp
0c337ed63ff0f04fd8315afabb2d7a51969fdc97 12-May-2009 Chris Lattner <sabre@nondot.org> add an initial stab at emitting deferred c++ inline functions. This handles static
functions and methods declared inline, but not ctors/dtors or methods not declared
inline (apparently my previous patch wasn't good enough).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71591 91177308-0d34-0410-b5e6-96231b3b80d8
ember-functions.cpp
4d150c84514dbf15975960a3ea46bdf6b7f16a5b 30-Apr-2009 Chris Lattner <sabre@nondot.org> only support int128_t on 64-bit and larger targets. 32-bit targets don't
have support for __divti3 and friends.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70480 91177308-0d34-0410-b5e6-96231b3b80d8
angle.cpp
2df9ced9fd1e8c7d7b38443db07e0e811de22571 30-Apr-2009 Chris Lattner <sabre@nondot.org> initial support for __[u]int128_t, which should be basically
compatible with VC++ and GCC. The codegen/mangling angle hasn't
been fully ironed out yet. Note that we accept int128_t even in
32-bit mode, unlike gcc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70464 91177308-0d34-0410-b5e6-96231b3b80d8
angle.cpp
283a062a633d6e868aa2be319da812341fe73728 13-Apr-2009 Anders Carlsson <andersca@mac.com> Use the new guard variable mangling function and get rid of the old code.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68971 91177308-0d34-0410-b5e6-96231b3b80d8
angle.cpp
1e5dc6e12ccda4e783c67fa9ae11be419d7b0573 11-Apr-2009 Anders Carlsson <andersca@mac.com> Add support for generating reference initialization code.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68852 91177308-0d34-0410-b5e6-96231b3b80d8
onst-init.cpp
e9918d2443ad524e0f488e8f15d9bce4e7373cd1 08-Apr-2009 Anders Carlsson <andersca@mac.com> We weren't generating correct code for calls to variadic member functions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68635 91177308-0d34-0410-b5e6-96231b3b80d8
ember-functions.cpp
2b77ba8bc7a842829ad9193816dc1d7d5e9c5be6 04-Apr-2009 Anders Carlsson <andersca@mac.com> Add some basic support for generating C++ member functions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68425 91177308-0d34-0410-b5e6-96231b3b80d8
ember-functions.cpp
1b42c794481f6f958267e4ba913d74fef43161f6 02-Apr-2009 Anders Carlsson <andersca@mac.com> Implement mangling of declarations inside functions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68321 91177308-0d34-0410-b5e6-96231b3b80d8
angle.cpp
329749c1ec1ead3c41af52260f1203e4991b4e83 02-Apr-2009 Anders Carlsson <andersca@mac.com> Mangle VarDecls correctly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68320 91177308-0d34-0410-b5e6-96231b3b80d8
angle.cpp
91e20dd8bf1bc8980ee93839383d2bd170bce050 02-Apr-2009 Anders Carlsson <andersca@mac.com> Emit code for linkage specifications.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68300 91177308-0d34-0410-b5e6-96231b3b80d8
angle.cpp
984e06874685396ca2cb51f0008cfff7c9b3d9c6 01-Apr-2009 Anders Carlsson <andersca@mac.com> Implement code generation of namespaces and add mangling tests.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68170 91177308-0d34-0410-b5e6-96231b3b80d8
angle.cpp
c6c91bc019ff7fa09f6570025ba011aad4c0d004 01-Apr-2009 Anders Carlsson <andersca@mac.com> Fix a mangling bug where functions with no arguments weren't getting the 'v' parameter specifier.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68162 91177308-0d34-0410-b5e6-96231b3b80d8
angle.cpp
d7d5f0223bd30dfd618762349c6209dd1d5ea3e6 24-Mar-2009 Daniel Dunbar <daniel@zuster.org> Rename clang to clang-cc.

Tests and drivers updated, still need to shuffle dirs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67602 91177308-0d34-0410-b5e6-96231b3b80d8
_null.cpp
xpr.cpp
angle.cpp
4843e584b54460973b8445d38907bab0401ebb0c 10-Mar-2009 Anders Carlsson <andersca@mac.com> Address Doug's comments wrt the mangler and fix Eli's test case

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66549 91177308-0d34-0410-b5e6-96231b3b80d8
angle.cpp
b1d947b1011cb559be5745153f292b2dfb46b8e6 08-Mar-2009 Anders Carlsson <andersca@mac.com> Make mangling work with anonymous tag types. Doug, please review

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66353 91177308-0d34-0410-b5e6-96231b3b80d8
angle.cpp
5f2bfd4811996abb783aa6c7254c56baa6930e8c 13-Feb-2009 Douglas Gregor <dgregor@apple.com> Add basic support for C++ name mangling according to the Itanium C++
ABI to the CodeGen library. Since C++ code-generation is so
incomplete, we can't exercise much of this mangling code. However, a
few smoke tests show that it's doing the same thing as GCC. When C++
codegen matures, we'll extend the ABI tester to verify name-mangling
as well, and complete the implementation here.

At this point, the major client of name mangling is in the uses of the
new "overloadable" attribute in C, which allows overloading. Any
"overloadable" function in C (or in an extern "C" block in C++) will
be mangled the same way that the corresponding C++ function would be
mangled.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64413 91177308-0d34-0410-b5e6-96231b3b80d8
angle.cpp
32f6209ea9a5a88ad3f8d7ad5e5b160b403d12da 12-Jan-2009 Nuno Lopes <nunoplopes@sapo.pt> make ScalarExprEmitter::EmitCompare() emit the expression with the correct type instead of always zext it to an int
this fixes codegen of simple exprs in C++ like 'if (x != 0)'

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62060 91177308-0d34-0410-b5e6-96231b3b80d8
xpr.cpp
3f70456b8adb0405ef2a47d51f9fc2d5937ae8ae 21-Dec-2008 Anders Carlsson <andersca@mac.com> Add codegen support for __null

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