Closed
Description
Currently we have code that rewrites multiplication by constants into shift/lea sequences split between Morph and CodeGen. Ideally it would live in Lower so that CodeGen isn't performing optimizations (which complicates its contract), the target-specific optimization is handled by the back-end, and pre-Lower optimizations see the simpler multiplication tree.
See discussion here: dotnet/coreclr#12956 (review)