rust/tests/ui/consts
bors 3cdd0197e7 Auto merge of #106227 - bryangarza:ctfe-limit, r=oli-obk
Use stable metric for const eval limit instead of current terminator-based logic

This patch adds a `MirPass` that inserts a new MIR instruction `ConstEvalCounter` to any loops and function calls in the CFG. This instruction is used during Const Eval to count against the `const_eval_limit`, and emit the `StepLimitReached` error, replacing the current logic which uses Terminators only.

The new method of counting loops and function calls should be more stable across compiler versions (i.e., not cause crates that compiled successfully before, to no longer compile when changes to the MIR generation/optimization are made).

Also see: #103877
2023-01-29 04:11:27 +00:00
..
auxiliary Encode const mir for closures if they're const 2023-01-16 14:59:27 +00:00
const_constructor
const_in_pattern
const_limit Bless and update consts tests 2023-01-23 23:56:22 +00:00
const-blocks
const-eval Move const-eval/stable-metric ui tests 2023-01-24 00:01:40 +00:00
const-extern-fn
const-mut-refs
control-flow
extra-const-ub
min_const_fn
miri_unleashed
std
array-literal-index-oob.rs
array-literal-index-oob.stderr
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 Encode const mir for closures if they're const 2023-01-16 14:59:27 +00:00
closure-structural-match-issue-90013.rs
const_cmp_type_id.rs Constify TypeId ordering impls 2023-01-16 21:26:03 +01:00
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 Migrate pattern matching 2023-01-11 14:40:02 -08:00
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
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
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 fix fmt and bless 2023-01-12 02:28:38 +00:00
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 fix fmt and bless 2023-01-12 02:28:38 +00:00
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 suggest fix for attempted integer identifier in patterns 2023-01-14 12:51:20 +13:00
const-match-check.eval2.stderr suggest fix for attempted integer identifier in patterns 2023-01-14 12:51:20 +13:00
const-match-check.matchck.stderr suggest fix for attempted integer identifier in patterns 2023-01-14 12:51:20 +13:00
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 Migrate pattern matching 2023-01-11 14:40:02 -08:00
const-pattern-irrefutable.stderr Migrate pattern matching 2023-01-11 14:40:02 -08:00
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 defer array len printing to const arg printing 2023-01-18 04:07:39 +00:00
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 Handle inference variables in CollectAllMismatches correctly 2023-01-11 20:01:24 +00:00
ct-var-in-collect_all_mismatches.stderr Handle inference variables in CollectAllMismatches correctly 2023-01-11 20:01:24 +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
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 fix fmt and bless 2023-01-12 02:28:38 +00:00
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 fix fmt and bless 2023-01-12 02:28:38 +00:00
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-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 defer array len printing to const arg printing 2023-01-18 04:07:39 +00:00
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-54954.rs
issue-54954.stderr
issue-56164.rs
issue-56164.stderr fix fmt and bless 2023-01-12 02:28:38 +00:00
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 fix fmt and bless 2023-01-12 02:28:38 +00:00
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 Constify TypeId ordering impls 2023-01-16 21:26:03 +01:00
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 fix fmt and bless 2023-01-12 02:28:38 +00:00
issue-90870.rs fix fmt and bless 2023-01-12 02:28:38 +00:00
issue-90870.stderr fix fmt and bless 2023-01-12 02:28:38 +00:00
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
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
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 Tweak E0597 2023-01-15 19:46:20 +00:00
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 defer array len printing to const arg printing 2023-01-18 04:07:39 +00:00
too_generic_eval_ice.stderr defer array len printing to const arg printing 2023-01-18 04:07:39 +00:00
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