History log of /llvm-project-15.0.7/clang/lib/CodeGen/CGExpr.cpp (Results 901 – 925 of 1262)
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
# 04775f84 26-Jun-2010 Anders Carlsson <[email protected]>

Change EmitReferenceBindingToExpr to take a decl instead of a boolean.

llvm-svn: 106949


# 280e61f1 21-Jun-2010 Anders Carlsson <[email protected]>

Fix an Obj-C++ miscompile when calling an Obj-C method that returns a C++ reference.

llvm-svn: 106477


# 64cda8b5 17-Jun-2010 Fariborz Jahanian <[email protected]>

objective-C++ IRGen: property reference as an
lvalue when performing a derived-to-base conversion.
Fixes radar 7501812. Added an executable test to
llvm-test suite.

llvm-svn: 106247


# 9240f3da 17-Jun-2010 Fariborz Jahanian <[email protected]>

Objective-c++ IRGen. Support for @selector expression as
an lvalue. Fixes PR7390.

llvm-svn: 106235


# 8509824c 15-Jun-2010 Chandler Carruth <[email protected]>

Move CodeGenOptions.h *back* into Frontend. This should have been done when the
dependency edge was reversed such that CodeGen depends on Frontend.

llvm-svn: 106065


# c0964b60 22-May-2010 Anders Carlsson <[email protected]>

Re-land the fix for PR7139.

llvm-svn: 104446


# aae38d66 22-May-2010 Douglas Gregor <[email protected]>

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

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.

llvm-svn: 104434

show more ...


# c866eb5b 21-May-2010 Anders Carlsson <[email protected]>

Unbreak self-host.

llvm-svn: 104390


# da1641cd 21-May-2010 Anders Carlsson <[email protected]>

Rename CodeGenFunction::EmitMemSetToZero to EmitNullInitialization. Handle setting null data member pointers correctly. Fixes PR7139.

llvm-svn: 104387


# c4094935 21-May-2010 John McCall <[email protected]>

When emitting an lvalue for an anonymous struct or union member during
class initialization, drill down through an arbitrary number of anonymous
records.

llvm-svn: 104310


# 7c38f153 20-May-2010 Douglas Gregor <[email protected]>

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
derive

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.

llvm-svn: 104219

show more ...


# 8b07ec25 15-May-2010 John McCall <[email protected]>

Substantially alter the design of the Objective C type AST by introducing
ObjCObjectType, which is basically just a pair of
one of {primitive-id, primitive-Class, user-defined @class}
with
a list

Substantially alter the design of the Objective C type AST by introducing
ObjCObjectType, which is basically just a pair of
one of {primitive-id, primitive-Class, user-defined @class}
with
a list of protocols.
An ObjCObjectPointerType is therefore just a pointer which always points to
one of these types (possibly sugared). ObjCInterfaceType is now just a kind
of ObjCObjectType which happens to not carry any protocols.

Alter a rather large number of use sites to use ObjCObjectType instead of
ObjCInterfaceType. Store an ObjCInterfaceType as a pointer on the decl rather
than hashing them in a FoldingSet. Remove some number of methods that are no
longer used, at least after this patch.

By simplifying ObjCObjectPointerType, we are now able to easily remove and apply
pointers to Objective-C types, which is crucial for a certain kind of ObjC++
metaprogramming common in WebKit.

llvm-svn: 103870

show more ...


# 2d2623c7 11-May-2010 Fariborz Jahanian <[email protected]>

Minor refactoring of my last patch.

llvm-svn: 103475


# 43a40f93 10-May-2010 Fariborz Jahanian <[email protected]>

Objective-C++ Code gen. Handle code gen. for property
reference dot-syntax notation in a varierty of cases.
Fixes radar 7964490.

llvm-svn: 103440


# f8a71f08 02-May-2010 Anders Carlsson <[email protected]>

Add the same 'ForVirtualBase' parameter to EmitCXXDestructorCall.

llvm-svn: 102882


Revision tags: llvmorg-2.7.0
# 8a64c1c9 24-Apr-2010 Anders Carlsson <[email protected]>

Change CodeGenFunction::GetAddressOfDerivedClass to take a BasePath.

llvm-svn: 102273


# c6eaea70 24-Apr-2010 Anders Carlsson <[email protected]>

Convert more call sites over to the new GetAddressOfBaseClass.

llvm-svn: 102272


# 914af218 23-Apr-2010 Douglas Gregor <[email protected]>

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.

llvm-svn: 102170


# 2e6567ae 22-Apr-2010 John McCall <[email protected]>

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-construc

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.

llvm-svn: 102039

show more ...


# 2188696d 21-Apr-2010 John McCall <[email protected]>

Miscellaneous codegen cleanups. Mostly, don't create new basic blocks
just to save the current insertion state! This change significantly
simplifies the IR CFG in exceptions code.

llvm-svn: 101996


# 4d55b2d0 19-Apr-2010 Fariborz Jahanian <[email protected]>

Some renaming of methods, fixes typo
(related to PR6769).

llvm-svn: 101794


# 3fef72f0 18-Apr-2010 Fariborz Jahanian <[email protected]>

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.

llvm-svn: 101756


# 8345a70c 17-Apr-2010 Anders Carlsson <[email protected]>

Fix an assert when assigning a boolean value to a bitfield of type _Bool.

llvm-svn: 101678


# 67aba79b 15-Apr-2010 Daniel Dunbar <[email protected]>

IRgen: (Reapply 101222, with fixes) Move EmitStoreThroughBitfieldLValue to use new CGBitfieldInfo::AccessInfo decomposition, instead of computing the access policy itself.
- Sadly, this doesn't seem

IRgen: (Reapply 101222, with fixes) Move EmitStoreThroughBitfieldLValue to use new CGBitfieldInfo::AccessInfo decomposition, instead of computing the access policy itself.
- Sadly, this doesn't seem to give any .ll size win so far. It is possible to make this routine significantly smarter & avoid various shifting, masking, and zext/sext, but I'm not really convinced it is worth it. It is tricky, and this is really instcombine's job.

- No intended functionality change; the test case is just to increase coverage & serves as a demo file, it worked before this commit.

The new fixes from r101222 are:

1. The shift to the target position needs to occur after the value is extended to the correct size. This broke Clang bootstrap, among other things no doubt.

2. Swap the order of arguments to OR, to get a tad more constant folding.

llvm-svn: 101339

show more ...


# 91ea6ac3 14-Apr-2010 Daniel Dunbar <[email protected]>

Speculatively revert "IRgen: Move EmitStoreThroughBitfieldLValue to use new CGBitfieldInfo::AccessInfo decomposition, instead of computing the access policy itself.", I think it might be breaking boo

Speculatively revert "IRgen: Move EmitStoreThroughBitfieldLValue to use new CGBitfieldInfo::AccessInfo decomposition, instead of computing the access policy itself.", I think it might be breaking bootstrap.

llvm-svn: 101235

show more ...


1...<<31323334353637383940>>...51