rust/tests/ui/consts
bors c90eb4825a Auto merge of #108282 - cjgillot:mir-checked-sh, r=tmiasko
Implement checked Shl/Shr at MIR building.

This does not require any special handling by codegen backends,
as the overflow behaviour is entirely determined by the rhs (shift amount).

This allows MIR ConstProp to remove the overflow check for constant shifts.

~There is an existing different behaviour between cg_llvm and cg_clif (cc `@bjorn3).`
I took cg_llvm's one as reference: overflow if `rhs < 0 || rhs > number_of_bits_in_lhs_ty`.~

EDIT: `cg_llvm` and `cg_clif` implement the overflow check differently. This PR uses `cg_llvm`'s implementation based on a `BitAnd` instead of `cg_clif`'s one based on an unsigned comparison.
2023-03-15 21:31:06 +00:00
..
auxiliary
const_constructor
const_in_pattern
const_limit
const-blocks
const-eval MaybeUninit::assume_init_read should have noundef load metadata 2023-03-11 17:44:43 -08:00
const-extern-fn
const-mut-refs
control-flow
extra-const-ub
min_const_fn Test let _ = for const_mut_refs. 2023-03-09 17:45:13 +00:00
miri_unleashed Remove uses of box_syntax in rustc and tools 2023-03-12 13:19:46 +00:00
std
array-literal-index-oob.rs
array-literal-index-oob.stderr
array-literal-len-mismatch.rs Suggest the correct array length on mismatch 2023-02-12 02:15:41 +00:00
array-literal-len-mismatch.stderr Suggest the correct array length on mismatch 2023-02-12 02:15:41 +00:00
array-to-slice-cast.rs
assert-type-intrinsics.rs
assert-type-intrinsics.stderr
assoc_const_generic_impl.rs
assoc_const_generic_impl.stderr
assoc-const.rs
associated_const_generic.rs
async-block.rs
async-block.with_feature.stderr
async-block.without_feature.stderr
bswap-const.rs
cast-discriminant-zst-enum.rs
chained-constants-stackoverflow.rs
check_const-feature-gated.rs
closure-in-foreign-crate.rs
closure-structural-match-issue-90013.rs
const_cmp_type_id.rs
const_discriminant.rs
const_fn_floating_point_arithmetic.gated.stderr
const_fn_floating_point_arithmetic.rs
const_fn_floating_point_arithmetic.stock.stderr
const_fn_return_nested_fn_ptr.rs
const_fn_unsize.rs
const_forget.rs
const_let_assign2.rs
const_let_assign3.rs
const_let_assign3.stderr
const_let_assign.rs
const_let_eq_float.rs
const_let_eq.rs
const_let_irrefutable.rs
const_let_promote.rs
const_let_refutable.rs
const_let_refutable.stderr
const_prop_slice_pat_ice.rs
const_short_circuit.rs
const_unsafe_unreachable_ub.rs
const_unsafe_unreachable_ub.stderr
const_unsafe_unreachable.rs
const-address-of-interior-mut.rs
const-address-of-interior-mut.stderr
const-address-of-mut.rs
const-address-of-mut.stderr
const-address-of.rs
const-adt-align-mismatch.rs
const-array-oob-arith.rs
const-array-oob-arith.stderr Suggest the correct array length on mismatch 2023-02-12 02:15:41 +00:00
const-array-oob.rs
const-array-oob.stderr
const-as-fn.rs
const-as-fn.stderr
const-autoderef.rs
const-big-enum.rs
const-binops.rs
const-bitshift-rhs-inference.rs
const-block-const-bound.rs
const-block-const-bound.stderr
const-block-cross-crate-fn.rs
const-block-item-macro-codegen.rs
const-block-item.rs
const-block-non-item-statement-3.rs
const-block-non-item-statement-rpass.rs
const-block-non-item-statement.rs
const-block.rs
const-bound.rs
const-byte-str-cast.rs
const-call.rs
const-call.stderr
const-cast-different-types.rs
const-cast-different-types.stderr
const-cast-ptr-int.rs
const-cast-wrong-type.rs
const-cast-wrong-type.stderr
const-cast.rs
const-const.rs
const-contents.rs
const-deref-ptr.rs
const-deref-ptr.stderr
const-deref.rs
const-endianess.rs
const-enum-byref-self.rs
const-enum-byref.rs
const-enum-cast.rs
const-enum-ptr.rs
const-enum-struct2.rs
const-enum-struct.rs
const-enum-structlike.rs
const-enum-tuple2.rs
const-enum-tuple.rs
const-enum-tuplestruct2.rs
const-enum-tuplestruct.rs
const-enum-vec-index.rs
const-enum-vec-ptr.rs
const-enum-vector.rs
const-err2.noopt.stderr
const-err2.opt_with_overflow_checks.stderr
const-err2.opt.stderr
const-err2.rs
const-err4.32bit.stderr
const-err4.64bit.stderr
const-err4.rs
const-err-early.rs
const-err-early.stderr
const-err-late.rs
const-err-late.stderr Recurse into statement before applying its effect. 2023-03-08 14:40:38 +00:00
const-err-multi.rs
const-err-multi.stderr
const-err-rpass.rs
const-expr-addr-operator.rs
const-expr-in-fixed-length-vec.rs
const-expr-in-vec-repeat.rs
const-extern-function.rs
const-external-macro-const-err.rs
const-external-macro-const-err.stderr
const-fields-and-indexing.rs
const-float-bits-conv.rs
const-float-bits-reject-conv.rs
const-float-bits-reject-conv.stderr
const-float-classify.rs
const-fn-const-eval.rs
const-fn-destructuring-arg.rs
const-fn-error.rs
const-fn-error.stderr
const-fn-in-vec.rs
const-fn-in-vec.stderr
const-fn-method.rs
const-fn-mismatch.rs
const-fn-mismatch.stderr
const-fn-nested.rs
const-fn-not-in-trait.rs
const-fn-not-in-trait.stderr
const-fn-not-safe-for-const.rs
const-fn-not-safe-for-const.stderr
const-fn-ptr.rs
const-fn-ptr.stderr
const-fn-stability-calls-3.rs
const-fn-stability-calls.rs
const-fn-type-name-any.rs
const-fn-type-name.rs
const-fn-val.rs
const-fn-zst-args.rs
const-fn.rs
const-for-feature-gate.rs
const-for-feature-gate.stderr
const-for.rs
const-for.stderr
const-index-feature-gate.rs
const-int-arithmetic-overflow.rs
const-int-arithmetic.rs
const-int-conversion-rpass.rs
const-int-conversion.rs
const-int-conversion.stderr
const-int-overflowing-rpass.rs
const-int-overflowing.rs
const-int-overflowing.stderr
const-int-pow-rpass.rs
const-int-rotate-rpass.rs
const-int-rotate.rs
const-int-rotate.stderr
const-int-saturating-arith.rs
const-int-sign-rpass.rs
const-int-sign.rs
const-int-sign.stderr
const-int-unchecked.rs
const-int-unchecked.stderr
const-int-wrapping-rpass.rs
const-int-wrapping.rs
const-int-wrapping.stderr
const-integer-bool-ops.rs
const-integer-bool-ops.stderr
const-labeled-break.rs
const-len-underflow-separate-spans.rs
const-len-underflow-separate-spans.stderr
const-len-underflow-subspans.rs
const-len-underflow-subspans.stderr
const-match-check.eval1.stderr
const-match-check.eval2.stderr
const-match-check.matchck.stderr
const-match-check.rs
const-match-pattern-arm.rs
const-meth-pattern.rs
const-multi-ref.rs
const-multi-ref.stderr
const-needs_drop-monomorphic.rs
const-needs_drop-monomorphic.stderr
const-needs_drop.rs
const-negation.rs
const-negative.rs
const-nullary-enum.rs
const-nullary-univariant-enum.rs
const-pattern-irrefutable.rs
const-pattern-irrefutable.stderr
const-pattern-not-const-evaluable.rs
const-pattern-variant.rs
const-points-to-static.32bit.stderr
const-points-to-static.64bit.stderr
const-points-to-static.rs
const-prop-ice2.rs
const-prop-ice2.stderr
const-prop-ice3.rs
const-prop-ice.rs
const-prop-ice.stderr
const-prop-overflowing-casts.rs
const-prop-read-static-in-const.rs
const-prop-read-static-in-const.stderr
const-ptr-nonnull-rpass.rs
const-ptr-nonnull.rs
const-ptr-nonnull.stderr
const-ptr-unique-rpass.rs
const-ptr-unique.rs
const-ptr-unique.stderr
const-rec-and-tup.rs
const-region-ptrs-noncopy.rs
const-region-ptrs.rs
const-repeated-values.rs
const-size_of_val-align_of_val-extern-type.rs
const-size_of_val-align_of_val-extern-type.stderr
const-size_of_val-align_of_val.rs
const-size_of-align_of.rs
const-size_of-cycle.rs
const-size_of-cycle.stderr
const-slice-oob.rs
const-slice-oob.stderr
const-struct-offsets.rs
const-struct.rs
const-suggest-feature.rs
const-suggest-feature.stderr
const-trait-to-trait.rs
const-try-feature-gate.rs
const-try-feature-gate.stderr
const-try.rs
const-tup-index-span.rs
const-tup-index-span.stderr
const-tuple-struct.rs
const-type-mismatch.rs
const-type-mismatch.stderr
const-typeid-of-rpass.rs
const-unit-struct.rs
const-unsafe-fn.rs
const-unsized.rs
const-unsized.stderr
const-unwrap.rs
const-unwrap.stderr
const-validation-fail-55455.rs
const-variant-count.rs
const-vec-of-fns.rs
const-vec-syntax.rs
const-vecs-and-slices.rs
const.rs
constifconst-call-in-const-position.rs
constifconst-call-in-const-position.stderr
consts-in-patterns.rs
copy-intrinsic.rs
copy-intrinsic.stderr
ct-var-in-collect_all_mismatches.rs
ct-var-in-collect_all_mismatches.stderr Specify what 'this' actually is 2023-02-21 05:21:07 +00:00
dangling_raw_ptr.rs
dangling_raw_ptr.stderr
dangling-alloc-id-ice.rs
dangling-alloc-id-ice.stderr
deref_in_pattern.rs
drop_box.rs
drop_box.stderr
drop_none.rs
drop_zst.rs
drop_zst.stderr
enum-discr-type-err.rs
enum-discr-type-err.stderr
eval-enum.rs
eval-enum.stderr
fn_trait_refs.rs
gate-do-not-const-check.rs
gate-do-not-const-check.stderr
huge-values.rs
ice-48279.rs
ice-zst-static-access.rs
inline_asm.rs
inline_asm.stderr
int_ptr_for_zst_slices.rs
intrinsic_without_const_stab_fail.rs
intrinsic_without_const_stab_fail.stderr
intrinsic_without_const_stab.rs
intrinsic_without_const_stab.stderr
invalid_promotion.rs
invalid-const-in-body.rs
invalid-const-in-body.stderr
invalid-inline-const-in-match-arm.rs
invalid-inline-const-in-match-arm.stderr
invalid-union.32bit.stderr
invalid-union.64bit.stderr
invalid-union.rs
issue-3521.fixed
issue-3521.rs
issue-3521.stderr
issue-6991.rs
issue-13837.rs
issue-13902.rs
issue-17074.rs
issue-17458.rs
issue-17458.stderr
issue-17718-borrow-interior.rs
issue-17718-const-bad-values.rs
issue-17718-const-bad-values.stderr
issue-17718-const-borrow.rs
issue-17718-const-borrow.stderr
issue-17718-constants-not-static.rs
issue-17718-constants-not-static.stderr
issue-17718-references.rs
issue-17718-references.stderr
issue-17718.rs
issue-17756.rs
issue-18294.rs
issue-18294.stderr
issue-19244.rs
issue-21562.rs
issue-21721.rs
issue-23833.rs
issue-23968-const-not-overflow.rs
issue-25826.rs
issue-25826.stderr
issue-27890.rs
issue-28113.rs
issue-28113.stderr
issue-29914-2.rs
issue-29914-3.rs
issue-29914.rs
issue-29927-1.rs
issue-29927.rs
issue-32829-2.rs
issue-32829-2.stderr
issue-32829.rs
issue-32829.stderr
issue-33537.rs
issue-33903.rs Move tests 2023-02-16 11:42:35 -03:00
issue-34784.rs
issue-36163.rs
issue-36163.stderr
issue-37222.rs
issue-37550-1.rs
issue-37550.rs
issue-37991.rs
issue-39161-bogus-error.rs
issue-39974.rs
issue-39974.stderr
issue-43105.rs
issue-43105.stderr
issue-44415.rs
issue-44415.stderr
issue-46553.rs
issue-47789.rs
issue-50439.rs
issue-50439.stderr
issue-52023-array-size-pointer-cast.rs
issue-52023-array-size-pointer-cast.stderr
issue-52060.rs
issue-52060.stderr
issue-54224.rs
issue-54224.stderr
issue-54348.rs
issue-54348.stderr
issue-54387.rs
issue-54582.rs Move tests 2023-02-16 11:42:35 -03:00
issue-54954.rs
issue-54954.stderr
issue-56164.rs
issue-56164.stderr
issue-58435-ice-with-assoc-const.rs
issue-62045.rs
issue-63226.rs
issue-63952.32bit.stderr
issue-63952.64bit.stderr
issue-63952.rs
issue-64059.rs
issue-64506.rs
issue-64662.rs
issue-64662.stderr
issue-65348.rs
issue-66342.rs
issue-66345.rs
issue-66397.rs
issue-66693-panic-in-array-len.rs
issue-66693-panic-in-array-len.stderr
issue-66693.rs
issue-66693.stderr
issue-66787.rs
issue-67529.rs
issue-67640.rs
issue-67641.rs
issue-67696-const-prop-ice.rs
issue-67862.rs
issue-68264-overflow.rs
issue-68542-closure-in-array-len.rs
issue-68542-closure-in-array-len.stderr
issue-68684.rs
issue-69191-ice-on-uninhabited-enum-field.rs
issue-69310-array-size-lit-wrong-ty.rs
issue-69310-array-size-lit-wrong-ty.stderr
issue-69312.rs
issue-69488.rs
issue-69532.rs
issue-70773-mir-typeck-lt-norm.rs
issue-70942-trait-vs-impl-mismatch.rs
issue-70942-trait-vs-impl-mismatch.stderr
issue-73976-monomorphic.rs
issue-73976-polymorphic.rs
issue-73976-polymorphic.stderr
issue-76064.rs
issue-76064.stderr
issue-77062-large-zst-array.rs
issue-78655.rs
issue-78655.stderr
issue-79137-monomorphic.rs
issue-79137-toogeneric.rs
issue-79137-toogeneric.stderr
issue-79152-const-array-index.rs
issue-79690.64bit.stderr
issue-79690.rs
issue-83182.rs
issue-83182.stderr
issue-87046.rs
issue-87046.stderr
issue-88071.rs
issue-88649.rs
issue-89088.rs
issue-90762.rs
issue-90870.fixed
issue-90870.rs
issue-90870.stderr
issue-90878-2.rs
issue-90878-2.stderr
issue-90878-3.rs
issue-90878-3.stderr
issue-90878.rs
issue-90878.stderr
issue-91434.rs
issue-91434.stderr
issue-91560.fixed
issue-91560.rs
issue-91560.stderr
issue-94371.rs
issue-94675.rs
issue-94675.stderr
issue-96169.rs
issue-102117.rs
issue-102117.stderr
issue-103790.rs
issue-103790.stderr
issue-104155.rs
issue-104396.rs
issue-104396.stderr
issue-104609.rs
issue-104609.stderr
issue-104768.rs
issue-104768.stderr
issue-broken-mir.rs
issue-miri-1910.rs
issue-miri-1910.stderr MaybeUninit::assume_init_read should have noundef load metadata 2023-03-11 17:44:43 -08:00
large_const_alloc.rs
large_const_alloc.stderr
locals-in-const-fn.rs
match_ice.rs
match_ice.stderr
match-const-fn-structs.rs
mir_check_nonconst.rs
mir_check_nonconst.stderr
missing_span_in_backtrace.rs
missing_span_in_backtrace.stderr
mozjs-error.rs
nested_erroneous_ctfe.rs
nested_erroneous_ctfe.stderr
non-const-value-in-const.rs
non-const-value-in-const.stderr
non-scalar-cast.rs
offset_from_ub.rs
offset_from_ub.stderr Implement checked Shl/Shr at MIR building. 2023-02-27 19:25:16 +00:00
offset_from.rs
offset_ub.rs
offset_ub.stderr
offset.rs
packed_pattern2.rs
packed_pattern2.stderr
packed_pattern.rs
packed_pattern.stderr
partial_qualif.rs
partial_qualif.stderr
precise-drop-with-coverage.rs
precise-drop-with-promoted.rs
promote_borrowed_field.rs
promote_const_let.rs
promote_const_let.stderr
promote_evaluation_unused_result.rs
promote_fn_calls_std.rs
promote_fn_calls.rs
promote-not.rs
promote-not.stderr
promoted_const_call2.rs
promoted_const_call2.stderr
promoted_const_call3.rs
promoted_const_call3.stderr
promoted_const_call4.rs
promoted_const_call5.rs
promoted_const_call5.stderr
promoted_const_call.rs
promoted_const_call.stderr
promoted_regression.rs
promoted-const-drop.rs
promoted-const-drop.stderr
promoted-storage.rs
promoted-validation-55454.rs
promotion-mutable-ref.rs
promotion.rs
ptr_comparisons.rs
ptr_comparisons.stderr
ptr_is_null.rs
qualif_overwrite_2.rs
qualif_overwrite_2.stderr
qualif_overwrite.rs
qualif_overwrite.stderr
qualif-indirect-mutation-fail.rs
qualif-indirect-mutation-fail.stderr
qualif-indirect-mutation-pass.rs
qualif-union.rs
qualif-union.stderr
raw_pointer_promoted.rs
raw-ptr-const.rs
raw-ptr-const.stderr
recursive-zst-static.default.stderr
recursive-zst-static.rs
recursive-zst-static.unleash.stderr
recursive.rs
recursive.stderr
references.rs
refs_check_const_eq-issue-88384.rs
refs_check_const_eq-issue-88384.stderr
refs_check_const_value_eq-issue-88876.rs
repeat_match.rs
return-in-const-fn.rs
rustc-const-stability-require-const.rs
rustc-const-stability-require-const.stderr
rustc-impl-const-stability.rs
rvalue-static-promotion.rs
self_normalization2.rs
self_normalization.rs
signed_enum_discr.rs
stable-precise-live-drops-in-libcore.rs
stable-precise-live-drops-in-libcore.stderr
static_mut_containing_mut_ref2.mut_refs.stderr
static_mut_containing_mut_ref2.rs
static_mut_containing_mut_ref2.stock.stderr
static_mut_containing_mut_ref3.rs
static_mut_containing_mut_ref3.stderr
static_mut_containing_mut_ref.rs
static-cycle-error.rs
static-raw-pointer-interning2.rs
static-raw-pointer-interning.rs
too_generic_eval_ice.rs
too_generic_eval_ice.stderr
trait_specialization.rs
trait_specialization.stderr
transmute-const.rs
transmute-size-mismatch-before-typeck.rs
transmute-size-mismatch-before-typeck.stderr
try-operator.rs
tuple-struct-constructors.rs
underscore_const_names.rs
uninhabited-const-issue-61744.rs
uninhabited-const-issue-61744.stderr
union_constant.rs
unnormalized-param-env.rs
unstable-const-fn-in-libcore.rs
unstable-const-fn-in-libcore.stderr
unstable-precise-live-drops-in-libcore.rs
unwind-abort.rs
validate_never_arrays.rs
validate_never_arrays.stderr
write_to_mut_ref_dest.rs
write_to_mut_ref_dest.stock.stderr
write_to_static_via_mut_ref.rs
write_to_static_via_mut_ref.stderr
write-to-static-mut-in-static.rs
write-to-static-mut-in-static.stderr
zst_no_llvm_alloc.rs