[INFO] cloning repository https://github.com/zesterer/funkicrab [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/zesterer/funkicrab" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fzesterer%2Ffunkicrab", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fzesterer%2Ffunkicrab'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 98528cc593478391a0ef0f91ff533592cf263914 [INFO] building zesterer/funkicrab against master#11663cd3bfefef7d34e8f0892c250bf698049392+rustflags=-Dtail-expr-drop-order for pr-134523 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fzesterer%2Ffunkicrab" "/workspace/builds/worker-5-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc1/source'... [INFO] [stderr] done. [INFO] validating manifest of git repo https://github.com/zesterer/funkicrab on toolchain 11663cd3bfefef7d34e8f0892c250bf698049392 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+11663cd3bfefef7d34e8f0892c250bf698049392" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] started tweaking git repo https://github.com/zesterer/funkicrab [INFO] finished tweaking git repo https://github.com/zesterer/funkicrab [INFO] tweaked toml for git repo https://github.com/zesterer/funkicrab written to /workspace/builds/worker-5-tc1/source/Cargo.toml [INFO] crate git repo https://github.com/zesterer/funkicrab already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+11663cd3bfefef7d34e8f0892c250bf698049392" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded bimap v0.1.5 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:f3a9d4ad9d972b27faf3965f35b62e55ba32bbce8f20bc8fe909558a86702fde" "/opt/rustwide/cargo-home/bin/cargo" "+11663cd3bfefef7d34e8f0892c250bf698049392" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 21a3980a097402ef03298e8c0517e8261f39f5e01187e8d062b8ffa3a4c16cc3 [INFO] running `Command { std: "docker" "start" "-a" "21a3980a097402ef03298e8c0517e8261f39f5e01187e8d062b8ffa3a4c16cc3", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "21a3980a097402ef03298e8c0517e8261f39f5e01187e8d062b8ffa3a4c16cc3", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "21a3980a097402ef03298e8c0517e8261f39f5e01187e8d062b8ffa3a4c16cc3", kill_on_drop: false }` [INFO] [stdout] 21a3980a097402ef03298e8c0517e8261f39f5e01187e8d062b8ffa3a4c16cc3 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid -Dtail-expr-drop-order" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:f3a9d4ad9d972b27faf3965f35b62e55ba32bbce8f20bc8fe909558a86702fde" "/opt/rustwide/cargo-home/bin/cargo" "+11663cd3bfefef7d34e8f0892c250bf698049392" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] c7bc8715778a0bd963bbb0c3c8cb4c9c3e32ef00b73627780aece589cd376681 [INFO] running `Command { std: "docker" "start" "-a" "c7bc8715778a0bd963bbb0c3c8cb4c9c3e32ef00b73627780aece589cd376681", kill_on_drop: false }` [INFO] [stderr] Compiling bimap v0.1.5 [INFO] [stderr] Compiling funkicrab v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `super::Error` [INFO] [stdout] --> src/exec.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use super::Error; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::collections::HashMap` [INFO] [stdout] --> src/hir.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use std::collections::HashMap; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `iter::FromIterator` [INFO] [stdout] --> src/llir.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | iter::FromIterator, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `if` condition [INFO] [stdout] --> src/llir.rs:242:20 [INFO] [stdout] | [INFO] [stdout] 242 | if (if let CellAccessInfo::Exactly(cells) = &cell_reads { [INFO] [stdout] | ^ [INFO] [stdout] ... [INFO] [stdout] 246 | }) { [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_parens)]` on by default [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 242 ~ if if let CellAccessInfo::Exactly(cells) = &cell_reads { [INFO] [stdout] 243 | cells.len() == 0 [INFO] [stdout] 244 | } else { [INFO] [stdout] 245 | false [INFO] [stdout] 246 ~ } { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `CellAccessInfo` [INFO] [stdout] --> src/opt.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | CellAccessInfo, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the feature `label_break_value` has been stable since 1.65.0 and no longer requires an attribute to enable [INFO] [stdout] --> src/main.rs:1:12 [INFO] [stdout] | [INFO] [stdout] 1 | #![feature(label_break_value)] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(stable_features)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable expression [INFO] [stdout] --> src/opt.rs:73:5 [INFO] [stdout] | [INFO] [stdout] 65 | / loop { [INFO] [stdout] 66 | | let new_prog = optimise_program(prog.clone()); [INFO] [stdout] 67 | | if prog == new_prog { [INFO] [stdout] 68 | | return prog; [INFO] [stdout] ... | [INFO] [stdout] 72 | | } [INFO] [stdout] | |_____- any code following this expression is unreachable [INFO] [stdout] 73 | prog [INFO] [stdout] | ^^^^ unreachable expression [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unreachable_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `inst` [INFO] [stdout] --> src/ir.rs:57:13 [INFO] [stdout] | [INFO] [stdout] 57 | inst => { return None; }, [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_inst` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `i` [INFO] [stdout] --> src/ir.rs:61:19 [INFO] [stdout] | [INFO] [stdout] 61 | if let Some(&(i, n)) = copymuls.get(&base_shift) { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_i` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `n` [INFO] [stdout] --> src/ir.rs:61:22 [INFO] [stdout] | [INFO] [stdout] 61 | if let Some(&(i, n)) = copymuls.get(&base_shift) { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_n` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `i` [INFO] [stdout] --> src/ir.rs:64:60 [INFO] [stdout] | [INFO] [stdout] 64 | return Some(copymuls.into_iter().map(|(shift, (i, f))| (shift, f)).collect()); [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_i` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `c` [INFO] [stdout] --> src/ir.rs:116:14 [INFO] [stdout] | [INFO] [stdout] 116 | (c, Inst::Add(_, 0)) => {}, [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_c` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `c` [INFO] [stdout] --> src/ir.rs:117:14 [INFO] [stdout] | [INFO] [stdout] 117 | (c, Inst::CopyMul(_, _, 0)) => {}, [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_c` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `c` [INFO] [stdout] --> src/ir.rs:118:14 [INFO] [stdout] | [INFO] [stdout] 118 | (c, Inst::Nop) => {}, [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_c` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `c` [INFO] [stdout] --> src/ir.rs:119:14 [INFO] [stdout] | [INFO] [stdout] 119 | (c, Inst::Move(0)) => {}, [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_c` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/ir.rs:269:9 [INFO] [stdout] | [INFO] [stdout] 269 | let mut cells = Vec::new(); [INFO] [stdout] | ----^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `val_r` [INFO] [stdout] --> src/ir.rs:224:25 [INFO] [stdout] | [INFO] [stdout] 224 | let val_r = get_cell_val(&cells, idx_r); [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_val_r` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `i` [INFO] [stdout] --> src/ir.rs:289:13 [INFO] [stdout] | [INFO] [stdout] 289 | i => { ir.pop(); }, [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_i` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `r` [INFO] [stdout] --> src/comp.rs:16:27 [INFO] [stdout] | [INFO] [stdout] 16 | Inst::Add(r, 0) => {}, [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_r` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `local_id_count` [INFO] [stdout] --> src/hir.rs:78:21 [INFO] [stdout] | [INFO] [stdout] 78 | let mut local_id_count = 0; [INFO] [stdout] | ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_local_id_count` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/hir.rs:78:17 [INFO] [stdout] | [INFO] [stdout] 78 | let mut local_id_count = 0; [INFO] [stdout] | ----^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `code` [INFO] [stdout] --> src/hir.rs:239:17 [INFO] [stdout] | [INFO] [stdout] 239 | let mut code = String::new(); [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_code` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/hir.rs:239:13 [INFO] [stdout] | [INFO] [stdout] 239 | let mut code = String::new(); [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/hir.rs:201:21 [INFO] [stdout] | [INFO] [stdout] 201 | o => panic!("Unknown operation: {:?}", o), [INFO] [stdout] | ^ no value can reach this [INFO] [stdout] | [INFO] [stdout] note: multiple earlier patterns match some of the same values [INFO] [stdout] --> src/hir.rs:201:21 [INFO] [stdout] | [INFO] [stdout] 189 | Op::MovePtr(val) => { [INFO] [stdout] | ---------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 193 | Op::SetLocal { id, val } => { [INFO] [stdout] | ------------------------ matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 197 | Op::Output(val) => { [INFO] [stdout] | --------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 201 | o => panic!("Unknown operation: {:?}", o), [INFO] [stdout] | ^ collectively making this unreachable [INFO] [stdout] = note: `#[warn(unreachable_patterns)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/hir.rs:232:21 [INFO] [stdout] | [INFO] [stdout] 232 | _ => panic!("Unknown section type!"), [INFO] [stdout] | ^ no value can reach this [INFO] [stdout] | [INFO] [stdout] note: multiple earlier patterns match some of the same values [INFO] [stdout] --> src/hir.rs:232:21 [INFO] [stdout] | [INFO] [stdout] 222 | Section::Proc(proc) => { code += &stringify_proc(&proc, depth); }, [INFO] [stdout] | ------------------- matches some of the same values [INFO] [stdout] 223 | Section::Loop(lp) => { [INFO] [stdout] | ----------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 232 | _ => panic!("Unknown section type!"), [INFO] [stdout] | ^ collectively making this unreachable [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `idx` [INFO] [stdout] --> src/llir.rs:142:57 [INFO] [stdout] | [INFO] [stdout] 142 | let change_reads = self.changes.iter().filter(|(idx, c)| if let Change::Incr(_) = c { true } else { false }).map(|(idx, _)| *idx); [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_idx` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `n` [INFO] [stdout] --> src/llir.rs:240:30 [INFO] [stdout] | [INFO] [stdout] 240 | ValInfo::Exactly(n) => { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_n` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `input` [INFO] [stdout] --> src/llir.rs:288:28 [INFO] [stdout] | [INFO] [stdout] 288 | Section::Input(input) => ValInfo::Exactly(0), [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_input` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/llir.rs:357:21 [INFO] [stdout] | [INFO] [stdout] 357 | t => panic!("Unknown token: {:?}", t), [INFO] [stdout] | ^ no value can reach this [INFO] [stdout] | [INFO] [stdout] note: multiple earlier patterns match some of the same values [INFO] [stdout] --> src/llir.rs:357:21 [INFO] [stdout] | [INFO] [stdout] 326 | Token::Right => current_bs.shift.0 += 1, [INFO] [stdout] | ------------ matches some of the same values [INFO] [stdout] 327 | Token::Left => current_bs.shift.0 -= 1, [INFO] [stdout] | ----------- matches some of the same values [INFO] [stdout] 328 | Token::Inc => current_bs.add_cell_incr(current_bs.shift, Diff(1)), [INFO] [stdout] | ---------- matches some of the same values [INFO] [stdout] 329 | Token::Dec => current_bs.add_cell_incr(current_bs.shift, Diff(-1)), [INFO] [stdout] | ---------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 357 | t => panic!("Unknown token: {:?}", t), [INFO] [stdout] | ^ ...and 3 other patterns collectively make this unreachable [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/llir.rs:484:21 [INFO] [stdout] | [INFO] [stdout] 484 | _ => panic!("Unknown section type!"), [INFO] [stdout] | ^ no value can reach this [INFO] [stdout] | [INFO] [stdout] note: multiple earlier patterns match some of the same values [INFO] [stdout] --> src/llir.rs:484:21 [INFO] [stdout] | [INFO] [stdout] 481 | Section::Basic(basic) => stringify_basic_section(&basic, depth), [INFO] [stdout] | --------------------- matches some of the same values [INFO] [stdout] 482 | Section::Input(input) => stringify_input_section(&input, depth), [INFO] [stdout] | --------------------- matches some of the same values [INFO] [stdout] 483 | Section::Loop(luup) => stringify_loop_section(&luup, depth), [INFO] [stdout] | ------------------- matches some of the same values [INFO] [stdout] 484 | _ => panic!("Unknown section type!"), [INFO] [stdout] | ^ collectively making this unreachable [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/opt.rs:46:26 [INFO] [stdout] | [INFO] [stdout] 46 | pub fn optimise_sections(mut sections: Vec
) -> Vec
{ [INFO] [stdout] | ----^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `bracket_count` [INFO] [stdout] --> src/main.rs:41:17 [INFO] [stdout] | [INFO] [stdout] 41 | let mut bracket_count = 0; [INFO] [stdout] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_bracket_count` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:41:13 [INFO] [stdout] | [INFO] [stdout] 41 | let mut bracket_count = 0; [INFO] [stdout] | ----^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `None` is never constructed [INFO] [stdout] --> src/exec.rs:19:9 [INFO] [stdout] | [INFO] [stdout] 16 | enum Done { [INFO] [stdout] | ---- variant in this enum [INFO] [stdout] ... [INFO] [stdout] 19 | None, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Done` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/hir.rs:12:11 [INFO] [stdout] | [INFO] [stdout] 12 | Const(i32), [INFO] [stdout] | ----- ^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `Expr` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field [INFO] [stdout] | [INFO] [stdout] 12 | Const(()), [INFO] [stdout] | ~~ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `0` and `1` are never read [INFO] [stdout] --> src/hir.rs:13:9 [INFO] [stdout] | [INFO] [stdout] 13 | Sum(Box, Box), [INFO] [stdout] | --- ^^^^^^^^^ ^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | fields in this variant [INFO] [stdout] | [INFO] [stdout] = note: `Expr` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the fields to be of unit type to suppress this warning while preserving the field numbering, or remove the fields [INFO] [stdout] | [INFO] [stdout] 13 | Sum((), ()), [INFO] [stdout] | ~~ ~~ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `0` and `1` are never read [INFO] [stdout] --> src/hir.rs:14:13 [INFO] [stdout] | [INFO] [stdout] 14 | Product(Box, Box), [INFO] [stdout] | ------- ^^^^^^^^^ ^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | fields in this variant [INFO] [stdout] | [INFO] [stdout] = note: `Expr` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the fields to be of unit type to suppress this warning while preserving the field numbering, or remove the fields [INFO] [stdout] | [INFO] [stdout] 14 | Product((), ()), [INFO] [stdout] | ~~ ~~ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/hir.rs:16:13 [INFO] [stdout] | [INFO] [stdout] 16 | CellVal(Idx), [INFO] [stdout] | ------- ^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `Expr` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field [INFO] [stdout] | [INFO] [stdout] 16 | CellVal(()), [INFO] [stdout] | ~~ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/hir.rs:17:14 [INFO] [stdout] | [INFO] [stdout] 17 | LocalVal(usize), [INFO] [stdout] | -------- ^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `Expr` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field [INFO] [stdout] | [INFO] [stdout] 17 | LocalVal(()), [INFO] [stdout] | ~~ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Neg` is never constructed [INFO] [stdout] --> src/hir.rs:15:5 [INFO] [stdout] | [INFO] [stdout] 11 | pub enum Expr { [INFO] [stdout] | ---- variant in this enum [INFO] [stdout] ... [INFO] [stdout] 15 | Neg(Box), [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Expr` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `id` and `val` are never read [INFO] [stdout] --> src/hir.rs:24:9 [INFO] [stdout] | [INFO] [stdout] 23 | SetLocal { [INFO] [stdout] | -------- fields in this variant [INFO] [stdout] 24 | id: usize, [INFO] [stdout] | ^^ [INFO] [stdout] 25 | val: Expr, [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Op` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/hir.rs:27:13 [INFO] [stdout] | [INFO] [stdout] 27 | MovePtr(Expr), [INFO] [stdout] | ------- ^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `Op` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field [INFO] [stdout] | [INFO] [stdout] 27 | MovePtr(()), [INFO] [stdout] | ~~ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/hir.rs:28:12 [INFO] [stdout] | [INFO] [stdout] 28 | Output(Expr), [INFO] [stdout] | ------ ^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `Op` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field [INFO] [stdout] | [INFO] [stdout] 28 | Output(()), [INFO] [stdout] | ~~ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `predicate` and `sections` are never read [INFO] [stdout] --> src/hir.rs:33:5 [INFO] [stdout] | [INFO] [stdout] 32 | pub struct Loop { [INFO] [stdout] | ---- fields in this struct [INFO] [stdout] 33 | predicate: Expr, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 34 | sections: Vec
, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Loop` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/hir.rs:66:10 [INFO] [stdout] | [INFO] [stdout] 66 | Proc(Proc), [INFO] [stdout] | ---- ^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `Section` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field [INFO] [stdout] | [INFO] [stdout] 66 | Proc(()), [INFO] [stdout] | ~~ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/hir.rs:67:10 [INFO] [stdout] | [INFO] [stdout] 67 | Loop(Loop), [INFO] [stdout] | ---- ^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `Section` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field [INFO] [stdout] | [INFO] [stdout] 67 | Loop(()), [INFO] [stdout] | ~~ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `sections` is never read [INFO] [stdout] --> src/hir.rs:72:5 [INFO] [stdout] | [INFO] [stdout] 71 | pub struct Program { [INFO] [stdout] | ------- field in this struct [INFO] [stdout] 72 | sections: Vec
, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Program` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `generate_c` is never used [INFO] [stdout] --> src/hir.rs:156:12 [INFO] [stdout] | [INFO] [stdout] 155 | impl Program { [INFO] [stdout] | ------------ method in this implementation [INFO] [stdout] 156 | pub fn generate_c(&self) -> String { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `stringify` is never used [INFO] [stdout] --> src/hir.rs:158:16 [INFO] [stdout] | [INFO] [stdout] 157 | impl Expr { [INFO] [stdout] | --------- method in this implementation [INFO] [stdout] 158 | fn stringify(&self, proc: Option<&Proc>) -> String { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Exactly` and `MultipleOf` are never constructed [INFO] [stdout] --> src/llir.rs:19:5 [INFO] [stdout] | [INFO] [stdout] 17 | pub enum ValInfo { [INFO] [stdout] | ------- variants in this enum [INFO] [stdout] 18 | // Value is (N) [INFO] [stdout] 19 | Exactly(i32), [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 20 | // Value is (base + N * factor) [INFO] [stdout] 21 | MultipleOf { base: i32, factor: i32 }, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ValInfo` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple variants are never constructed [INFO] [stdout] --> src/llir.rs:32:5 [INFO] [stdout] | [INFO] [stdout] 30 | pub enum CellAccessInfo { [INFO] [stdout] | -------------- variants in this enum [INFO] [stdout] 31 | // Only these specific pointer-relative cells are accessed [INFO] [stdout] 32 | Exactly(HashSet), [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 33 | // Only this pointer-relative cell or any above it in the cell array are accessed [INFO] [stdout] 34 | EqualOrAbove(Idx), [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 35 | // Only cells below this pointer-relative cell (and not this cell) in the cell array are accessed [INFO] [stdout] 36 | Below(Idx), [INFO] [stdout] | ^^^^^ [INFO] [stdout] 37 | // Only cells within this range are accessed (lower bound is inclusive, upper bound is exclusive) [INFO] [stdout] 38 | Inside(Idx, Idx), [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 39 | // Only cells outside this range are accessed (lower bound is exclusive, upper bound is inclusive) [INFO] [stdout] 40 | Outside(Idx, Idx), [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 41 | // Only these specific cells are guaranteed to not be accessed [INFO] [stdout] 42 | Not(HashSet), [INFO] [stdout] | ^^^ [INFO] [stdout] 43 | // No information about cell access can be determined, any of them could be accessed [INFO] [stdout] 44 | Unknown, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `CellAccessInfo` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `union` and `intersection` are never used [INFO] [stdout] --> src/llir.rs:50:12 [INFO] [stdout] | [INFO] [stdout] 47 | impl CellAccessInfo { [INFO] [stdout] | ------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 50 | pub fn union(&self, rel_shift: Idx, other: &CellAccessInfo) -> Self { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 63 | pub fn intersection(&self, rel_shift: Idx, other: &CellAccessInfo) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Set` is never constructed [INFO] [stdout] --> src/llir.rs:81:5 [INFO] [stdout] | [INFO] [stdout] 79 | pub enum Change { [INFO] [stdout] | ------ variant in this enum [INFO] [stdout] 80 | Incr(Diff), [INFO] [stdout] 81 | Set(u8), [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Change` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `has_no_effect` and `get_cell_reads` are never used [INFO] [stdout] --> src/llir.rs:134:12 [INFO] [stdout] | [INFO] [stdout] 103 | impl BasicSection { [INFO] [stdout] | ----------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 134 | pub fn has_no_effect(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 139 | pub fn get_cell_reads(&self) -> CellAccessInfo { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `has_no_effect` and `get_cell_reads` are never used [INFO] [stdout] --> src/llir.rs:163:12 [INFO] [stdout] | [INFO] [stdout] 153 | impl InputSection { [INFO] [stdout] | ----------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 163 | pub fn has_no_effect(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 168 | pub fn get_cell_reads(&self) -> CellAccessInfo { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Const` is never constructed [INFO] [stdout] --> src/llir.rs:179:5 [INFO] [stdout] | [INFO] [stdout] 177 | pub enum Predicate { [INFO] [stdout] | --------- variant in this enum [INFO] [stdout] 178 | Cell(Idx, Diff), [INFO] [stdout] 179 | Const(u8), [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Predicate` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `has_no_effect` and `get_cell_reads` are never used [INFO] [stdout] --> src/llir.rs:206:12 [INFO] [stdout] | [INFO] [stdout] 192 | impl LoopSection { [INFO] [stdout] | ---------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 206 | pub fn has_no_effect(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 219 | pub fn get_cell_reads(&self) -> CellAccessInfo { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `get_shift`, `has_no_effect`, and `get_cell_reads` are never used [INFO] [stdout] --> src/llir.rs:285:12 [INFO] [stdout] | [INFO] [stdout] 280 | impl Section { [INFO] [stdout] | ------------ methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 285 | pub fn get_shift(&self) -> ValInfo { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 294 | pub fn has_no_effect(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 303 | pub fn get_cell_reads(&self) -> CellAccessInfo { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `generate_c` is never used [INFO] [stdout] --> src/llir.rs:371:12 [INFO] [stdout] | [INFO] [stdout] 370 | impl Program { [INFO] [stdout] | ------------ method in this implementation [INFO] [stdout] 371 | pub fn generate_c(&self) -> Result { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `optimise_calc_shifts` is never used [INFO] [stdout] --> src/opt.rs:15:8 [INFO] [stdout] | [INFO] [stdout] 15 | pub fn optimise_calc_shifts(section: &mut Section) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `optimise_sections` is never used [INFO] [stdout] --> src/opt.rs:46:8 [INFO] [stdout] | [INFO] [stdout] 46 | pub fn optimise_sections(mut sections: Vec
) -> Vec
{ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `optimise_program` is never used [INFO] [stdout] --> src/opt.rs:59:8 [INFO] [stdout] | [INFO] [stdout] 59 | pub fn optimise_program(mut prog: Program) -> Program { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `optimise` is never used [INFO] [stdout] --> src/opt.rs:64:8 [INFO] [stdout] | [INFO] [stdout] 64 | pub fn optimise(mut prog: Program) -> Program { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/hir.rs:157:9 [INFO] [stdout] | [INFO] [stdout] 156 | pub fn generate_c(&self) -> String { [INFO] [stdout] | ---------------------------------- move the `impl` block outside of this method `generate_c` [INFO] [stdout] 157 | impl Expr { [INFO] [stdout] | ^^^^^---- [INFO] [stdout] | | [INFO] [stdout] | `Expr` is not local [INFO] [stdout] | [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: `#[warn(non_local_definitions)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.43s [INFO] running `Command { std: "docker" "inspect" "c7bc8715778a0bd963bbb0c3c8cb4c9c3e32ef00b73627780aece589cd376681", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "c7bc8715778a0bd963bbb0c3c8cb4c9c3e32ef00b73627780aece589cd376681", kill_on_drop: false }` [INFO] [stdout] c7bc8715778a0bd963bbb0c3c8cb4c9c3e32ef00b73627780aece589cd376681 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid -Dtail-expr-drop-order" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:f3a9d4ad9d972b27faf3965f35b62e55ba32bbce8f20bc8fe909558a86702fde" "/opt/rustwide/cargo-home/bin/cargo" "+11663cd3bfefef7d34e8f0892c250bf698049392" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] e48601899d1db85a19d2451c9a4858acfcfc15dc7f86cb458d80d69c5cd20b2b [INFO] running `Command { std: "docker" "start" "-a" "e48601899d1db85a19d2451c9a4858acfcfc15dc7f86cb458d80d69c5cd20b2b", kill_on_drop: false }` [INFO] [stderr] Compiling funkicrab v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `super::Error` [INFO] [stdout] --> src/exec.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use super::Error; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::collections::HashMap` [INFO] [stdout] --> src/hir.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use std::collections::HashMap; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `iter::FromIterator` [INFO] [stdout] --> src/llir.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | iter::FromIterator, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `if` condition [INFO] [stdout] --> src/llir.rs:242:20 [INFO] [stdout] | [INFO] [stdout] 242 | if (if let CellAccessInfo::Exactly(cells) = &cell_reads { [INFO] [stdout] | ^ [INFO] [stdout] ... [INFO] [stdout] 246 | }) { [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_parens)]` on by default [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 242 ~ if if let CellAccessInfo::Exactly(cells) = &cell_reads { [INFO] [stdout] 243 | cells.len() == 0 [INFO] [stdout] 244 | } else { [INFO] [stdout] 245 | false [INFO] [stdout] 246 ~ } { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `CellAccessInfo` [INFO] [stdout] --> src/opt.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | CellAccessInfo, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the feature `label_break_value` has been stable since 1.65.0 and no longer requires an attribute to enable [INFO] [stdout] --> src/main.rs:1:12 [INFO] [stdout] | [INFO] [stdout] 1 | #![feature(label_break_value)] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(stable_features)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable expression [INFO] [stdout] --> src/opt.rs:73:5 [INFO] [stdout] | [INFO] [stdout] 65 | / loop { [INFO] [stdout] 66 | | let new_prog = optimise_program(prog.clone()); [INFO] [stdout] 67 | | if prog == new_prog { [INFO] [stdout] 68 | | return prog; [INFO] [stdout] ... | [INFO] [stdout] 72 | | } [INFO] [stdout] | |_____- any code following this expression is unreachable [INFO] [stdout] 73 | prog [INFO] [stdout] | ^^^^ unreachable expression [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unreachable_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `inst` [INFO] [stdout] --> src/ir.rs:57:13 [INFO] [stdout] | [INFO] [stdout] 57 | inst => { return None; }, [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_inst` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `i` [INFO] [stdout] --> src/ir.rs:61:19 [INFO] [stdout] | [INFO] [stdout] 61 | if let Some(&(i, n)) = copymuls.get(&base_shift) { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_i` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `n` [INFO] [stdout] --> src/ir.rs:61:22 [INFO] [stdout] | [INFO] [stdout] 61 | if let Some(&(i, n)) = copymuls.get(&base_shift) { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_n` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `i` [INFO] [stdout] --> src/ir.rs:64:60 [INFO] [stdout] | [INFO] [stdout] 64 | return Some(copymuls.into_iter().map(|(shift, (i, f))| (shift, f)).collect()); [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_i` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `c` [INFO] [stdout] --> src/ir.rs:116:14 [INFO] [stdout] | [INFO] [stdout] 116 | (c, Inst::Add(_, 0)) => {}, [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_c` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `c` [INFO] [stdout] --> src/ir.rs:117:14 [INFO] [stdout] | [INFO] [stdout] 117 | (c, Inst::CopyMul(_, _, 0)) => {}, [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_c` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `c` [INFO] [stdout] --> src/ir.rs:118:14 [INFO] [stdout] | [INFO] [stdout] 118 | (c, Inst::Nop) => {}, [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_c` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `c` [INFO] [stdout] --> src/ir.rs:119:14 [INFO] [stdout] | [INFO] [stdout] 119 | (c, Inst::Move(0)) => {}, [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_c` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/ir.rs:269:9 [INFO] [stdout] | [INFO] [stdout] 269 | let mut cells = Vec::new(); [INFO] [stdout] | ----^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `val_r` [INFO] [stdout] --> src/ir.rs:224:25 [INFO] [stdout] | [INFO] [stdout] 224 | let val_r = get_cell_val(&cells, idx_r); [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_val_r` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `i` [INFO] [stdout] --> src/ir.rs:289:13 [INFO] [stdout] | [INFO] [stdout] 289 | i => { ir.pop(); }, [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_i` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `r` [INFO] [stdout] --> src/comp.rs:16:27 [INFO] [stdout] | [INFO] [stdout] 16 | Inst::Add(r, 0) => {}, [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_r` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `local_id_count` [INFO] [stdout] --> src/hir.rs:78:21 [INFO] [stdout] | [INFO] [stdout] 78 | let mut local_id_count = 0; [INFO] [stdout] | ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_local_id_count` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/hir.rs:78:17 [INFO] [stdout] | [INFO] [stdout] 78 | let mut local_id_count = 0; [INFO] [stdout] | ----^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `code` [INFO] [stdout] --> src/hir.rs:239:17 [INFO] [stdout] | [INFO] [stdout] 239 | let mut code = String::new(); [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_code` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/hir.rs:239:13 [INFO] [stdout] | [INFO] [stdout] 239 | let mut code = String::new(); [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/hir.rs:201:21 [INFO] [stdout] | [INFO] [stdout] 201 | o => panic!("Unknown operation: {:?}", o), [INFO] [stdout] | ^ no value can reach this [INFO] [stdout] | [INFO] [stdout] note: multiple earlier patterns match some of the same values [INFO] [stdout] --> src/hir.rs:201:21 [INFO] [stdout] | [INFO] [stdout] 189 | Op::MovePtr(val) => { [INFO] [stdout] | ---------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 193 | Op::SetLocal { id, val } => { [INFO] [stdout] | ------------------------ matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 197 | Op::Output(val) => { [INFO] [stdout] | --------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 201 | o => panic!("Unknown operation: {:?}", o), [INFO] [stdout] | ^ collectively making this unreachable [INFO] [stdout] = note: `#[warn(unreachable_patterns)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/hir.rs:232:21 [INFO] [stdout] | [INFO] [stdout] 232 | _ => panic!("Unknown section type!"), [INFO] [stdout] | ^ no value can reach this [INFO] [stdout] | [INFO] [stdout] note: multiple earlier patterns match some of the same values [INFO] [stdout] --> src/hir.rs:232:21 [INFO] [stdout] | [INFO] [stdout] 222 | Section::Proc(proc) => { code += &stringify_proc(&proc, depth); }, [INFO] [stdout] | ------------------- matches some of the same values [INFO] [stdout] 223 | Section::Loop(lp) => { [INFO] [stdout] | ----------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 232 | _ => panic!("Unknown section type!"), [INFO] [stdout] | ^ collectively making this unreachable [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `idx` [INFO] [stdout] --> src/llir.rs:142:57 [INFO] [stdout] | [INFO] [stdout] 142 | let change_reads = self.changes.iter().filter(|(idx, c)| if let Change::Incr(_) = c { true } else { false }).map(|(idx, _)| *idx); [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_idx` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `n` [INFO] [stdout] --> src/llir.rs:240:30 [INFO] [stdout] | [INFO] [stdout] 240 | ValInfo::Exactly(n) => { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_n` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `input` [INFO] [stdout] --> src/llir.rs:288:28 [INFO] [stdout] | [INFO] [stdout] 288 | Section::Input(input) => ValInfo::Exactly(0), [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_input` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/llir.rs:357:21 [INFO] [stdout] | [INFO] [stdout] 357 | t => panic!("Unknown token: {:?}", t), [INFO] [stdout] | ^ no value can reach this [INFO] [stdout] | [INFO] [stdout] note: multiple earlier patterns match some of the same values [INFO] [stdout] --> src/llir.rs:357:21 [INFO] [stdout] | [INFO] [stdout] 326 | Token::Right => current_bs.shift.0 += 1, [INFO] [stdout] | ------------ matches some of the same values [INFO] [stdout] 327 | Token::Left => current_bs.shift.0 -= 1, [INFO] [stdout] | ----------- matches some of the same values [INFO] [stdout] 328 | Token::Inc => current_bs.add_cell_incr(current_bs.shift, Diff(1)), [INFO] [stdout] | ---------- matches some of the same values [INFO] [stdout] 329 | Token::Dec => current_bs.add_cell_incr(current_bs.shift, Diff(-1)), [INFO] [stdout] | ---------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 357 | t => panic!("Unknown token: {:?}", t), [INFO] [stdout] | ^ ...and 3 other patterns collectively make this unreachable [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/llir.rs:484:21 [INFO] [stdout] | [INFO] [stdout] 484 | _ => panic!("Unknown section type!"), [INFO] [stdout] | ^ no value can reach this [INFO] [stdout] | [INFO] [stdout] note: multiple earlier patterns match some of the same values [INFO] [stdout] --> src/llir.rs:484:21 [INFO] [stdout] | [INFO] [stdout] 481 | Section::Basic(basic) => stringify_basic_section(&basic, depth), [INFO] [stdout] | --------------------- matches some of the same values [INFO] [stdout] 482 | Section::Input(input) => stringify_input_section(&input, depth), [INFO] [stdout] | --------------------- matches some of the same values [INFO] [stdout] 483 | Section::Loop(luup) => stringify_loop_section(&luup, depth), [INFO] [stdout] | ------------------- matches some of the same values [INFO] [stdout] 484 | _ => panic!("Unknown section type!"), [INFO] [stdout] | ^ collectively making this unreachable [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/opt.rs:46:26 [INFO] [stdout] | [INFO] [stdout] 46 | pub fn optimise_sections(mut sections: Vec
) -> Vec
{ [INFO] [stdout] | ----^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `bracket_count` [INFO] [stdout] --> src/main.rs:41:17 [INFO] [stdout] | [INFO] [stdout] 41 | let mut bracket_count = 0; [INFO] [stdout] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_bracket_count` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:41:13 [INFO] [stdout] | [INFO] [stdout] 41 | let mut bracket_count = 0; [INFO] [stdout] | ----^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `None` is never constructed [INFO] [stdout] --> src/exec.rs:19:9 [INFO] [stdout] | [INFO] [stdout] 16 | enum Done { [INFO] [stdout] | ---- variant in this enum [INFO] [stdout] ... [INFO] [stdout] 19 | None, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Done` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/hir.rs:12:11 [INFO] [stdout] | [INFO] [stdout] 12 | Const(i32), [INFO] [stdout] | ----- ^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `Expr` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field [INFO] [stdout] | [INFO] [stdout] 12 | Const(()), [INFO] [stdout] | ~~ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `0` and `1` are never read [INFO] [stdout] --> src/hir.rs:13:9 [INFO] [stdout] | [INFO] [stdout] 13 | Sum(Box, Box), [INFO] [stdout] | --- ^^^^^^^^^ ^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | fields in this variant [INFO] [stdout] | [INFO] [stdout] = note: `Expr` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the fields to be of unit type to suppress this warning while preserving the field numbering, or remove the fields [INFO] [stdout] | [INFO] [stdout] 13 | Sum((), ()), [INFO] [stdout] | ~~ ~~ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `0` and `1` are never read [INFO] [stdout] --> src/hir.rs:14:13 [INFO] [stdout] | [INFO] [stdout] 14 | Product(Box, Box), [INFO] [stdout] | ------- ^^^^^^^^^ ^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | fields in this variant [INFO] [stdout] | [INFO] [stdout] = note: `Expr` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the fields to be of unit type to suppress this warning while preserving the field numbering, or remove the fields [INFO] [stdout] | [INFO] [stdout] 14 | Product((), ()), [INFO] [stdout] | ~~ ~~ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/hir.rs:16:13 [INFO] [stdout] | [INFO] [stdout] 16 | CellVal(Idx), [INFO] [stdout] | ------- ^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `Expr` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field [INFO] [stdout] | [INFO] [stdout] 16 | CellVal(()), [INFO] [stdout] | ~~ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/hir.rs:17:14 [INFO] [stdout] | [INFO] [stdout] 17 | LocalVal(usize), [INFO] [stdout] | -------- ^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `Expr` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field [INFO] [stdout] | [INFO] [stdout] 17 | LocalVal(()), [INFO] [stdout] | ~~ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Neg` is never constructed [INFO] [stdout] --> src/hir.rs:15:5 [INFO] [stdout] | [INFO] [stdout] 11 | pub enum Expr { [INFO] [stdout] | ---- variant in this enum [INFO] [stdout] ... [INFO] [stdout] 15 | Neg(Box), [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Expr` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `id` and `val` are never read [INFO] [stdout] --> src/hir.rs:24:9 [INFO] [stdout] | [INFO] [stdout] 23 | SetLocal { [INFO] [stdout] | -------- fields in this variant [INFO] [stdout] 24 | id: usize, [INFO] [stdout] | ^^ [INFO] [stdout] 25 | val: Expr, [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Op` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/hir.rs:27:13 [INFO] [stdout] | [INFO] [stdout] 27 | MovePtr(Expr), [INFO] [stdout] | ------- ^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `Op` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field [INFO] [stdout] | [INFO] [stdout] 27 | MovePtr(()), [INFO] [stdout] | ~~ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/hir.rs:28:12 [INFO] [stdout] | [INFO] [stdout] 28 | Output(Expr), [INFO] [stdout] | ------ ^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `Op` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field [INFO] [stdout] | [INFO] [stdout] 28 | Output(()), [INFO] [stdout] | ~~ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `predicate` and `sections` are never read [INFO] [stdout] --> src/hir.rs:33:5 [INFO] [stdout] | [INFO] [stdout] 32 | pub struct Loop { [INFO] [stdout] | ---- fields in this struct [INFO] [stdout] 33 | predicate: Expr, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 34 | sections: Vec
, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Loop` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/hir.rs:66:10 [INFO] [stdout] | [INFO] [stdout] 66 | Proc(Proc), [INFO] [stdout] | ---- ^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `Section` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field [INFO] [stdout] | [INFO] [stdout] 66 | Proc(()), [INFO] [stdout] | ~~ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/hir.rs:67:10 [INFO] [stdout] | [INFO] [stdout] 67 | Loop(Loop), [INFO] [stdout] | ---- ^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `Section` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field [INFO] [stdout] | [INFO] [stdout] 67 | Loop(()), [INFO] [stdout] | ~~ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `sections` is never read [INFO] [stdout] --> src/hir.rs:72:5 [INFO] [stdout] | [INFO] [stdout] 71 | pub struct Program { [INFO] [stdout] | ------- field in this struct [INFO] [stdout] 72 | sections: Vec
, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Program` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `generate_c` is never used [INFO] [stdout] --> src/hir.rs:156:12 [INFO] [stdout] | [INFO] [stdout] 155 | impl Program { [INFO] [stdout] | ------------ method in this implementation [INFO] [stdout] 156 | pub fn generate_c(&self) -> String { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `stringify` is never used [INFO] [stdout] --> src/hir.rs:158:16 [INFO] [stdout] | [INFO] [stdout] 157 | impl Expr { [INFO] [stdout] | --------- method in this implementation [INFO] [stdout] 158 | fn stringify(&self, proc: Option<&Proc>) -> String { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Exactly` and `MultipleOf` are never constructed [INFO] [stdout] --> src/llir.rs:19:5 [INFO] [stdout] | [INFO] [stdout] 17 | pub enum ValInfo { [INFO] [stdout] | ------- variants in this enum [INFO] [stdout] 18 | // Value is (N) [INFO] [stdout] 19 | Exactly(i32), [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 20 | // Value is (base + N * factor) [INFO] [stdout] 21 | MultipleOf { base: i32, factor: i32 }, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ValInfo` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple variants are never constructed [INFO] [stdout] --> src/llir.rs:32:5 [INFO] [stdout] | [INFO] [stdout] 30 | pub enum CellAccessInfo { [INFO] [stdout] | -------------- variants in this enum [INFO] [stdout] 31 | // Only these specific pointer-relative cells are accessed [INFO] [stdout] 32 | Exactly(HashSet), [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 33 | // Only this pointer-relative cell or any above it in the cell array are accessed [INFO] [stdout] 34 | EqualOrAbove(Idx), [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 35 | // Only cells below this pointer-relative cell (and not this cell) in the cell array are accessed [INFO] [stdout] 36 | Below(Idx), [INFO] [stdout] | ^^^^^ [INFO] [stdout] 37 | // Only cells within this range are accessed (lower bound is inclusive, upper bound is exclusive) [INFO] [stdout] 38 | Inside(Idx, Idx), [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 39 | // Only cells outside this range are accessed (lower bound is exclusive, upper bound is inclusive) [INFO] [stdout] 40 | Outside(Idx, Idx), [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 41 | // Only these specific cells are guaranteed to not be accessed [INFO] [stdout] 42 | Not(HashSet), [INFO] [stdout] | ^^^ [INFO] [stdout] 43 | // No information about cell access can be determined, any of them could be accessed [INFO] [stdout] 44 | Unknown, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `CellAccessInfo` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `union` and `intersection` are never used [INFO] [stdout] --> src/llir.rs:50:12 [INFO] [stdout] | [INFO] [stdout] 47 | impl CellAccessInfo { [INFO] [stdout] | ------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 50 | pub fn union(&self, rel_shift: Idx, other: &CellAccessInfo) -> Self { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 63 | pub fn intersection(&self, rel_shift: Idx, other: &CellAccessInfo) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Set` is never constructed [INFO] [stdout] --> src/llir.rs:81:5 [INFO] [stdout] | [INFO] [stdout] 79 | pub enum Change { [INFO] [stdout] | ------ variant in this enum [INFO] [stdout] 80 | Incr(Diff), [INFO] [stdout] 81 | Set(u8), [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Change` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `has_no_effect` and `get_cell_reads` are never used [INFO] [stdout] --> src/llir.rs:134:12 [INFO] [stdout] | [INFO] [stdout] 103 | impl BasicSection { [INFO] [stdout] | ----------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 134 | pub fn has_no_effect(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 139 | pub fn get_cell_reads(&self) -> CellAccessInfo { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `has_no_effect` and `get_cell_reads` are never used [INFO] [stdout] --> src/llir.rs:163:12 [INFO] [stdout] | [INFO] [stdout] 153 | impl InputSection { [INFO] [stdout] | ----------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 163 | pub fn has_no_effect(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 168 | pub fn get_cell_reads(&self) -> CellAccessInfo { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Const` is never constructed [INFO] [stdout] --> src/llir.rs:179:5 [INFO] [stdout] | [INFO] [stdout] 177 | pub enum Predicate { [INFO] [stdout] | --------- variant in this enum [INFO] [stdout] 178 | Cell(Idx, Diff), [INFO] [stdout] 179 | Const(u8), [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Predicate` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `has_no_effect` and `get_cell_reads` are never used [INFO] [stdout] --> src/llir.rs:206:12 [INFO] [stdout] | [INFO] [stdout] 192 | impl LoopSection { [INFO] [stdout] | ---------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 206 | pub fn has_no_effect(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 219 | pub fn get_cell_reads(&self) -> CellAccessInfo { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `get_shift`, `has_no_effect`, and `get_cell_reads` are never used [INFO] [stdout] --> src/llir.rs:285:12 [INFO] [stdout] | [INFO] [stdout] 280 | impl Section { [INFO] [stdout] | ------------ methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 285 | pub fn get_shift(&self) -> ValInfo { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 294 | pub fn has_no_effect(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 303 | pub fn get_cell_reads(&self) -> CellAccessInfo { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `generate_c` is never used [INFO] [stdout] --> src/llir.rs:371:12 [INFO] [stdout] | [INFO] [stdout] 370 | impl Program { [INFO] [stdout] | ------------ method in this implementation [INFO] [stdout] 371 | pub fn generate_c(&self) -> Result { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `optimise_calc_shifts` is never used [INFO] [stdout] --> src/opt.rs:15:8 [INFO] [stdout] | [INFO] [stdout] 15 | pub fn optimise_calc_shifts(section: &mut Section) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `optimise_sections` is never used [INFO] [stdout] --> src/opt.rs:46:8 [INFO] [stdout] | [INFO] [stdout] 46 | pub fn optimise_sections(mut sections: Vec
) -> Vec
{ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `optimise_program` is never used [INFO] [stdout] --> src/opt.rs:59:8 [INFO] [stdout] | [INFO] [stdout] 59 | pub fn optimise_program(mut prog: Program) -> Program { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `optimise` is never used [INFO] [stdout] --> src/opt.rs:64:8 [INFO] [stdout] | [INFO] [stdout] 64 | pub fn optimise(mut prog: Program) -> Program { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/hir.rs:157:9 [INFO] [stdout] | [INFO] [stdout] 156 | pub fn generate_c(&self) -> String { [INFO] [stdout] | ---------------------------------- move the `impl` block outside of this method `generate_c` [INFO] [stdout] 157 | impl Expr { [INFO] [stdout] | ^^^^^---- [INFO] [stdout] | | [INFO] [stdout] | `Expr` is not local [INFO] [stdout] | [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: `#[warn(non_local_definitions)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.22s [INFO] running `Command { std: "docker" "inspect" "e48601899d1db85a19d2451c9a4858acfcfc15dc7f86cb458d80d69c5cd20b2b", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "e48601899d1db85a19d2451c9a4858acfcfc15dc7f86cb458d80d69c5cd20b2b", kill_on_drop: false }` [INFO] [stdout] e48601899d1db85a19d2451c9a4858acfcfc15dc7f86cb458d80d69c5cd20b2b