Anders Carlsson
940f02d248
Clean up code generation of typeid expressions and add C++ standard references.
...
llvm-svn: 129682
2011-04-18 00:57:03 +00:00
Anders Carlsson
bbe277c4a9
Use EmitCallOrInvoke in EmitBadTypeidCall and EmitBadCastCall.
...
llvm-svn: 129424
2011-04-13 02:35:36 +00:00
Anders Carlsson
0c63350b0b
If there's an invoke destination, we should use invoke instead of call when calling the __cxa_bad_typeid function. Fixes PR7400.
...
llvm-svn: 129273
2011-04-11 14:13:40 +00:00
John McCall
2d2e870745
More __unknown_anytype work.
...
llvm-svn: 129269
2011-04-11 07:02:50 +00:00
Anders Carlsson
c1c9971cab
When we know that a dynamic_cast always returns null, we can make
...
CodeGenFunction::EmitDynamicCast always return null or throw a bad_cast
exception.
llvm-svn: 129264
2011-04-11 01:45:29 +00:00
Anders Carlsson
882d790f72
Clean up CodeGenFunction::EmitDynamicCast. No functionality change.
...
llvm-svn: 129262
2011-04-11 00:46:40 +00:00
Anders Carlsson
98981b10c8
Replace a couple of Builder.CreateICmpEQ with Builder.CreateIsNull. No functionality change.
...
llvm-svn: 129261
2011-04-11 00:30:07 +00:00
Anders Carlsson
c53d9e8350
Strip off parens and no-op casts when deciding if an expr can be devirtualized. Fixes the second half of PR9660.
...
llvm-svn: 129253
2011-04-10 18:20:53 +00:00
Eli Friedman
db42a3e876
Make sure we or together the overflow flags of the multiply and add, so the
...
check is triggered appropriately. Reported on cfe-dev.
llvm-svn: 129231
2011-04-09 19:54:33 +00:00
Jay Foad
20c0f02cc5
Remove PHINode::reserveOperandSpace(). Instead, add a parameter to
...
PHINode::Create() giving the (known or expected) number of operands.
llvm-svn: 128538
2011-03-30 11:28:58 +00:00
Sebastian Redl
31ad754c96
Instead of storing an ASTContext* in FunctionProtoTypes with computed noexcept specifiers, unique FunctionProtoTypes with a ContextualFoldingSet, as suggested by John McCall.
...
llvm-svn: 127568
2011-03-13 17:09:40 +00:00
Sebastian Redl
fa453cfdc3
Propagate the new exception information to FunctionProtoType.
...
Change the interface to expose the new information and deal with the enormous fallout.
Introduce the new ExceptionSpecificationType value EST_DynamicNone to more easily deal with empty throw specifications.
Update the tests for noexcept and fix the various bugs uncovered, such as lack of tentative parsing support.
llvm-svn: 127537
2011-03-12 11:50:43 +00:00
John McCall
32ea969415
Use a slightly more semantic interface for emitting call arguments.
...
llvm-svn: 127494
2011-03-11 20:59:21 +00:00
John McCall
75f9498a7c
The conditional needs to be pushed before the branch. Make the test less
...
trivial to check this. Adjust for style.
llvm-svn: 127151
2011-03-07 03:12:35 +00:00
John McCall
f7dcf320a7
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.
llvm-svn: 127147
2011-03-07 01:52:56 +00:00
Tilmann Scheller
99cc30c371
Revert "Add CC_Win64ThisCall and set it in the necessary places."
...
This reverts commit 126863.
llvm-svn: 126886
2011-03-02 21:36:49 +00:00
Tilmann Scheller
454464b491
Add CC_Win64ThisCall and set it in the necessary places.
...
llvm-svn: 126863
2011-03-02 19:36:23 +00:00
John McCall
ad7c5c1657
Reorganize CodeGen{Function,Module} to eliminate the unfortunate
...
Block{Function,Module} base class. Minor other refactorings.
Fixed a few address-space bugs while I was there.
llvm-svn: 125085
2011-02-08 08:22:06 +00:00
Fariborz Jahanian
7f6f81ba9b
Clean up of -fapple-kext abi code. No change otherwise.
...
llvm-svn: 124807
2011-02-03 19:27:17 +00:00
Fariborz Jahanian
265c325ef3
-fapple-kext support for indirect call to virtuals dtors - wip.
...
llvm-svn: 124701
2011-02-01 23:22:34 +00:00
Anders Carlsson
6b3afd7df1
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.
...
llvm-svn: 124528
2011-01-29 05:04:11 +00:00
Anders Carlsson
1ae64c5a9d
When calling a virtual member function on a base class and the most derived class is marked 'final', we can devirtualize the call.
...
llvm-svn: 124524
2011-01-29 03:52:01 +00:00
Fariborz Jahanian
9f9438b314
More work to support -fapple-kext regarding
...
indirect vf calls and addition of extra entry
at bottom of vtbls.
llvm-svn: 124507
2011-01-28 23:42:29 +00:00
John McCall
ed1ae86ac6
Move all the cleanups framework code into a single file.
...
Pure motion.
llvm-svn: 124484
2011-01-28 11:13:47 +00:00
John McCall
cb5f77f046
Reorganize the value-dominance metaprogram and introduce a specialization
...
for CodeGen's RValue type.
llvm-svn: 124483
2011-01-28 10:53:53 +00:00
John McCall
e4df6c8d96
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.
llvm-svn: 124481
2011-01-28 08:37:24 +00:00
John McCall
284c48fff6
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
llvm-svn: 124373
2011-01-27 09:37:56 +00:00
Anders Carlsson
1eb95961d3
Use attributes for all the override control specifiers.
...
llvm-svn: 124122
2011-01-24 16:26:15 +00:00
Anders Carlsson
19588aa40b
Get rid of the [[final]] C++0x attribute.
...
llvm-svn: 124083
2011-01-23 21:07:30 +00:00
Fariborz Jahanian
252a47f635
Move cheking of kext into canDevirtualizeMemberFunctionCalls().
...
Improve on test case. Per Doug's comment. wip.
llvm-svn: 123954
2011-01-21 01:04:41 +00:00
Fariborz Jahanian
47609b088c
apple kext abi requires all vf calls, including qualified
...
vf calls, be made indirect. This patch is towards that goal.
llvm-svn: 123922
2011-01-20 17:19:02 +00:00
Ken Dyck
705ba07ef0
Replace calls to getTypeSize() and getTypeAlign() with their 'InChars'
...
counterparts where char units are needed.
llvm-svn: 123805
2011-01-19 01:58:38 +00:00
Francois Pichet
6422579411
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.
llvm-svn: 123735
2011-01-18 05:04:39 +00:00
Benjamin Kramer
acc6b4e2fd
Simplify mem{cpy, move, set} creation with IRBuilder.
...
llvm-svn: 122634
2010-12-30 00:13:21 +00:00
Jay Foad
6d4db0c885
PR5207: Change APInt methods trunc(), sext(), zext(), sextOrTrunc() and
...
zextOrTrunc(), and APSInt methods extend(), extOrTrunc() and new method
trunc(), to be const and to return a new value instead of modifying the
object in place.
llvm-svn: 121121
2010-12-07 08:25:34 +00:00
John McCall
5d41378146
Rename CXXExprWithTemporaries -> ExprWithCleanups; there's no theoretical
...
reason this is limited to C++, and it's certainly not limited to temporaries.
llvm-svn: 120996
2010-12-06 08:20:24 +00:00
John McCall
e26a872b02
Remove some defensive calls to EmitLoadOfPropertyRefLValue that shouldn't
...
be required, and then fix up some missing loads on overloaded-operator
paths which that exposed.
llvm-svn: 120896
2010-12-04 08:14:53 +00:00
John McCall
f3eb96fccf
Kill the KVC l-value kind and calculate the base expression when emitting
...
the l-value.
llvm-svn: 120884
2010-12-04 02:32:38 +00:00
Fariborz Jahanian
50198098b9
IR Gen. part of API support for __block cxx
...
objects imported into blocks. //rdar://8594790.
Will have a test case coming (as well as one
sent to llvm test suite).
llvm-svn: 120713
2010-12-02 17:02:11 +00:00
Chandler Carruth
99da11cf04
Silence an unused variable warning during release builds by folding the
...
expression into the assert.
llvm-svn: 119143
2010-11-15 13:54:43 +00:00
Fariborz Jahanian
e988bdac44
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.
llvm-svn: 119011
2010-11-13 21:53:34 +00:00
Anders Carlsson
b00c2144b3
Also devirtualize calls to a member functions where the containing class has been marked final.
...
llvm-svn: 117445
2010-10-27 13:34:43 +00:00
Anders Carlsson
a7911fa3d7
If a virtual member function has the 'final' attribute, we can devirtualize calls to it.
...
llvm-svn: 117444
2010-10-27 13:28:46 +00:00
Dan Gohman
8fc50c296a
Factor out the code for emitting code to load vtable pointer members
...
so that it's done in one place.
llvm-svn: 117386
2010-10-26 18:44:08 +00:00
Fariborz Jahanian
c123623d28
After discussion with Doug and John, I am reverting
...
the patch.
llvm-svn: 117159
2010-10-22 22:05:03 +00:00
Fariborz Jahanian
0196aa28ec
Patch fixes miscompile with non-trivial copy constructors and
...
statement expressions, //rdar: //8540501
llvm-svn: 117146
2010-10-22 21:01:02 +00:00
Devang Patel
401c916c8a
Delay record type's debug info emission, in -flimit-debug-info mode, if member expression's base is call expr.
...
llvm-svn: 117127
2010-10-22 18:56:27 +00:00
Benjamin Kramer
fb5e584151
More class anonymization.
...
llvm-svn: 117106
2010-10-22 16:48:22 +00:00
Devang Patel
91bbb5547d
Introduce -flimit-debug-info.
...
In this experimental mode try avoiding debug info emission for classes as much as possible. The goal is to reduce size of produced debuginfo without reducing quality of debug info in general. This is a work in progress.
llvm-svn: 115188
2010-09-30 19:05:55 +00:00
Douglas Gregor
ec3bec0c7a
Kill FunctionDecl's IsCopyAssignment bit; it duplicated what could
...
already be determined by isCopyAssignmentOperator(), and was set too
late in the process for all clients to see the appropriate
value. Cleanup only; no functionality change.
llvm-svn: 114916
2010-09-27 22:37:28 +00:00