| #
230e1541 |
| 14-Apr-2010 |
Daniel Dunbar <[email protected]> |
IRgen: 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
IRgen: 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.
llvm-svn: 101222
show more ...
|
| #
3447a02d |
| 13-Apr-2010 |
Daniel Dunbar <[email protected]> |
IRgen: Move EmitLoadOfBitfieldLValue to use new CGBitfieldInfo::AccessInfo decomposition, instead of computing the access policy itself. - This lets the method focus slightly more on emitting clean
IRgen: Move EmitLoadOfBitfieldLValue to use new CGBitfieldInfo::AccessInfo decomposition, instead of computing the access policy itself. - This lets the method focus slightly more on emitting clean IR to honor the policy which has been selected. On 403.gcc's combine.c, x86_64, -O0, this reduces the number of lines in the .ll file (~= # of instructions) by 2.5%.
- No intended functionality change -- at -O3 this should produce equivalent if not identical output. On 403.gcc's combine.c, x86_64, -O3, this isn't quite true and some of the changes are regressions, but I'm not going to worry about that until we move to a new access policy.
- There is still some room for improvement in the generated IR, in particular we can usually fold the sign-extension of the bit-field into one of the component access. See the FIXME.
llvm-svn: 101192
show more ...
|
| #
bc3be65d |
| 10-Apr-2010 |
Chris Lattner <[email protected]> |
fix PR6805: llvm.objectsize changed to take an i1 instead of an i32.
llvm-svn: 100938
|
| #
c75c8bd7 |
| 08-Apr-2010 |
Daniel Dunbar <[email protected]> |
IRgen: Move the bit-field access type into CGBitFieldInfo, and change bit-field LValues to just store the base address of object containing the bit-field.
llvm-svn: 100745
|
| #
196ea449 |
| 06-Apr-2010 |
Daniel Dunbar <[email protected]> |
IRgen: Move BitFieldIsSigned bit into CGBitFieldInfo.
llvm-svn: 100513
|
| #
60d81e86 |
| 06-Apr-2010 |
Daniel Dunbar <[email protected]> |
Simplify.
llvm-svn: 100511
|
| #
dc406b8e |
| 05-Apr-2010 |
Daniel Dunbar <[email protected]> |
IRgen: Move BitField LValues to just hold a reference to the CGBitFieldInfo. - Unfortunately, this requires some horrible code in CGObjCMac which always allocats a CGBitFieldInfo because we don't
IRgen: Move BitField LValues to just hold a reference to the CGBitFieldInfo. - Unfortunately, this requires some horrible code in CGObjCMac which always allocats a CGBitFieldInfo because we don't currently build a proper layout for Objective-C classes. It needs to be cleaned up, but I don't want the bit-field cleanups to be blocked on that.
llvm-svn: 100474
show more ...
|
| #
cd3d5e76 |
| 05-Apr-2010 |
Daniel Dunbar <[email protected]> |
IRgen: Lift BitFieldInfo to CGBitFieldInfo at namespace level.
llvm-svn: 100433
|
| #
034299ef |
| 31-Mar-2010 |
Daniel Dunbar <[email protected]> |
IRGen: Move the auxiliary data structures tracking AST -> LLVM mappings out of CodeGenTypes, to per-record CGRecordLayout structures. - I did a cursory check that this was perf neutral, FWIW.
llvm-
IRGen: Move the auxiliary data structures tracking AST -> LLVM mappings out of CodeGenTypes, to per-record CGRecordLayout structures. - I did a cursory check that this was perf neutral, FWIW.
llvm-svn: 99978
show more ...
|
| #
d9c7c656 |
| 30-Mar-2010 |
John McCall <[email protected]> |
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.
llvm-svn: 99963
|
| #
f4ffa0da |
| 30-Mar-2010 |
Daniel Dunbar <[email protected]> |
Minor formatting/FIXME cleanups.
llvm-svn: 99944
|
| #
2e42fec3 |
| 04-Mar-2010 |
Rafael Espindola <[email protected]> |
Fix PR6473.
Clang's support for weakref is now better than llvm-gcc's :-)
We don't introduce a new symbol and we correctly mark undefined references weak only if there is no definition or regular u
Fix PR6473.
Clang's support for weakref is now better than llvm-gcc's :-)
We don't introduce a new symbol and we correctly mark undefined references weak only if there is no definition or regular undefined references in the same file.
llvm-svn: 97733
show more ...
|
| #
d004918c |
| 16-Feb-2010 |
Daniel Dunbar <[email protected]> |
IRgen: Add CreateIRTemp, which creates a temporary alloca but with type converted "not-for-memory". Dunno a better name.
llvm-svn: 96374
|
| #
27bacafb |
| 16-Feb-2010 |
Daniel Dunbar <[email protected]> |
IRgen: Switch EmitCompoundLiteralLValue to use CreateMemTemp.
llvm-svn: 96373
|
| #
7538eec6 |
| 15-Feb-2010 |
John McCall <[email protected]> |
When emitting an aggregate into a temporary, make sure we set the alignment on the alloca.
The fact that codegen makes this class of bug so wonderfully easy to make is embarrassing.
llvm-svn: 96204
|
| #
5bd8d192 |
| 11-Feb-2010 |
Anders Carlsson <[email protected]> |
More vtable layout dumper improvements. Handle destructors, dump the complete function type of the member functions (using PredefinedExpr::ComputeName.
llvm-svn: 95887
|
| #
a7566f16 |
| 09-Feb-2010 |
Daniel Dunbar <[email protected]> |
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: 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.
llvm-svn: 95648
show more ...
|
| #
3d33fab7 |
| 08-Feb-2010 |
Daniel Dunbar <[email protected]> |
Reapply r95393, without the change to CGExpr. I was wrong in assuming that the element type always matched the converted LLVM type for ExprType.
llvm-svn: 95596
|
| #
ab26cfa5 |
| 05-Feb-2010 |
John McCall <[email protected]> |
Standardize the parsing of function type attributes in a way that follows (as conservatively as possible) gcc's current behavior: attributes written on return types that don't apply there are applie
Standardize the parsing of function type attributes in a way that follows (as conservatively as possible) gcc's current behavior: attributes written on return types that don't apply there are applied to the function instead, etc. Only parse CC attributes as type attributes, not as decl attributes; don't accepet noreturn as a decl attribute on ValueDecls, either (it still needs to apply to other decls, like blocks). Consistently consume CC/noreturn information throughout codegen; enforce this by removing their default values in CodeGenTypes::getFunctionInfo().
llvm-svn: 95436
show more ...
|
| #
a6437804 |
| 05-Feb-2010 |
Douglas Gregor <[email protected]> |
Revert r95393, which broke Clang's self-host.
llvm-svn: 95430
|
| #
9c4e4651 |
| 05-Feb-2010 |
Daniel Dunbar <[email protected]> |
IRgen: A few more ConvertType cleanups.
llvm-svn: 95423
|
| #
d0bc7b9d |
| 05-Feb-2010 |
Daniel Dunbar <[email protected]> |
IRgen: Factor out EmitAggExprToLValue.
llvm-svn: 95416
|
| #
88481755 |
| 05-Feb-2010 |
Daniel Dunbar <[email protected]> |
IRgen: Fix some CreateTempAlloca calls to use ConvertTypeForMem when that is conceptually correct. Review appreciated (Chris, Eli, Anders).
llvm-svn: 95401
|
| #
5a5473f0 |
| 05-Feb-2010 |
Charles Davis <[email protected]> |
Now that we store calling conventions in the types, use them instead of getting the calling convention from the target function, which may or may not exist. Fixes PR5280.
llvm-svn: 95399
|
| #
363589bd |
| 05-Feb-2010 |
Daniel Dunbar <[email protected]> |
IRgen: Use hasAggregateLLVMType instead of isSingleValueType() for cases that need to deal with aggregates specially; this is consistent with the rest of IRgen.
Also, simplify EmitParmDecl and don't
IRgen: Use hasAggregateLLVMType instead of isSingleValueType() for cases that need to deal with aggregates specially; this is consistent with the rest of IRgen.
Also, simplify EmitParmDecl and don't worry about using Decl::getNameAsString.
llvm-svn: 95393
show more ...
|