[cfe-dev] struct copy
Chris Lattner
clattner at apple.com
Sat Sep 27 23:08:25 PDT 2008
On Sep 26, 2008, at 1:51 PM, Mattias EngdegÄrd wrote:
> Chris Lattner <clattner at apple.com> writes:
>
>> In practice, using memcpy for small structs is bad, which is why
>> llvm-
>> gcc lowers it. The badness stems from two reasons: 1) current
>> deficiencies in the optimizer, and 2) not being able to model the
>> fact
>> that a memcpy doesn't need to copy the "holes" in a struct.
>
> How would not copying the holes improve anything? They are there for
> alignment, but moving entire machine words is no slower than
> individual bytes.
This is true on the micro-level, but is false in the macro level. For
example, if the caller of a function does a one byte store into a
struct field, and the callee does a memcpy (ending up with a 32-bit
read), you get a store forwarding speculation failure on most out of
order processors.
-Chris
More information about the cfe-dev
mailing list