nullary _ffi's

Matthew Fluet fluet@CS.Cornell.EDU
Thu, 9 Nov 2000 10:10:05 -0500 (EST)


  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.
  Send mail to mime@docserver.cac.washington.edu for more info.

---559023410-758783491-973782605=:13001
Content-Type: TEXT/PLAIN; charset=US-ASCII


> Thanks for the patch.  It fixed the problem with the regression failure
> (cmdline).  Unfortunately, it introduced two new -native regression failures,
> bytechar and string.  Do you see those failures as well?

I was able to recreate the failure and narrowed it down to a bug in the
peephole optimization for signed division by a power of 2.  I'm including
the updated x86-simplify.fun which should work with the version of the
native backend that you have.



---559023410-758783491-973782605=:13001
Content-Type: APPLICATION/octet-stream; name="x86-simplify.fun.tgz"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.SOL.3.95.1001109101005.13001C@hoho.cs.cornell.edu>
Content-Description: 

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

---559023410-758783491-973782605=:13001--