Skip to content
Snippets Groups Projects
Commit a587cf3f authored by ram's avatar ram
Browse files

Mucho enhancements.

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.
parent eae203ea
No related branches found
No related tags found
No related merge requests found
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment