At present, if a class contains any Non-POD members we perform element-wise
copies for each field when generating the implicit copy-constructor and
implicit copy-assignment operator (with an optimization for array members).

This patch changes this behavior - adjacent POD members will be memcpy'd,
with Non-POD members output as usual.

This is an initial implementation that I'd like to get in tree. Obvious
deficiencies are:

It punts entirely when LangOpts.getGC != None.
It doesn't handle inner classes/unions.
It doesn't attach any TBAA info, even when all members are the same type.
It isn't particularly smart about when it falls back on element-wise copies
(at the moment it emits a memcpy any time it finds more than one POD field).

These should all be easy to test and remedy once the code's in tree though.

Does anybody see any problems with this?
Style comments?

Feedback much appreciated.

- Lang.

Attachment: smarter-implicit-copies.patch
Description: Binary data

_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to