[Top][All Lists]
[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
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Dotgnu-pnet-commits] CVS: pnet/cscc/csharp cs_misc.tc,1.13,1.14,
Rhys Weatherley <address@hidden> <=