]> git.lizzy.rs Git - rust.git/commit
Create stable metric to measure long computation in Const Eval
authorBryan Garza <1396101+bryangarza@users.noreply.github.com>
Tue, 20 Dec 2022 00:51:17 +0000 (00:51 +0000)
committerBryan Garza <1396101+bryangarza@users.noreply.github.com>
Mon, 23 Jan 2023 23:56:22 +0000 (23:56 +0000)
commit360db516ccf358bd4b35c483ae44634a74c66c0b
treeb93ee5a07bbfa3db492ba3baaa26f645b4252121
parentc8e6a9e8b6251bbc8276cb78cabe1998deecbed7
Create stable metric to measure long computation in Const Eval

This patch adds a `MirPass` that tracks the number of back-edges and
function calls in the CFG, adds a new MIR instruction to increment a
counter every time they are encountered during Const Eval, and emit a
warning if a configured limit is breached.
37 files changed:
compiler/rustc_borrowck/src/dataflow.rs
compiler/rustc_borrowck/src/invalidation.rs
compiler/rustc_borrowck/src/lib.rs
compiler/rustc_borrowck/src/type_check/mod.rs
compiler/rustc_codegen_ssa/src/mir/statement.rs
compiler/rustc_const_eval/src/const_eval/eval_queries.rs
compiler/rustc_const_eval/src/const_eval/machine.rs
compiler/rustc_const_eval/src/interpret/eval_context.rs
compiler/rustc_const_eval/src/interpret/place.rs
compiler/rustc_const_eval/src/interpret/step.rs
compiler/rustc_const_eval/src/transform/check_consts/check.rs
compiler/rustc_const_eval/src/transform/validate.rs
compiler/rustc_middle/src/mir/mod.rs
compiler/rustc_middle/src/mir/query.rs
compiler/rustc_middle/src/mir/spanview.rs
compiler/rustc_middle/src/mir/syntax.rs
compiler/rustc_middle/src/mir/visit.rs
compiler/rustc_mir_dataflow/src/impls/liveness.rs
compiler/rustc_mir_dataflow/src/impls/storage_liveness.rs
compiler/rustc_mir_dataflow/src/move_paths/builder.rs
compiler/rustc_mir_dataflow/src/value_analysis.rs
compiler/rustc_mir_transform/src/check_unsafety.rs
compiler/rustc_mir_transform/src/coverage/spans.rs
compiler/rustc_mir_transform/src/ctfe_limit.rs [new file with mode: 0644]
compiler/rustc_mir_transform/src/dead_store_elimination.rs
compiler/rustc_mir_transform/src/dest_prop.rs
compiler/rustc_mir_transform/src/generator.rs
compiler/rustc_mir_transform/src/lib.rs
compiler/rustc_mir_transform/src/remove_noop_landing_pads.rs
compiler/rustc_mir_transform/src/separate_const_switch.rs
compiler/rustc_mir_transform/src/simplify.rs
src/test/ui/consts/const-eval/stable-metric/ctfe-labelled-loop.rs [new file with mode: 0644]
src/test/ui/consts/const-eval/stable-metric/ctfe-labelled-loop.stderr [new file with mode: 0644]
src/test/ui/consts/const-eval/stable-metric/ctfe-recursion.rs [new file with mode: 0644]
src/test/ui/consts/const-eval/stable-metric/ctfe-recursion.stderr [new file with mode: 0644]
src/test/ui/consts/const-eval/stable-metric/ctfe-simple-loop.rs [new file with mode: 0644]
src/test/ui/consts/const-eval/stable-metric/ctfe-simple-loop.stderr [new file with mode: 0644]