+
+ // We don't know how to classify it if they are shifting by more than what
+ // is reasonable. In most cases, the result will be zero, but there is one
+ // class of cases where it is not, so we cannot optimize without checking
+ // for it. The case is when you are shifting a signed value by 1 less than
+ // the number of bits in the value. For example:
+ // %X = shl sbyte %Y, ubyte 7
+ // will try to form an sbyte multiplier of 128, which will give a null
+ // multiplier, even though the result is not 0. Until we can check for this
+ // case, be conservative. TODO.
+ //
+ if (Multiplier == 0)
+ return Expr;
+