On Tue, 30 Jul 2002 00:32:14 +0100, Jason Merrill wrote: > It's possible that we are copying the tail padding when assigning a C3; I'm > not seeing that, but am continuing to investigate. Indeed we are; I needed to specify -malign-double so there would be tail padding on the x86 for us to handle wrong. :) > If so, that's a serious bug, but fixing it will not impact the ABI. In > other words, it can wait for 3.2.1. This is still true, but I have a preliminary patch for which testing is not yet complete, which adds a langhook to expr_size. I believe that returning the unpadded size from expr_size is correct, as expr_size is interested in the value, not the allocated space. Comments welcome. The other option was to add another size field to types; a langhook seemed more space-efficient. With this patch, the empty class passing hackery can go away, hurrah. BTW, why do we use stubs for langhook defaults? I would think leaving the hook entry NULL would be more efficient for languages that are happy with the default, as a comparison to zero is much cheaper than an indirect jump... 2002-07-31 Jason Merrill * langhooks-def.h (LANG_HOOKS_EXPR_SIZE): New macro. * langhooks.c (lhd_expr_size): Define default. * langhooks.h (struct lang_hooks): Add expr_size. * explow.c (expr_size): Call it. 2002-07-31 Jason Merrill * class.c (cp_expr_size): New fn. * cp-tree.h: Declare it. * cp-lang.c (LANG_HOOKS_EXPR_SIZE): Define. * call.c (build_over_call): Lose empty class hackery.