This patch fixes a bug in Expand where (array expanded) expressions
are erroneously floated past let bindings. It also rectifies a case
where an expression is not floated out of a loop because the loop is
mistaken as a cheap expression where floating should be disabled. It
also avoids unnecessary inlining of let bindings (which can lead to
introduction of redundant computations) when no expression is
floated out of the let body.
This patch fixes a bug in Expand where (array expanded) expressions are erroneously floated past let bindings. It also rectifies a case where an expression is not floated out of a loop because the loop is mistaken as a cheap expression where floating should be disabled. It also avoids unnecessary inlining of let bindings (which can lead to introduction of redundant computations) when no expression is floated out of the let body.