Skip to content
  1. Jul 05, 2013
    • Raymond Toy's avatar
      Make NOT-MORE-CONTAGIOUS support member and union types. · f36a31aa
      Raymond Toy authored
      This change allow cmucl to fold identity operations as in
      
      (defun foo (x)
        (declare (float x))
        (* x 1))
      
      Previously, cmucl wouldn't change (* x 1) to just x. because the
      declaration of x is represented internally as a union type.
      f36a31aa
  2. Feb 22, 2013
  3. Jan 25, 2013
    • Raymond Toy's avatar
      Fix ticket:71 · b2ee65da
      Raymond Toy authored
      The reader conditionals in {{{NOT-MORE-CONTAGIOUS}}} were incorrrectly
      handling the case when the second type was a double-float. It was
      always returning T in that case, but this is wrong if the first type
      is a double-double-float.
      b2ee65da
  4. Nov 04, 2011
  5. Sep 25, 2011
  6. Jan 12, 2011
  7. Apr 20, 2010
  8. Apr 19, 2010
  9. Mar 19, 2010
  10. Jun 11, 2009
  11. Nov 26, 2008
    • rtoy's avatar
      compiler/srctran.lisp: · 967464f7
      rtoy authored
      o Remove the %ldb change in rev 1.164 to workaround in ticket #20.
      o Delay the logand optimizer so that it runs later.  This allows type
        propagation a chance to converge before we run the logand
        optimizer.  This fixes ticket #20 and #21.  This may increase
        compilation time since the IR1 optimizations will run more often due
        to logand changes.
      
      general-info/release-19f.txt:
      o Update for modular arith fixes
      o Update ticket #15 since we have SSE2 now.
      967464f7
  12. Sep 02, 2008
  13. Aug 20, 2008
    • rtoy's avatar
      o LOGAND-DERIVE-TYPE-AUX was deriving the result to be too wide for · 80eb1e39
      rtoy authored
        (defun foo (x)
          (declare (type unsigned-byte x))
          (logand x #xff))
      
        It was returning unsigned-byte when the result should have a bounded
        type like (unsigned-byte 8).
      
      o Small optimization for %ldb deftransform:  If the byte positiion is
        known to be 0, don't transform to (ash int 0), but just replace it
        with int.
      80eb1e39
  14. Aug 18, 2008
    • rtoy's avatar
      Don't want to skip modular arith stuff if the result is known to fit · b634c067
      rtoy authored
      in a fixnum.  Consider the case where x and y are fixnums in
      
          (logand (* x y) 255)
      
      The compiler knows the result must be 8 bits long, but we need to do
      modular arithmetic because the (* x y) can be longer than 32 bits.
      
      Thus, only skip the modular arithmetic stuff if both args are known to
      be fixnums.
      b634c067
  15. Aug 13, 2008
  16. Aug 12, 2008
    • rtoy's avatar
      compiler/srctran.lisp: · 177bc078
      rtoy authored
      o Adjust deftransform for %ldb to precompute the shift and/or mask if
        they are known to be constants.  This works around the problem
        mentioned in ticket #20.
      o Change LOGAND-DEFOPT-HELPER to do modular arith stuff only if the
        derived result type won't fit in a fixnum.  This gives the fixnum
        vops a chance to work, speeding some things up.
        - This appears to fix the issues tickets #18 and #19.
        - Some simple benchmarks indicates this change can produce a 10%-15%
          speedup.
        - Not 100% sure this is correct, but it should be ok.
      
      compiler/sparc/arith.lisp:
      o Change cost of FAST-LOGAND-C/SIGNED-UNSIGNED=>UNSIGNED to 2 to give
        the equivalent fixnum VOP a chance.
      177bc078
  17. Sep 25, 2007
  18. Jun 30, 2006
  19. Jan 17, 2006
  20. Jul 26, 2005
  21. Jul 13, 2005
  22. Jul 12, 2005
  23. Apr 23, 2005
  24. Feb 07, 2005
  25. Jan 06, 2005
  26. Aug 16, 2004
  27. Aug 03, 2004
  28. Jul 21, 2004
  29. Jul 20, 2004
  30. Jul 19, 2004
  31. Jul 15, 2004
  32. Apr 07, 2004
  33. Apr 06, 2004
    • rtoy's avatar
      Add WITH-UNBOUNDED-INTERVAL-ON-ERROR macro to catch errors · 7e328579
      rtoy authored
      during interval arithmetic and returns a doubly unbounded INTERVAL.  Use this
      in the INTERVAL-* routines.
      
      This is intended to fix the ansi-test failure misc.89.  The approach is
      rather heavy-handed, and a better solution is desirable.
      7e328579
  34. Mar 29, 2004
    • rtoy's avatar
      Make the def-source-transform and defoptimizer for max and min · 8b703e12
      rtoy authored
      consistent in which argument is selected.  Previously, they were
      inconsistent which causes problems when the argument types are equal,
      but of different types.
      
      (Based on a patch Alexey Dejneka did for SBCL for the same issue.)
      8b703e12
  35. Jan 19, 2004
    • toy's avatar
      o Fix INTERVAL-RANGE-INFO some more. Put back the previous change · 335f876a
      toy authored
        (that we backed out) so (abs (the (double-float 0d0) x)) produces
        the correct result.
      o Add a kludge to INTERVAL-RANGE-INFO to handle the case of an
        interval -0.0 to 0.0 specially.  INTERVAL-RANGE-INFO should return
        NIL instead of '- for this.
      o The fixes to INTERVAL-RANGE-INFO tickle a bug in INTERVAL-SPLIT
        where we weren't correctly splitting the the interval [-0.0, 0d0]
        into 2 intervals correctly.  This was causing the compiler to loop
        forever deriving things.
      
      This is all a bit kludgy.  Dealing with signed-zeroes is a pain.
      335f876a
  36. Jan 17, 2004
  37. Jan 10, 2004
    • toy's avatar
      o INTERVAL-RANGE-INFO was not returning the correct result for -0.0. · 259cafa6
      toy authored
        This shows up in deriving the type of (abs (the (double-float
        0d0))), which was (double-float 0d0), but should have been (or
        (member 0d0) (double-float (0d0)).
      
      o In TWO-ARG-DERIVE-TYPE, use our own same-leaf-ref-p in place of the
        real same-leaf-ref-p.  We don't care if the leaf is not constant,
        only that they are the same leaf.  This shows up in Eric Marsden's
        cl-bench where CMUCL was not able to deduce that z^2 is positive in
        mandelbrot/dfloat.
      259cafa6