Skip to content
Snippets Groups Projects
Forked from cmucl / cmucl
Source project has a limited visibility.
  • ram's avatar
    a587cf3f
    Mucho enhancements. · a587cf3f
    ram authored
    If we discover a known call, and that call has a source transform or is a
    	
    conditional, then we replace the function with a lambda that
    just calls the function again.  This gives IR1 conversion another chance
    to permute the call.
    Changed IR1 transforms to test the function type with :STRICT-RESULT T
    since this is almost always what you want when writing a transform.
    In constant folding, if the call returns multiple values, change
    the function to a call to VALUES, rather than just blowing off
    constant folding.
    Added DELETE-LET which deletes the bind node for a let when all 
    its variables are deleted.  This cleans up the IR1 a great deal, enabling
    some optimizations.
    Added an IR1 optimizer for VALUES that converts MV-BIND/VALUES into a
    LET (as long as the VALUES is the only use of the values continuation.)
    This helps optimization of the results of IR1 transforms for multiple
    value functions.
    Added a IR1 transform for VALUES that discards all but the first
    value when the context is not a multiple-value receiver.
    a587cf3f
    History
    Mucho enhancements.
    ram authored
    If we discover a known call, and that call has a source transform or is a
    	
    conditional, then we replace the function with a lambda that
    just calls the function again.  This gives IR1 conversion another chance
    to permute the call.
    Changed IR1 transforms to test the function type with :STRICT-RESULT T
    since this is almost always what you want when writing a transform.
    In constant folding, if the call returns multiple values, change
    the function to a call to VALUES, rather than just blowing off
    constant folding.
    Added DELETE-LET which deletes the bind node for a let when all 
    its variables are deleted.  This cleans up the IR1 a great deal, enabling
    some optimizations.
    Added an IR1 optimizer for VALUES that converts MV-BIND/VALUES into a
    LET (as long as the VALUES is the only use of the values continuation.)
    This helps optimization of the results of IR1 transforms for multiple
    value functions.
    Added a IR1 transform for VALUES that discards all but the first
    value when the context is not a multiple-value receiver.