GCC 3.2

Mark Mitchell mark@codesourcery.com
Wed Jul 31 09:34:00 GMT 2002


> With this patch, the empty class passing hackery can go away, hurrah.

Yay.

> 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...

Well, what I would do is simply move the current expr_size_unit into the
new hook.  Then, have the C++ hook call the generic hook if it doesn't
want to override it.

+ tree
+ cp_expr_size (exp)
+      tree exp;
+ {
+   if (CLASS_TYPE_P (TREE_TYPE (exp)))
+     return CLASSTYPE_SIZE_UNIT (TREE_TYPE (exp));
+   else
+     /* Use the default code.  */
+     return NULL_TREE;
+ }

Isn't that the size without virtual base classes?  What if the expression
is for a complete object with virtual bases?

A good answer is that in that case the C++ front end will never present
the back end with an expression like that requiring copying.  In that
case, there should be an assert and a comment indicating that in
cp_expr_size so that we can tell if we screw up.

Overall, I think I'd rather we wait for 3.2.1 for this patch -- but then
I think it's a good idea.

Thanks!

--
Mark Mitchell                   mark@codesourcery.com
CodeSourcery, LLC               http://www.codesourcery.com



More information about the Gcc-patches mailing list