| Commit message (Collapse) | Author | Age | Files | Lines | |
|---|---|---|---|---|---|
| * | Fix a FIXME in a testcase about packed structs and calls I left around | Eli Friedman | 2013-06-11 | 1 | -1/+1 |
| | | | | | | | | | | while fixing a related bug. The fix here was simpler than I thought it would be. Fixes <rdar://problem/10530444>. llvm-svn: 183718 | ||||
| * | Rework the bitfield access IR generation to address PR13619 and | Chandler Carruth | 2012-12-06 | 1 | -1/+1 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | generally support the C++11 memory model requirements for bitfield accesses by relying more heavily on LLVM's memory model. The primary change this introduces is to move from a manually aligned and strided access pattern across the bits of the bitfield to a much simpler lump access of all bits in the bitfield followed by math to extract the bits relevant for the particular field. This simplifies the code significantly, but relies on LLVM to intelligently lowering these integers. I have tested LLVM's lowering both synthetically and in benchmarks. The lowering appears to be functional, and there are no really significant performance regressions. Different code patterns accessing bitfields will vary in how this impacts them. The only real regressions I'm seeing are a few patterns where the LLVM code generation for loads that feed directly into a mask operation don't take advantage of the x86 ability to do a smaller load and a cheap zero-extension. This doesn't regress any benchmark in the nightly test suite on my box past the noise threshold, but my box is quite noisy. I'll be watching the LNT numbers, and will look into further improvements to the LLVM lowering as needed. llvm-svn: 169489 | ||||
| * | Propagate lvalue alignment into bitfields. Per report on cfe-dev. | Eli Friedman | 2012-06-27 | 1 | -0/+18 |
| | | | | | llvm-svn: 159295 | ||||
| * | Attempt to fix test. | Eli Friedman | 2012-04-17 | 1 | -1/+1 |
| | | | | | llvm-svn: 154897 | ||||
| * | Make sure EmitMoveFromReturnSlot is passing the correct alignment to | Chad Rosier | 2012-04-17 | 1 | -0/+8 |
| | | | | | | | | EmitFinalDestCopy (and thus pass EmitAggregateCopy the correct alignment). rdar://11220251 llvm-svn: 154883 | ||||
| * | Propagate alignment on lvalues through EmitLValueForField. PR12395. | Eli Friedman | 2012-04-16 | 1 | -1/+9 |
| | | | | | llvm-svn: 154789 | ||||
| * | Make EmitAggregateCopy take an alignment argument. Make EmitFinalDestCopy ↵ | Eli Friedman | 2011-12-05 | 1 | -0/+31 |
| pass in the correct alignment when known. The test includes a FIXME for a related case involving calls; it's a bit more complicated to fix because the RValue class doesn't keep track of alignment. <rdar://problem/10463337> llvm-svn: 145862 | |||||

