Chris Lattner
0e62c1cc0b
remove unneeded llvm:: namespace qualifiers on some core types now that LLVM.h imports
...
them into the clang namespace.
llvm-svn: 135852
2011-07-23 10:55:15 +00:00
Jay Foad
040dd82f44
Convert IRBuilder::CreateGEP and IRBuilder::CreateInBoundsGEP to use
...
ArrayRef.
llvm-svn: 135761
2011-07-22 08:16:57 +00:00
Chris Lattner
2192fe50da
de-constify llvm::Type, patch by David Blaikie!
...
llvm-svn: 135370
2011-07-18 04:24:23 +00:00
Jay Foad
5bd375a6cc
Convert CallInst and InvokeInst APIs to use ArrayRef.
...
llvm-svn: 135265
2011-07-15 08:37:34 +00:00
Benjamin Kramer
8d375cef55
Change intrinsic getter to take an ArrayRef, now that the underlying function in LLVM does.
...
llvm-svn: 135155
2011-07-14 17:45:50 +00:00
John McCall
97eab0a271
Okay, that rule about zero-length arrays applies to destroying
...
them, too.
llvm-svn: 135038
2011-07-13 08:09:46 +00:00
John McCall
6549b31fe9
Arrays are permitted to be zero-length in some situations.
...
llvm-svn: 135036
2011-07-13 07:37:11 +00:00
John McCall
f677a8e99e
Convert the standard default-construction loops to use phis and
...
partial destruction.
llvm-svn: 135033
2011-07-13 06:10:41 +00:00
John McCall
ca2c56f20b
Switch delete[] IR-generation over to the destroy framework,
...
which implicitly makes it EH-safe as well.
llvm-svn: 135025
2011-07-13 01:41:37 +00:00
Douglas Gregor
1c2e20d73d
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.
llvm-svn: 135021
2011-07-13 00:54:47 +00:00
John McCall
30317fda63
Generalize Cleanup::Emit's "isForEH" parameter into a set
...
of flags. No functionality change.
llvm-svn: 134997
2011-07-12 20:27:29 +00:00
Chris Lattner
a5f58b05e8
clang side to match the LLVM IR type system rewrite patch.
...
llvm-svn: 134831
2011-07-09 17:41:47 +00:00
John McCall
1553b19067
Restore correct use of GC barriers.
...
llvm-svn: 133144
2011-06-16 04:16:24 +00:00
John McCall
31168b077c
Automatic Reference Counting.
...
Language-design credit goes to a lot of people, but I particularly want
to single out Blaine Garst and Patrick Beard for their contributions.
Compiler implementation credit goes to Argyrios, Doug, Fariborz, and myself,
in no particular order.
llvm-svn: 133103
2011-06-15 23:02:42 +00:00
Douglas Gregor
6ab2fa8f78
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>.
llvm-svn: 131735
2011-05-20 16:38:50 +00:00
John McCall
7ec4b4342c
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.
llvm-svn: 131395
2011-05-16 01:05:12 +00:00
John McCall
036f2f6b35
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.
llvm-svn: 131378
2011-05-15 07:14:44 +00:00
Alexis Hunt
f479f1b7e4
Rename "hasTrivialConstructor" to "hasTrivialDefaultConstructor" and
...
modify the semantics slightly to accomodate default constructors (I
hope).
llvm-svn: 131087
2011-05-09 18:22:59 +00:00
Anders Carlsson
c36783e8b9
Move code to emit the callee of an CXXOperatorCallExpr out into a separate function in CGClass.cpp
...
llvm-svn: 131075
2011-05-08 20:32:23 +00:00
Cameron Esfahani
bceca20ab9
Fix false positive warning about uninitialized variable.
...
llvm-svn: 131019
2011-05-06 21:28:42 +00:00
Alexis Hunt
271c36811d
Fix delegating constructors stylistic issues.
...
Material bugfixes to come this afternoon.
llvm-svn: 130782
2011-05-03 20:19:28 +00:00
Eli Friedman
f4258eb484
Switch CallArgList from an std::pair to a new CallArg struct (which will eventually gain more members). Working towards modifying call emission to avoid unnecessary copies.
...
llvm-svn: 130700
2011-05-02 18:05:27 +00:00
Eli Friedman
43dca6a8d2
Simplify code a bit by using CallArgList::add. No intended functionality change.
...
llvm-svn: 130699
2011-05-02 17:57:46 +00:00
Alexis Hunt
61bc173784
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.
llvm-svn: 130642
2011-05-01 07:04:31 +00:00
Argyrios Kyrtzidis
03535265ef
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.
llvm-svn: 130453
2011-04-28 22:57:55 +00:00
John McCall
0009fcc39e
Make yet another placeholder type, this one marking that an expression is a bound
...
member function, i.e. something of the form 'x.f' where 'f' is a non-static
member function. Diagnose this in the general case. Some of the new diagnostics
are probably worse than the old ones, but we now get this right much more
universally, and there's certainly room for improvement in the diagnostics.
llvm-svn: 130239
2011-04-26 20:42:42 +00:00
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