<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Verdana
}
--></style>
</head>
<body class='hmmessage'>
The previous form is not portable to systems that trap on overflow...if such a thing really makes sense.<BR>
It is good practise to avoid that in C too, since signed overflow is undefined,<BR>
and gcc actually sometimes mangles code that depends on signed overflow.<BR>
 <BR>
 <BR>
Really, look at how I got here. By using Target.Int in m3back and not ignoring errors.<BR>
And look at what I had to do to get it to compile with a warning.<BR>
I had to check for a specific value and hardcode the result.<BR>
This is actually needed in multiple places.<BR>
When I wrote test code that resembles the Lex code, it triggered a failure<BR>
to convert Target.Int to INTEGER in a different place in m3back.<BR>
 <BR>
 <BR>
 - Jay<BR> <BR>> From: hosking@cs.purdue.edu<BR>> Date: Sun, 24 Jan 2010 04:26:26 -0500<BR>> To: jkrell@elego.de<BR>> CC: m3commit@elegosoft.com<BR>> Subject: Re: [M3commit] CVS Update: cm3<BR>> <BR>> Seems overdone...<BR>> <BR>> On 23 Jan 2010, at 20:34, Jay Krell wrote:<BR>> <BR>> > CVSROOT: /usr/cvs<BR>> > Changes by: jkrell@birch. 10/01/23 20:34:50<BR>> > <BR>> > Modified files:<BR>> > cm3/m3-libs/libm3/src/fmtlex/: Lex.m3 <BR>> > <BR>> > Log message:<BR>> > avoid integer overflow on two's complement systems:<BR>> > replace -FIRST(INTEGER) with Word.Plus(-(FIRST(INTEGER) + 1), 1)<BR>> > (The value is then passed to Word.GT.)<BR>> <BR>                                           </body>
</html>