Decrease the "go-for-it" threshold for unfolding smallish expressions. Give a `-funfolding-use-threshold0' option for the extreme case. ("Only unfoldings with zero cost should proceed.")
(Note: I have not been too successful at producing code smaller than that which comes out with `-O'. WDP 94/12)
Use `-fomit-derived-read' if you are using a lot of derived instances of `Text' (and don't need the read methods).
Use `strip' on your executables.