[nem-bug] [Nemerle 0000828]: Mono doesn't implement conv.ovf.u4.un;
Nemerle generates it
feedback at nemerle.org
feedback at nemerle.org
Fri Jan 19 17:58:41 CET 2007
The following issue requires your FEEDBACK.
======================================================================
<http://nemerle.org/bugs/view.php?id=828>
======================================================================
Reported By: Evin Robertson
Assigned To:
======================================================================
Project: Nemerle
Issue ID: 828
Category: Compiler
Reproducibility: always
Severity: minor
Priority: normal
Status: feedback
======================================================================
Date Submitted: 01-19-2007 02:45 CET
Last Modified: 01-19-2007 17:58 CET
======================================================================
Summary: Mono doesn't implement conv.ovf.u4.un; Nemerle
generates it
Description:
Mono doesn't implement conv.ovf.u4.un. See
http://bugzilla.ximian.com/show_bug.cgi?id=70355 where this is marked
WONTFIX.
Nemerle generates this opcode on code like the following:
def x = '\n' :> uint
def y = (0 : ushort) :> uint
These casts could never fail, so they don't need to be checked for
overflow. Attached is a patch to generate the unchecked opcode instead.
======================================================================
----------------------------------------------------------------------
nazgul - 01-19-07 17:57
----------------------------------------------------------------------
I checked with mono (Mono JIT compiler version 1.2.2) and it generates the
same opcode, which works very well:
[nazgul at lilith ~]$ mono --version
Mono JIT compiler version 1.2.2, (C) 2002-2006 Novell, Inc and
Contributors. www.mono-project.com
TLS: normal
GC: Included Boehm (with typed GC)
SIGSEGV: normal
Disabled: none
[nazgul at lilith ~]$ cat t.cs
class A {
static void Main () {
ulong x = ulong.MaxValue;
uint y = 33;
y = (uint) x;
}
}
[nazgul at lilith ~]$ mcs t.cs /checked
t.cs(4,6): warning CS0219: The variable `y' is assigned but its value is
never used
Compilation succeeded - 1 warning(s)
[nazgul at lilith ~]$ ./t.exe
Unhandled Exception: System.OverflowException: Number overflow.
at A.Main () [0x00000]
[nazgul at lilith ~]$ monodis t.exe | grep conv.ovf.u4.un
IL_0007: conv.ovf.u4.un
Note that ncc runs in /checked mode by default.
The bugreport you refer to looks quite old, probably they changed their
mind and implemented the opcode, since it is needed (e.g. in above
program)
----------------------------------------------------------------------
nazgul - 01-19-07 17:58
----------------------------------------------------------------------
Which version of mono do you use? I guess we should close it as NOTABUG
Issue History
Date Modified Username Field Change
======================================================================
01-19-07 02:45 Evin Robertson New Issue
01-19-07 02:45 Evin Robertson File Added: conv_u4.patch
01-19-07 17:57 nazgul Note Added: 0001610
01-19-07 17:58 nazgul Note Added: 0001611
01-19-07 17:58 nazgul Status new => feedback
01-19-07 17:58 nazgul Summary Mono doesn't implement
conv.ovf.u4.un; Nemerle generates it => Mono doesn\'t implement conv.ovf.u4.un;
Nemerle generates it
01-19-07 17:58 nazgul Description Updated
======================================================================
More information about the bugs
mailing list