pub fn build_unchecked_lshift(
    bx: &Builder<'a, 'll, 'tcx>,
    lhs: &'ll Value,
    rhs: &'ll Value
) -> &'ll Value {
    let rhs = base::cast_shift_expr_rhs(bx, hir::BinOpKind::Shl, lhs, rhs);
    // #1877, #10183: Ensure that input is always valid
    let rhs = shift_mask_rhs(bx, rhs);
    bx.shl(lhs, rhs)
}
// To avoid UB from LLVM, these two functions mask RHS with an
// appropriate mask unconditionally (i.e. the fallback behavior for
// all shifts). For 32- and 64-bit types, this matches the semantics
// of Java. (See related discussion on #1877 and #10183.)
To avoid UB from LLVM, these two functions mask RHS with an
appropriate mask unconditionally . For 32- and 64-bit types, this matches the semantics
of Java.
To avoid UB from LLVM these two functions mask RHS with an appropriate mask unconditionally . For 32 - and 64 - bit types this matches the semantics of Java .
pub fn build_unchecked_lshift(
    bx: &Builder<'a, 'll, 'tcx>,
    lhs: &'ll Value,
    rhs: &'ll Value
) -> &'ll Value {
    let rhs = base::cast_shift_expr_rhs(bx, hir::BinOpKind::Shl, lhs, rhs);
    // #1877, #10183: Ensure that input is always valid
    let rhs = shift_mask_rhs(bx, rhs);
    bx.shl(lhs, rhs)
}
pub fn build_unchecked_lshift ( bx : & Builder < ' a , ' ll , ' tcx > , lhs : & ' ll Value , rhs : & ' ll Value ) -> & ' ll Value { let rhs = base :: cast_shift_expr_rhs ( bx , hir :: BinOpKind :: Shl , lhs , rhs ) ; // #1877, #10183: Ensure that input is always valid let rhs = shift_mask_rhs ( bx , rhs ) ; bx . shl ( lhs , rhs ) }
To avoid UB from LLVM, these two functions mask RHS with an
appropriate mask unconditionally (i.e.
To avoid UB from LLVM these two functions mask RHS with an appropriate mask unconditionally ( i . e .
bx
&Builder<'a, 'll, 'tcx>
lhs
&'ll Value
rhs
&'ll Value