Anders Carlsson
ca4a5459d8
Use the right definition when emitting a global variable. Fixes PR5564.
...
llvm-svn: 94555
2010-01-26 17:43:42 +00:00
Anders Carlsson
d6b21e4842
If a global variable has an initializer with side effects, it can never be deferred (even if it's in an anonymous namespace).
...
llvm-svn: 94525
2010-01-26 06:15:16 +00:00
Anders Carlsson
0b5f1ddf0a
Fix another debug info crash with virtual bases.
...
llvm-svn: 94520
2010-01-26 05:26:39 +00:00
Anders Carlsson
17ed0496c5
Fix the test I broke, and also fix a crash when declaring a virtual destructor. Add debug info support for pure virtual member functions.
...
llvm-svn: 94519
2010-01-26 05:19:50 +00:00
Anders Carlsson
20bbbd489b
Make sure to always mark a global variable as not being constant if it has a C++ initializer.
...
llvm-svn: 94504
2010-01-26 04:02:23 +00:00
Mike Stump
77537b136e
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.
llvm-svn: 94499
2010-01-26 03:42:22 +00:00
Mike Stump
90181eb294
Fixup a missing vcall entry. WIP.
...
llvm-svn: 94478
2010-01-26 00:05:04 +00:00
Fariborz Jahanian
210031b79c
Fix a code gen. bug involving compiling global references.
...
(fixes radar 7574896).
llvm-svn: 94434
2010-01-25 18:30:26 +00:00
Alexis Hunt
aecc45cb3c
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.
llvm-svn: 94352
2010-01-24 03:04:27 +00:00
Anders Carlsson
60ddba67a8
Fix a nasty bug where temporaries weren't marked as being conditional in some cases.
...
llvm-svn: 94341
2010-01-24 00:20:05 +00:00
Mike Stump
0978af83b3
Insulate these from changes to the default for -Wunreachable-code.
...
llvm-svn: 94326
2010-01-23 20:12:18 +00:00
Benjamin Kramer
20bac07abb
Adjust testcase for recent AsmPrinter changes, sigh.
...
llvm-svn: 94307
2010-01-23 10:15:32 +00:00
Daniel Dunbar
c766b8a1f4
Fix a FIXME, this test folds to a constant now.
...
llvm-svn: 94263
2010-01-23 00:26:29 +00:00
Mike Stump
1891698a9b
Fixup the rest of the testcases to grep the .ll file instead of the .s
...
file, and add FIXMEs to the remaining broken tests.
llvm-svn: 94238
2010-01-22 22:37:17 +00:00
Mike Stump
3cd08d9df7
Convert more testcases to checking the .ll file instead of the .s file.
...
llvm-svn: 94229
2010-01-22 22:06:55 +00:00
Mike Stump
0a2754ed8a
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.
llvm-svn: 94208
2010-01-22 20:27:17 +00:00
Mike Stump
9eb76d47f2
Ensure we output all non-virtual base vtables. Fixes PR5890.
...
llvm-svn: 94163
2010-01-22 06:45:05 +00:00
Benjamin Kramer
2067816b3a
Revert r94073, it fails in Release-Asserts builds.
...
llvm-svn: 94089
2010-01-21 18:14:21 +00:00
Benjamin Kramer
d2eba45be3
Match branch labels with the trailing colon so we don't accidentally match something else.
...
llvm-svn: 94073
2010-01-21 15:19:14 +00:00
Chris Lattner
5e536d85ad
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??
llvm-svn: 93998
2010-01-20 07:45:09 +00:00
Anders Carlsson
07894e8a0e
More VTT builder fixes. With these fixes we now correctly handle the very complex VTT example from the Itanium ABI spec.
...
llvm-svn: 93725
2010-01-18 17:13:59 +00:00
Anders Carlsson
1af3df854f
Fix a bunch of VTT layout bugs, add simple tests for VTT layout.
...
llvm-svn: 93709
2010-01-18 04:25:18 +00:00
Anders Carlsson
25933d4ecd
Update virt.cpp for changes to the LLVM asm printer (?) This test should really be all LLVM IR...
...
llvm-svn: 93707
2010-01-18 03:58:13 +00:00
Eli Friedman
8fdc2cb46a
Fix crash generating debug info for constructor for anonymous struct.
...
llvm-svn: 93601
2010-01-16 00:43:13 +00:00
Eli Friedman
1fcf66b0dd
Make the AST explicitly represent the cast of the first operand of a
...
pointer-to-member operator.
llvm-svn: 93592
2010-01-16 00:00:48 +00:00
Eli Friedman
cab014721b
Fix a couple bugs in copy assignment operator synthesis.
...
llvm-svn: 93546
2010-01-15 20:06:11 +00:00
Mike Stump
fc4daba5e0
Fix Release-Asserts for the time being.
...
llvm-svn: 93493
2010-01-15 00:50:35 +00:00
Mike Stump
6f0bf82622
Fix Release-Asserts.
...
llvm-svn: 93353
2010-01-13 21:23:04 +00:00
Mike Stump
8521f06ced
Fix for Release-Assert.
...
llvm-svn: 93348
2010-01-13 20:58:35 +00:00
Mike Stump
2f7b246a47
Fix for Release-Asserts.
...
llvm-svn: 93347
2010-01-13 20:57:29 +00:00
Mike Stump
5c1e7259f1
Fix Release-Asserts.
...
llvm-svn: 93346
2010-01-13 20:43:31 +00:00
Chandler Carruth
04bdce6407
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.
llvm-svn: 93252
2010-01-12 20:32:25 +00:00
Chris Lattner
bb8976e36e
implement codegen support for preinc as an lvalue, PR5514.
...
llvm-svn: 93076
2010-01-09 21:44:40 +00:00
Eli Friedman
5866fe306d
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.
llvm-svn: 92976
2010-01-08 00:50:11 +00:00
Nuno Lopes
950d5b2cd3
fix PR5869: mangle static symbols like gcc does to make it easier to diff symbol tables
...
llvm-svn: 92911
2010-01-07 09:36:51 +00:00
Douglas Gregor
3a08dcc156
Test linkage of typeinfo and typeinfo names for class templates
...
llvm-svn: 92897
2010-01-07 04:09:30 +00:00
Douglas Gregor
d01472beee
Revert my available_externally vtables experiment. It's breaking the LLVM-with-Clang build with linker errors that I have yet to investigate.
...
llvm-svn: 92822
2010-01-06 04:50:56 +00:00
Douglas Gregor
1a68ab6c83
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.
llvm-svn: 92779
2010-01-05 21:40:05 +00:00
Douglas Gregor
a318efd1f2
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.
llvm-svn: 92753
2010-01-05 19:06:31 +00:00
Anders Carlsson
a0b025e40f
When emitting member function pointers, use the canonical decl if the member function is virtual. Fixes PR5940.
...
llvm-svn: 92680
2010-01-05 05:04:05 +00:00
Eli Friedman
50f6aa11cf
Improve coverage for test.
...
llvm-svn: 92440
2010-01-03 01:20:41 +00:00
Anders Carlsson
e36a6b3e44
Correctly pass VTT parameters to constructors and destructors. The VTTs aren't yet used in the ctors/dtors, but that will follow.
...
llvm-svn: 92409
2010-01-02 01:01:18 +00:00
Anders Carlsson
2d21394190
If the key function of a record is inline, then the RTTI data should have weak_odr linkage.
...
llvm-svn: 92371
2009-12-31 19:36:25 +00:00
Anders Carlsson
bc7def9850
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.
...
llvm-svn: 92361
2009-12-31 17:44:32 +00:00
Anders Carlsson
a442499072
Fix a bunch of bugs with VMI RTTI building, and add a whole bunch of tests.
...
llvm-svn: 92319
2009-12-30 23:47:56 +00:00
Anders Carlsson
1e4cd33f13
Add base class checks.
...
llvm-svn: 92286
2009-12-30 01:29:05 +00:00
Anders Carlsson
a4bbe58c3b
Add more vtable tests.
...
llvm-svn: 92285
2009-12-30 01:25:42 +00:00
Anders Carlsson
ac2f681777
More RTTI cleanup, test that RTTI classes have the correct vtables.
...
llvm-svn: 92284
2009-12-30 01:00:12 +00:00
Anders Carlsson
ef88695860
Handle enum types as well.
...
llvm-svn: 92276
2009-12-29 22:13:01 +00:00
Anders Carlsson
26cf4ab8e2
Fix function type RTTI linkage and add tests.
...
llvm-svn: 92266
2009-12-29 20:20:19 +00:00
Sam Weinig
b999f68ed9
Fix for PR5871. Make __PRETTY_FUNCTION__ work for member functions defined in a class local to a function.
...
llvm-svn: 92200
2009-12-28 03:19:38 +00:00
Eli Friedman
e513c6af97
Fix runline.
...
llvm-svn: 92174
2009-12-27 05:59:41 +00:00
Eli Friedman
847a2bce04
Fix PointerExprEvaluator::VisitCastExpr so it doesn't misfold C++ casts which
...
it doesn't know how to fold, like derived-to-base casts.
llvm-svn: 92173
2009-12-27 05:43:15 +00:00
Sam Weinig
4e83bd2795
Fix for PR5872. Add static specifier and const/volatile qualifiers to member functions in __PRETTY_FUNCTION__ predefined expressions.
...
llvm-svn: 92171
2009-12-27 01:38:20 +00:00
Eli Friedman
fddc26cc64
Make copy constructor elimination work in more cases; the case in question
...
here affects clang-on-clang.
llvm-svn: 92151
2009-12-24 23:33:34 +00:00
Sam Weinig
07d211ea40
Fix for PR5844. Be explicit about anonymous struct/class/union/namespaces in __PRETTY_FUNCTION__ predefined expression.
...
llvm-svn: 92149
2009-12-24 23:15:03 +00:00
Douglas Gregor
363b151ff7
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...
llvm-svn: 92135
2009-12-24 18:51:59 +00:00
Douglas Gregor
f82bead3fd
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.
llvm-svn: 92131
2009-12-24 17:16:46 +00:00
Anders Carlsson
a88d197284
Mangle block pointer types. Fixes PR5858.
...
llvm-svn: 92069
2009-12-23 22:31:44 +00:00
Douglas Gregor
247894b361
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.
llvm-svn: 92064
2009-12-23 22:04:40 +00:00
Douglas Gregor
f45f6828c6
Remove cv-qualifiers from the argument to typeid
...
llvm-svn: 92041
2009-12-23 20:51:04 +00:00
Anders Carlsson
910847c149
Mangle template template parameters. Fixes PR5861.
...
llvm-svn: 92030
2009-12-23 19:30:55 +00:00
Douglas Gregor
19fc0b753a
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.
llvm-svn: 91932
2009-12-22 22:47:22 +00:00
Anders Carlsson
8a35c7982c
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).
llvm-svn: 91893
2009-12-22 06:36:32 +00:00
Daniel Dunbar
3780f0b680
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.
llvm-svn: 91874
2009-12-22 01:19:25 +00:00
Douglas Gregor
4141d5bea2
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.
llvm-svn: 91861
2009-12-22 00:21:20 +00:00
Anders Carlsson
9a98ac993f
Add tests for structs inside anonymous namespaces.
...
llvm-svn: 91806
2009-12-21 00:57:38 +00:00
Anders Carlsson
2b7f444366
Incomplete structs should also have internal linkage.
...
llvm-svn: 91805
2009-12-21 00:41:42 +00:00
Anders Carlsson
18e6ee1b20
Correcly handle pointers to member pointer types where the class or the pointee is incomplete.
...
llvm-svn: 91804
2009-12-20 23:37:55 +00:00
Anders Carlsson
d008129f34
Rework the way pointer types are handled by the RTTI builder. We now get the right linkage for indirect pointers to incomplete structs.
...
llvm-svn: 91799
2009-12-20 22:30:54 +00:00
Douglas Gregor
a4b592a7d5
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.
llvm-svn: 91750
2009-12-19 03:01:41 +00:00
Anders Carlsson
6fda43f4c1
Correctly initialize the PrimaryBaseInfo if a base is null. Fixes PR5832.
...
llvm-svn: 91748
2009-12-19 02:13:41 +00:00
Eli Friedman
357e8c94d6
Fix for PR5524: make reference binding in default argument work correctly.
...
llvm-svn: 91733
2009-12-19 00:20:10 +00:00
Eli Friedman
726b878574
Test for r91724.
...
llvm-svn: 91730
2009-12-18 23:42:55 +00:00
Anders Carlsson
0087bc851c
Fix regression I introduced when dynamic_cast-ing to a reference type.
...
llvm-svn: 91687
2009-12-18 14:55:04 +00:00
Anders Carlsson
b396f43520
It's perfectly fine to see UserDefinedConversion casts when emitting scalar expressions.
...
llvm-svn: 91686
2009-12-18 14:42:03 +00:00
Douglas Gregor
e1314a64b8
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.
llvm-svn: 91669
2009-12-18 05:02:21 +00:00
Sean Callanan
12ca3f46d8
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
llvm-svn: 91640
2009-12-18 00:04:09 +00:00
Nuno Lopes
641fdce235
revert part of my last patch, and mark only the c++ global new operator as noalias. the rest will be infered by llvm optz
...
llvm-svn: 91600
2009-12-17 10:15:49 +00:00
Anders Carlsson
539e584c3c
Attempt to fix rtti-layout.cpp on Linux.
...
llvm-svn: 91581
2009-12-17 04:57:25 +00:00
Anders Carlsson
dc9b9cf7b1
Add a (currently failing) RTTI layout test.
...
llvm-svn: 91580
2009-12-17 04:41:05 +00:00
Douglas Gregor
8cdc2e0590
Fix test case to unbreak testing
...
llvm-svn: 91551
2009-12-16 19:18:40 +00:00
Douglas Gregor
4f4b186215
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.
llvm-svn: 91548
2009-12-16 18:50:27 +00:00
Anders Carlsson
d681a29ac0
Baby steps towards fixing PR5589. If a class needs a vtable pointer, add one.
...
llvm-svn: 91545
2009-12-16 17:27:20 +00:00
Nuno Lopes
13c88c7269
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
llvm-svn: 91543
2009-12-16 16:59:22 +00:00
Anders Carlsson
07863b8b6e
Use GetAddrOfRTTI everywhere and remove GenerateRTTI and GenerateRTTIRef. With this change, we can now compile and link TableGen.
...
llvm-svn: 91520
2009-12-16 07:05:41 +00:00
Anders Carlsson
18ada9856f
Handle ImplicitValueInitExpr in AggExprEmitter.
...
llvm-svn: 91519
2009-12-16 06:57:54 +00:00
Anders Carlsson
b7e93e268f
Mangle CXXOperatorCallExprs, fixes PR5796.
...
llvm-svn: 91507
2009-12-16 05:48:46 +00:00
Daniel Dunbar
5618e98f33
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).
llvm-svn: 91460
2009-12-15 22:01:24 +00:00
Daniel Dunbar
8fbe78f6fc
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).
llvm-svn: 91446
2009-12-15 20:14:24 +00:00
Eli Friedman
2151725325
Fix a small bug in ComputeMethodVtableIndices.
...
llvm-svn: 91411
2009-12-15 03:31:17 +00:00
Eli Friedman
8d83842761
Really fix this test.
...
llvm-svn: 91409
2009-12-15 03:22:41 +00:00
Eli Friedman
a2761ba52f
Fix test broken by my last commit.
...
llvm-svn: 91396
2009-12-15 02:20:06 +00:00
Douglas Gregor
db121bad2a
When rebuilding CXXConstructExprs after a transformation, use
...
CompleteConstructorCall to perform type-checking.
llvm-svn: 91279
2009-12-14 16:27:04 +00:00
Anders Carlsson
e66e2942fc
Mangle unary, binary and ternary expressions correctly.
...
llvm-svn: 91257
2009-12-14 01:45:37 +00:00
Eli Friedman
b095e15af4
Fix for PR5714: make sure globals that will be modified aren't marked const.
...
llvm-svn: 91156
2009-12-11 21:23:03 +00:00
Eli Friedman
3ace52b3a7
Fix linkage of type info and vtable for classes without linkage.
...
llvm-svn: 91152
2009-12-11 20:48:18 +00:00
Eli Friedman
75c9b97123
Make sure mangling doesn't crash in another case. Add some more tests.
...
llvm-svn: 91149
2009-12-11 20:21:38 +00:00
Eli Friedman
30e94d047e
Fix for PR5706: let mangleName deal with mangling names without identifiers
...
correctly.
llvm-svn: 91136
2009-12-11 18:00:57 +00:00
Anders Carlsson
b41a5c9308
XFAIL this for now, fixing linkage bugs causes the order of globals to change. Will fix later today.
...
llvm-svn: 91130
2009-12-11 17:01:29 +00:00