Author: zhuqing
Date: 2010-12-10 21:02:54 -0500 (Fri, 10 Dec 2010)
New Revision: 3432

Modified:
   trunk/osprey/wgen/wgen_expr.cxx
Log:
Fix bug649.

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
the right one should be like this:
   U8LDA 0 <1,54,_ZN7pcrecpp6no_argE> T<55,anon_ptr.,8>

The fix is to add checking for alias node.

Reviewed by Jianxin.


Modified: trunk/osprey/wgen/wgen_expr.cxx
===================================================================
--- trunk/osprey/wgen/wgen_expr.cxx     2010-12-11 00:25:34 UTC (rev 3431)
+++ trunk/osprey/wgen/wgen_expr.cxx     2010-12-11 02:02:54 UTC (rev 3432)
@@ -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)));


------------------------------------------------------------------------------
Oracle to DB2 Conversion Guide: Learn learn about native support for PL/SQL,
new data types, scalar functions, improved concurrency, built-in packages, 
OCI, SQL*Plus, data movement tools, best practices and more.
http://p.sf.net/sfu/oracle-sfdev2dev 
_______________________________________________
Open64-devel mailing list
Open64-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/open64-devel

Reply via email to