dotgnu-pnet-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[dotgnu-pnet-commits] pnet ChangeLog cscc/csharp/cs_oper.tc


From: Klaus Treichel
Subject: [dotgnu-pnet-commits] pnet ChangeLog cscc/csharp/cs_oper.tc
Date: Tue, 06 Jan 2009 15:35:21 +0000

CVSROOT:        /cvsroot/dotgnu-pnet
Module name:    pnet
Changes by:     Klaus Treichel <ktreichel>      09/01/06 15:35:21

Modified files:
        .              : ChangeLog 
        cscc/csharp    : cs_oper.tc 

Log message:
        Handle pointer operations in += and -= expressions.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/pnet/ChangeLog?cvsroot=dotgnu-pnet&r1=1.3600&r2=1.3601
http://cvs.savannah.gnu.org/viewcvs/pnet/cscc/csharp/cs_oper.tc?cvsroot=dotgnu-pnet&r1=1.55&r2=1.56

Patches:
Index: ChangeLog
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/ChangeLog,v
retrieving revision 1.3600
retrieving revision 1.3601
diff -u -b -r1.3600 -r1.3601
--- ChangeLog   3 Jan 2009 14:15:20 -0000       1.3600
+++ ChangeLog   6 Jan 2009 15:35:20 -0000       1.3601
@@ -1,3 +1,8 @@
+2009-01-06  Klaus Treichel  <address@hidden>
+
+       * cscc/csharp/cs_oper.tc (AssignSem): Handle operations with pointers
+       for the += and -= expressions.
+
 2009-01-03  Klaus Treichel  <address@hidden>
 
        * engine/int_proto.h, engine/int_table.c: Regenerate

Index: cscc/csharp/cs_oper.tc
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/cscc/csharp/cs_oper.tc,v
retrieving revision 1.55
retrieving revision 1.56
diff -u -b -r1.55 -r1.56
--- cscc/csharp/cs_oper.tc      2 Jan 2009 14:33:06 -0000       1.55
+++ cscc/csharp/cs_oper.tc      6 Jan 2009 15:35:21 -0000       1.56
@@ -1319,6 +1319,30 @@
                }
        }
 
+       /* Is this a pointer expression? */
+       if(ILType_IsPointer(CSSemGetType(value1)) &&
+          (yyisa(node, ILNode_Add) || yyisa(node, ILNode_Sub)))
+       {
+               ILType *resultType;
+
+               resultType = ToNumericType(info, CSSemGetType(value2));
+               if(resultType)
+               {
+                       if(resultType == ILType_UInt32 || resultType == 
ILType_UInt64)
+                       {
+                               resultType = ILType_UInt;
+                       }
+                       else
+                       {
+                               resultType = ILType_Int;
+                       }
+                       PointerOp(info, parent, &(node->expr1), 
CSSemGetType(value1),
+                                         &(node->expr2), CSSemGetType(value2), 
resultType);
+                       CSSemSetRValue(value1, CSSemGetType(value1));
+                       return value1;
+               }
+       }
+
        /* Try again, this time coercing value2's type to value1's type */
        if (ILCanCoerceNode(info, node->expr2, 
                                                CSSemGetType(value2), 
CSSemGetType(value1),1))




reply via email to

[Prev in Thread] Current Thread [Next in Thread]