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

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

[Dotgnu-pnet-commits] CVS: pnet/cscc/csharp cs_misc.tc,1.13,1.14


From: Rhys Weatherley <address@hidden>
Subject: [Dotgnu-pnet-commits] CVS: pnet/cscc/csharp cs_misc.tc,1.13,1.14
Date: Wed, 26 Feb 2003 07:02:52 -0500

Update of /cvsroot/dotgnu-pnet/pnet/cscc/csharp
In directory subversions:/tmp/cvs-serv15771/cscc/csharp

Modified Files:
        cs_misc.tc 
Log Message:


Correctly handle pointer types with the "sizeof" operator.


Index: cs_misc.tc
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/cscc/csharp/cs_misc.tc,v
retrieving revision 1.13
retrieving revision 1.14
diff -C2 -r1.13 -r1.14
*** cs_misc.tc  13 Dec 2002 11:33:49 -0000      1.13
--- cs_misc.tc  26 Feb 2003 12:02:47 -0000      1.14
***************
*** 110,121 ****
  ILNode_GenValue(ILNode_SizeOf)
  {
!       if(ILType_IsValueType(node->type))
        {
!               ILGenClassToken(info, IL_OP_PREFIX + IL_PREFIX_OP_SIZEOF,
!                                               ILType_ToValueType(node->type));
        }
        else
        {
!               ILGenInt32(info, node->size);
        }
        ILGenAdjust(info, 1);
--- 110,121 ----
  ILNode_GenValue(ILNode_SizeOf)
  {
!       if(node->size != 0)
        {
!               ILGenInt32(info, node->size);
        }
        else
        {
!               ILClass *classInfo = ILTypeToClass(info, node->type);
!               ILGenClassToken(info, IL_OP_PREFIX + IL_PREFIX_OP_SIZEOF, 
classInfo);
        }
        ILGenAdjust(info, 1);
***************
*** 128,132 ****
  ILNode_EvalConst(ILNode_SizeOf)
  {
!       if(ILType_IsPrimitive(node->type))
        {
                value->valueType = ILMachineType_Int32;
--- 128,132 ----
  ILNode_EvalConst(ILNode_SizeOf)
  {
!       if(node->size != 0)
        {
                value->valueType = ILMachineType_Int32;
***************
*** 186,190 ****
        }
        else if(!ILType_IsPrimitive(CSSemGetType(value)) &&
!                       !ILType_IsValueType(CSSemGetType(value)))
        {
                CCErrorOnLine(yygetfilename(node), yygetlinenum(node),
--- 186,191 ----
        }
        else if(!ILType_IsPrimitive(CSSemGetType(value)) &&
!                       !ILType_IsValueType(CSSemGetType(value)) &&
!                       !ILType_IsPointer(CSSemGetType(value)))
        {
                CCErrorOnLine(yygetfilename(node), yygetlinenum(node),
***************
*** 203,206 ****
--- 204,212 ----
                                          "`void' type is not allowed in this 
context");
                node->type = ILType_Int32;
+       }
+       else if(ILType_IsPointer(CSSemGetType(value)))
+       {
+               /* Pointers always have the same size as a native integer */
+               node->type = ILType_Int;
        }
        else





reply via email to

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