Proposed resolution to aliasing issue.
Mark Mitchell
mark@codesourcery.com
Thu May 12 17:46:00 GMT 2005
Theodore Papadopoulo wrote:
> On Wed, 2005-05-11 at 15:30 -0700, Mark Mitchell wrote:
>
> Given the following:
>
> struct A {
> B& b1;
> B& b2;
> const B& b3;
>
> A(B& b): b1(b),b2(b),b3(b) { }
> };
>
> Is the compiler allowed to suppress b2 and/or b3 from the layout of the
> object. The next question comes when b1,b2 and b3 are in various places
> in an inheritance path, would it be allowed to only keep the first
> reference in this path (provided of course that it can be proved that
> all references are bound to the same object).
Tricky! Because you can't get the address of the reference, or form a
pointer-to-member, it might be valid to do the optimization you suggest.
Then again, there might be something lurking that I'm not thinking of.
In any case, nobody does that optimization, and it would break the ABI.
--
Mark Mitchell
CodeSourcery, LLC
mark@codesourcery.com
(916) 791-8304
More information about the Gcc
mailing list