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_oper.tc,1.21,1.22


From: Gopal.V <address@hidden>
Subject: [Dotgnu-pnet-commits] CVS: pnet/cscc/csharp cs_oper.tc,1.21,1.22
Date: Fri, 08 Nov 2002 06:51:27 -0500

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

Modified Files:
        cs_oper.tc 
Log Message:
Constants are coerced before operator lookup


Index: cs_oper.tc
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/cscc/csharp/cs_oper.tc,v
retrieving revision 1.21
retrieving revision 1.22
diff -C2 -r1.21 -r1.22
*** cs_oper.tc  5 Nov 2002 09:55:51 -0000       1.21
--- cs_oper.tc  8 Nov 2002 11:51:23 -0000       1.22
***************
*** 121,124 ****
--- 121,140 ----
        }
  
+       /* try constant coercion before operator lookup */
+       if(ILCanCoerceNodeKind(info,node->expr1,CSSemGetType(value1),
+                       CSSemGetType(value2),IL_CONVERT_CONSTANT))
+       {
+               
ILCoerceKind(info,node->expr1,&(node->expr1),CSSemGetType(value1),
+                       CSSemGetType(value2),IL_CONVERT_CONSTANT);
+               CSSemSetRValue(value1,CSSemGetType(value2));
+       }
+       else if(ILCanCoerceNodeKind(info,node->expr2,CSSemGetType(value2),
+                       CSSemGetType(value1),IL_CONVERT_CONSTANT))
+       {
+               
ILCoerceKind(info,node->expr2,&(node->expr2),CSSemGetType(value2),
+                       CSSemGetType(value1),IL_CONVERT_CONSTANT);
+               CSSemSetRValue(value2,CSSemGetType(value1));
+       }
+ 
        /* Look for a builtin operator */
        oper = ILFindBinaryOperator(table, CSSemGetType(value1),
***************
*** 313,316 ****
--- 329,348 ----
        }
  
+       /* try constant coercion first */
+       if(ILCanCoerceNodeKind(info,node->expr1,CSSemGetType(value1),
+                       CSSemGetType(value2),IL_CONVERT_CONSTANT))
+       {
+               
ILCoerceKind(info,node->expr1,&(node->expr1),CSSemGetType(value1),
+                       CSSemGetType(value2),IL_CONVERT_CONSTANT);
+               CSSemSetRValue(value1,CSSemGetType(value2));
+       }
+       else if(ILCanCoerceNodeKind(info,node->expr2,CSSemGetType(value2),
+                       CSSemGetType(value1),IL_CONVERT_CONSTANT))
+       {
+               
ILCoerceKind(info,node->expr2,&(node->expr2),CSSemGetType(value2),
+                       CSSemGetType(value1),IL_CONVERT_CONSTANT);
+               CSSemSetRValue(value2,CSSemGetType(value1));
+       }
+       
        /* Look for a builtin operator */
        oper = ILFindBinaryOperator
***************
*** 449,452 ****
--- 481,500 ----
        {
                goto error;
+       }
+ 
+       /* try constant coercion first */
+       if(ILCanCoerceNodeKind(info,node->expr1,CSSemGetType(value1),
+                       CSSemGetType(value2),IL_CONVERT_CONSTANT))
+       {
+               
ILCoerceKind(info,node->expr1,&(node->expr1),CSSemGetType(value1),
+                       CSSemGetType(value2),IL_CONVERT_CONSTANT);
+               CSSemSetRValue(value1,CSSemGetType(value2));
+       }
+       else if(ILCanCoerceNodeKind(info,node->expr2,CSSemGetType(value2),
+                       CSSemGetType(value1),IL_CONVERT_CONSTANT))
+       {
+               
ILCoerceKind(info,node->expr2,&(node->expr2),CSSemGetType(value2),
+                       CSSemGetType(value1),IL_CONVERT_CONSTANT);
+               CSSemSetRValue(value2,CSSemGetType(value1));
        }
  





reply via email to

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