------- Comment #7 from hjl dot tools at gmail dot com  2009-07-23 18:56 -------
Here are the differences between good and bad

GOOD const struct XalanDOMString & theFirstString = (const struct
XalanDOMString &) (const struct XalanDOMString *) OBJ_TYPE_REF(*(SAVE_EXPR
<xalanc_1_8::XObjectPtr::operator->
(&arg1)>->D.20005._vptr.XalanReferenceCountedObject + 72);SAVE_EXPR
<xalanc_1_8::XObjectPtr::operator-> (&arg1)>->9) (SAVE_EXPR
<xalanc_1_8::XObjectPtr::operator-> (&arg1)>);
BAD const struct XalanDOMString & theFirstString = (const struct XalanDOMString
&) (const struct XalanDOMString *) OBJ_TYPE_REF(*(SAVE_EXPR
<xalanc_1_8::XObjectPtr::operator-> ((const struct XObjectPtr *)
arg1)>->D.20005._vptr.XalanReferenceCountedObject + 72);SAVE_EXPR
<xalanc_1_8::XObjectPtr::operator-> ((const struct XObjectPtr *) arg1)>->9)
(SAVE_EXPR <xalanc_1_8::XObjectPtr::operator-> ((const struct XObjectPtr *)
arg1)>);

That is

(&arg1)>->D.20005._vptr.XalanReferenceCountedObject + 72)

vs.

((const struct XObjectPtr *) arg1)>->D.20005._vptr.XalanReferenceCountedObject
+ 72)

The correct one is an address. The wrong one is a cast to pointer.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40834

Reply via email to