It looks fine to me. Please go ahead and commit it. Thank you very much. 2010/12/8 朱庆 <[email protected]>
> Hi all, > > Can gatekeeper help review this fix? > > Bug link: https://bugs.open64.net/show_bug.cgi?id=649 > > A small case: > > 1 namespace pcrecpp { > 2 class Arg { public: Arg(); Arg(void*); }; > 3 class RE { static Arg no_arg; }; > 4 Arg RE::no_arg((void*)__null); > 5 extern Arg no_arg __attribute__((alias("" "_ZN7pcrecpp2RE6no_argE"))); > 6 } > The wn for line5 is: > U8U8LDID 0 <1,52,_ZN7pcrecpp2RE6no_argE> T<54,Arg,1> > it uses the base st(_ZN7pcrecpp2RE6no_argE) instead of _ZN7pcrecpp6no_argE > I think the right one should be like this: > U8LDA 0 <1,54,_ZN7pcrecpp6no_argE> T<55,anon_ptr.,8> > > The ori code did not consider the alias situation. > > Here is the patch: > Index: wgen_expr.cxx > =================================================================== > --- wgen_expr.cxx (revision 3426) > +++ wgen_expr.cxx (working copy) > @@ -2605,6 +2605,7 @@ > case GS_FUNCTION_DECL: > { > st = Get_ST (arg0); > + ST *real_st = gs_decl_alias_target(arg0)? > Get_ST(gs_decl_alias_target(arg0)):st; > ty_idx = ST_type (st); > #ifdef KEY > // Arg0 is the virtual function table (vtable) for a class. > Initialize > @@ -2632,7 +2633,7 @@ > #endif > // for VLAs, use the base_st instead of st > if (code0 == GS_VAR_DECL && > - st != ST_base(st)) { > + real_st != ST_base(st)) { > FmtAssert (ST_ofst (st) == 0, > ("Variable Length Arrays within struct not currently > implemented")); > wn = WN_Ldid (Pointer_Mtype, 0, ST_base(st), > ST_type(ST_base(st))); > > Thanks, > zhuqing > > > > > > ------------------------------------------------------------------------------ > This SF Dev2Dev email is sponsored by: > > WikiLeaks The End of the Free Internet > http://p.sf.net/sfu/therealnews-com > _______________________________________________ > Open64-devel mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/open64-devel > > -- Regards, Lai Jian-Xin
------------------------------------------------------------------------------
_______________________________________________ Open64-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/open64-devel
