or screen out IA64?
Sun

On Sun, Mar 6, 2011 at 2:22 PM, Jian-Xin Lai <laij...@gmail.com> wrote:
> This changes in wgen_expr.cxx caused a regression on IA-64. There will be an
> assertion during CG expansion phase:
> ### Compiler Error in file case1.cxx (user routine 'main') during
> Code_Expansion phase:
> ### Unimplemented function Expand_Expr: MLOAD/MSTORE
>
> I'd like to only apply this piece of code on X8664. Any suggestions?
>
> 2011/2/28 Agarwal, Ajit <ajit.agar...@amd.com>
>>
>> Hello All:
>>
>>
>>
>> Gatekeeper could you please review the fix for bug Id 732. The changes are
>> made in wgen_expr.cxx
>>
>> And wn_lower.cxx.
>>
>>
>>
>> In wgen_expr.cxx the  copy the -1 preg to a temp area is not done when for
>> GS_CALL_EXPR and the
>>
>> Passed is GS_ADDR_EXPR with operand as  GS_VAR_DECL. The MTYPE_M is not
>> supported on wn_lower.cxx
>>
>> Added the changes for that.
>>
>>
>>
>> Following files are modified.
>>
>> Osprey/wgen/wgen_expr.cxx
>>
>> Osprey/be/com/wn_lower.cxx
>>
>>
>>
>> Index: osprey/wgen/wgen_expr.cxx
>>
>> ===================================================================
>>
>> --- osprey/wgen/wgen_expr.cxx   (revision 3495)
>>
>> +++ osprey/wgen/wgen_expr.cxx   (working copy)
>>
>> @@ -7899,6 +7899,7 @@
>>
>>      case GS_AGGR_INIT_EXPR:
>>
>>      case GS_CALL_EXPR:
>>
>>        {
>>
>> +        BOOL is_gs_addr_arg = FALSE;
>>
>>         gs_t arglist = gs_tree_operand (exp, 1);
>>
>>          TYPE_ID ret_mtype;
>>
>>          WN *call_wn;
>>
>> @@ -9840,11 +9841,24 @@
>>
>>               TY_mtype(TY_pointed(ty_idx)) == MTYPE_V) /* pointer to void
>> */
>>
>>             ty_idx = nop_ty_idx;
>>
>>  #endif
>>
>> +          if((ret_mtype == MTYPE_M) && (Is_Target_64bit()))
>>
>> +          {
>>
>> +            for (list = gs_tree_operand (exp, 1); list;
>>
>> +                 list = gs_tree_chain (list)) {
>>
>> +              if(gs_tree_code(gs_tree_value (list)) == GS_ADDR_EXPR)
>>
>> +              {
>>
>> +                if (gs_tree_code(
>>
>> +                    gs_tree_operand(gs_tree_value (list),0)) ==
>> GS_VAR_DECL )
>>
>> +                  is_gs_addr_arg = TRUE;
>>
>> +              }
>>
>> +           }
>>
>> +         }
>>
>>           wn1 = WN_Ldid (ret_mtype, -1, Return_Val_Preg, ty_idx);
>>
>>
>>
>> -         if (ret_mtype == MTYPE_M) { // copy the -1 preg to a temp area
>>
>> +         if (ret_mtype == MTYPE_M && (!is_gs_addr_arg)) { // copy the -1
>> preg to a temp area
>>
>>
>>
>>             TY_IDX ret_ty_idx = ty_idx;
>>
>> +            is_gs_addr_arg = FALSE;
>>
>>  #ifndef KEY
>>
>>  // bug 3735: the compiler cannot arbitrarily change the alignment of
>>
>>  // individual structures
>>
>>
>>
>> Index: osprey/be/com/wn_lower.cxx
>>
>> ===================================================================
>>
>> --- osprey/be/com/wn_lower.cxx  (revision 3495)
>>
>> +++ osprey/be/com/wn_lower.cxx  (working copy)
>>
>> @@ -4855,6 +4855,13 @@
>>
>>  #endif // TARG_X8664 || VECTOR_MTYPES
>>
>>
>>
>>      case MTYPE_M:
>>
>> +#if defined(TARG_X8664)
>>
>> +      WN_st_idx(tree) = ST_st_idx(MTYPE_To_PREG(MTYPE_U8));
>>
>> +      WN_load_offset(tree) = First_Int_Preg_Return_Offset;
>>
>> +      WN_set_rtype(tree, MTYPE_U8);
>>
>> +      WN_set_desc(tree, MTYPE_U8);
>>
>> +      return tree;
>>
>> +#endif
>>
>>        Fail_FmtAssertion ("MLDID of Return_Val_Preg not allowed in middle"
>>
>>                          " of expression");
>>
>>        /*NOTREACHED*/
>>
>> @@ -11391,7 +11398,7 @@
>>
>>                                                           : parm;
>>
>>
>>
>>      ploc = Get_Output_Parameter_Location(TY_Of_Parameter(parm));
>>
>> -    if (MTYPE_is_m(parmType))
>>
>> +    if (MTYPE_is_m(parmType)&&(WN_operator(actual) != OPR_LDID))
>>
>>      {
>>
>>       /*
>>
>>        * structure parameter
>>
>>
>>
>> Thanks & Regards
>>
>> Ajit
>>
>>
>> ------------------------------------------------------------------------------
>> Free Software Download: Index, Search & Analyze Logs and other IT data in
>> Real-Time with Splunk. Collect, index and harness all the fast moving IT
>> data
>> generated by your applications, servers and devices whether physical,
>> virtual
>> or in the cloud. Deliver compliance at lower cost and gain new business
>> insights. http://p.sf.net/sfu/splunk-dev2dev
>> _______________________________________________
>> Open64-devel mailing list
>> Open64-devel@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/open64-devel
>>
>
>
>
> --
> Regards,
> Lai Jian-Xin
>
> ------------------------------------------------------------------------------
> What You Don't Know About Data Connectivity CAN Hurt You
> This paper provides an overview of data connectivity, details
> its effect on application quality, and explores various alternative
> solutions. http://p.sf.net/sfu/progress-d2d
> _______________________________________________
> Open64-devel mailing list
> Open64-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/open64-devel
>
>

------------------------------------------------------------------------------
What You Don't Know About Data Connectivity CAN Hurt You
This paper provides an overview of data connectivity, details
its effect on application quality, and explores various alternative
solutions. http://p.sf.net/sfu/progress-d2d
_______________________________________________
Open64-devel mailing list
Open64-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/open64-devel

Reply via email to