PrelRules: Don't break let/app invariant in shiftRule
Previously shiftRule would rewrite as invalid shift like
let x = I# (uncheckedIShiftL# n 80) in ...
let x = I# (error "invalid shift") in ...
However, this breaks the let/app invariant as error is not
okay-for-speculation. There isn't an easy way to avoid this so let's not
try. Instead we just take advantage of the undefined nature of invalid
shifts and return zero.
Fixes Trac #16742.
(cherry picked from commit 0bd3b9dd0428855b6f72f757c1214b5253aa7753)