[INFO] cloning repository https://github.com/sidhantas/GameboyAdvance
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/sidhantas/GameboyAdvance" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsidhantas%2FGameboyAdvance", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsidhantas%2FGameboyAdvance'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] ed9fce9833befb355022a2bc6a2889cbba5b83cb
[INFO] building sidhantas/GameboyAdvance against try#334963c956d25708feab489a3816ae63f639355d for pr-135216
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsidhantas%2FGameboyAdvance" "/workspace/builds/worker-6-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc2/source'...
[INFO] [stderr] done.
[INFO] validating manifest of git repo https://github.com/sidhantas/GameboyAdvance on toolchain 334963c956d25708feab489a3816ae63f639355d
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+334963c956d25708feab489a3816ae63f639355d" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] started tweaking git repo https://github.com/sidhantas/GameboyAdvance
[INFO] finished tweaking git repo https://github.com/sidhantas/GameboyAdvance
[INFO] tweaked toml for git repo https://github.com/sidhantas/GameboyAdvance written to /workspace/builds/worker-6-tc2/source/Cargo.toml
[INFO] crate git repo https://github.com/sidhantas/GameboyAdvance 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" "+334963c956d25708feab489a3816ae63f639355d" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/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" "+334963c956d25708feab489a3816ae63f639355d" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 12d0b0b21348b58a036604322c02fd666772f39db2ca09fe246072ecfee42c2b
[INFO] running `Command { std: "docker" "start" "-a" "12d0b0b21348b58a036604322c02fd666772f39db2ca09fe246072ecfee42c2b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "12d0b0b21348b58a036604322c02fd666772f39db2ca09fe246072ecfee42c2b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "12d0b0b21348b58a036604322c02fd666772f39db2ca09fe246072ecfee42c2b", kill_on_drop: false }`
[INFO] [stdout] 12d0b0b21348b58a036604322c02fd666772f39db2ca09fe246072ecfee42c2b
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/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" "-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" "+334963c956d25708feab489a3816ae63f639355d" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 45bfb78be5abd6fbfc7bdd3d13fedbcee05b17a37a47174161e1c6fedf97fcef
[INFO] running `Command { std: "docker" "start" "-a" "45bfb78be5abd6fbfc7bdd3d13fedbcee05b17a37a47174161e1c6fedf97fcef", kill_on_drop: false }`
[INFO] [stderr]    Compiling autocfg v1.3.0
[INFO] [stderr]    Compiling libc v0.2.155
[INFO] [stderr]    Compiling proc-macro2 v1.0.89
[INFO] [stderr]    Compiling unicode-ident v1.0.13
[INFO] [stderr]    Compiling semver v1.0.23
[INFO] [stderr]    Compiling cfg-if v1.0.0
[INFO] [stderr]    Compiling memchr v2.7.4
[INFO] [stderr]    Compiling signal-hook v0.3.17
[INFO] [stderr]    Compiling parking_lot_core v0.9.10
[INFO] [stderr]    Compiling futures-core v0.3.31
[INFO] [stderr]    Compiling scopeguard v1.2.0
[INFO] [stderr]    Compiling version-compare v0.1.1
[INFO] [stderr]    Compiling smallvec v1.13.2
[INFO] [stderr]    Compiling slab v0.4.9
[INFO] [stderr]    Compiling lock_api v0.4.12
[INFO] [stderr]    Compiling hashbrown v0.15.1
[INFO] [stderr]    Compiling log v0.4.22
[INFO] [stderr]    Compiling equivalent v1.0.1
[INFO] [stderr]    Compiling futures-sink v0.3.31
[INFO] [stderr]    Compiling futures-channel v0.3.31
[INFO] [stderr]    Compiling aho-corasick v1.1.3
[INFO] [stderr]    Compiling sdl2-sys v0.37.0
[INFO] [stderr]    Compiling quote v1.0.37
[INFO] [stderr]    Compiling rustc_version v0.4.1
[INFO] [stderr]    Compiling signal-hook-registry v1.4.2
[INFO] [stderr]    Compiling indexmap v2.6.0
[INFO] [stderr]    Compiling syn v2.0.87
[INFO] [stderr]    Compiling mio v0.8.11
[INFO] [stderr]    Compiling toml_datetime v0.6.8
[INFO] [stderr]    Compiling pin-project-lite v0.2.15
[INFO] [stderr]    Compiling pin-utils v0.1.0
[INFO] [stderr]    Compiling futures-io v0.3.31
[INFO] [stderr]    Compiling futures-task v0.3.31
[INFO] [stderr]    Compiling winnow v0.6.20
[INFO] [stderr]    Compiling cfg_aliases v0.1.1
[INFO] [stderr]    Compiling regex-syntax v0.8.5
[INFO] [stderr]    Compiling nix v0.28.0
[INFO] [stderr]    Compiling signal-hook-mio v0.2.3
[INFO] [stderr]    Compiling parking_lot v0.12.3
[INFO] [stderr]    Compiling rstest_macros v0.23.0
[INFO] [stderr]    Compiling bitflags v1.3.2
[INFO] [stderr]    Compiling bitflags v2.6.0
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling relative-path v1.9.3
[INFO] [stderr]    Compiling sdl2 v0.37.0
[INFO] [stderr]    Compiling glob v0.3.1
[INFO] [stderr]    Compiling unicode-width v0.1.13
[INFO] [stderr]    Compiling toml_edit v0.22.22
[INFO] [stderr]    Compiling crossterm v0.25.0
[INFO] [stderr]    Compiling futures-timer v3.0.3
[INFO] [stderr]    Compiling regex-automata v0.4.8
[INFO] [stderr]    Compiling lazy_static v1.5.0
[INFO] [stderr]    Compiling cassowary v0.3.0
[INFO] [stderr]    Compiling proc-macro-crate v3.2.0
[INFO] [stderr]    Compiling unicode-segmentation v1.11.0
[INFO] [stderr]    Compiling ctrlc v3.4.4
[INFO] [stderr]    Compiling tui v0.19.0
[INFO] [stderr]    Compiling getopts v0.2.21
[INFO] [stderr]    Compiling regex v1.11.1
[INFO] [stderr]    Compiling crossterm v0.27.0
[INFO] [stderr]    Compiling futures-macro v0.3.31
[INFO] [stderr]    Compiling futures-util v0.3.31
[INFO] [stderr]    Compiling futures-executor v0.3.31
[INFO] [stderr]    Compiling futures v0.3.31
[INFO] [stderr]    Compiling rstest v0.23.0
[INFO] [stderr]    Compiling gameboy_advance v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `breakpoints::BreakType`
[INFO] [stdout]  --> src/arm7tdmi/cpu.rs:2:16
[INFO] [stdout]   |
[INFO] [stdout] 2 |     debugger::{breakpoints::BreakType},
[INFO] [stdout]   |                ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BreakType`, `Breakpoint`, and `debugger::Debugger`
[INFO] [stdout]  --> src/memory/debugger_memory.rs:1:37
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::debugger::{breakpoints::{BreakType, Breakpoint}, debugger::Debugger};
[INFO] [stdout]   |                                     ^^^^^^^^^  ^^^^^^^^^^   ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `memory::memory::MemoryBus`
[INFO] [stdout]  --> src/arm7tdmi/data_transfer_instructions.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 |     memory::memory::MemoryBus, types::{CYCLES, REGISTER, WORD}, utils::{
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `memory::memory::MemoryBus`
[INFO] [stdout]  --> src/arm7tdmi/swap_instruction.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 |     memory::memory::MemoryBus, types::{CYCLES, WORD}, utils::bits::Bits
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `memory::memory::MemoryBus`
[INFO] [stdout]  --> src/arm7tdmi/thumb/data_transfer_instructions.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 |     memory::memory::MemoryBus,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `instruction`
[INFO] [stdout]   --> src/arm7tdmi/instructions.rs:55:36
[INFO] [stdout]    |
[INFO] [stdout] 55 |     pub fn arm_multiply(&mut self, instruction: ARMByteCode) -> CYCLES {
[INFO] [stdout]    |                                    ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_instruction`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `instruction`
[INFO] [stdout]   --> src/arm7tdmi/instructions.rs:59:47
[INFO] [stdout]    |
[INFO] [stdout] 59 |     pub fn arm_multiply_accumulate(&mut self, instruction: ARMByteCode) -> CYCLES {
[INFO] [stdout]    |                                               ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_instruction`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `instruction`
[INFO] [stdout]   --> src/arm7tdmi/instructions.rs:63:41
[INFO] [stdout]    |
[INFO] [stdout] 63 |     pub fn arm_multiply_long(&mut self, instruction: ARMByteCode) -> CYCLES {
[INFO] [stdout]    |                                         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_instruction`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `instruction`
[INFO] [stdout]   --> src/arm7tdmi/instructions.rs:93:43
[INFO] [stdout]    |
[INFO] [stdout] 93 |     pub fn arm_not_implemented(&mut self, instruction: ARMByteCode) -> CYCLES {
[INFO] [stdout]    |                                           ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_instruction`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `operand1`
[INFO] [stdout]    --> src/arm7tdmi/alu.rs:183:45
[INFO] [stdout]     |
[INFO] [stdout] 183 |     pub fn arm_rsc(&mut self, rd: REGISTER, operand1: u32, operand2: u32, set_flags: bool) {
[INFO] [stdout]     |                                             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_operand1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `address1`
[INFO] [stdout]   --> src/debugger/breakpoints.rs:38:46
[INFO] [stdout]    |
[INFO] [stdout] 38 |             BreakType::WatchAddress(address, address1) => write!(f, "address == {}", address),
[INFO] [stdout]    |                                              ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_address1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_undefined` is never used
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:287:12
[INFO] [stdout]     |
[INFO] [stdout] 287 |     pub fn is_undefined(instruction: u32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `GBAMemory` and `MemoryBus`
[INFO] [stdout]  --> src/main.rs:6:22
[INFO] [stdout]   |
[INFO] [stdout] 6 | use memory::memory::{GBAMemory, MemoryBus};
[INFO] [stdout]   |                      ^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `breakpoints::BreakType`
[INFO] [stdout]  --> src/arm7tdmi/cpu.rs:2:16
[INFO] [stdout]   |
[INFO] [stdout] 2 |     debugger::{breakpoints::BreakType},
[INFO] [stdout]   |                ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BreakType`, `Breakpoint`, and `debugger::Debugger`
[INFO] [stdout]  --> src/memory/debugger_memory.rs:1:37
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::debugger::{breakpoints::{BreakType, Breakpoint}, debugger::Debugger};
[INFO] [stdout]   |                                     ^^^^^^^^^  ^^^^^^^^^^   ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `memory::memory::MemoryBus`
[INFO] [stdout]  --> src/arm7tdmi/data_transfer_instructions.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 |     memory::memory::MemoryBus, types::{CYCLES, REGISTER, WORD}, utils::{
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `memory::memory::MemoryBus`
[INFO] [stdout]  --> src/arm7tdmi/swap_instruction.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 |     memory::memory::MemoryBus, types::{CYCLES, WORD}, utils::bits::Bits
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `memory::memory::MemoryBus`
[INFO] [stdout]  --> src/arm7tdmi/thumb/data_transfer_instructions.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 |     memory::memory::MemoryBus,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `instruction`
[INFO] [stdout]   --> src/arm7tdmi/instructions.rs:55:36
[INFO] [stdout]    |
[INFO] [stdout] 55 |     pub fn arm_multiply(&mut self, instruction: ARMByteCode) -> CYCLES {
[INFO] [stdout]    |                                    ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_instruction`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `instruction`
[INFO] [stdout]   --> src/arm7tdmi/instructions.rs:59:47
[INFO] [stdout]    |
[INFO] [stdout] 59 |     pub fn arm_multiply_accumulate(&mut self, instruction: ARMByteCode) -> CYCLES {
[INFO] [stdout]    |                                               ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_instruction`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `instruction`
[INFO] [stdout]   --> src/arm7tdmi/instructions.rs:63:41
[INFO] [stdout]    |
[INFO] [stdout] 63 |     pub fn arm_multiply_long(&mut self, instruction: ARMByteCode) -> CYCLES {
[INFO] [stdout]    |                                         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_instruction`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `instruction`
[INFO] [stdout]   --> src/arm7tdmi/instructions.rs:93:43
[INFO] [stdout]    |
[INFO] [stdout] 93 |     pub fn arm_not_implemented(&mut self, instruction: ARMByteCode) -> CYCLES {
[INFO] [stdout]    |                                           ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_instruction`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `operand1`
[INFO] [stdout]    --> src/arm7tdmi/alu.rs:183:45
[INFO] [stdout]     |
[INFO] [stdout] 183 |     pub fn arm_rsc(&mut self, rd: REGISTER, operand1: u32, operand2: u32, set_flags: bool) {
[INFO] [stdout]     |                                             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_operand1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `address1`
[INFO] [stdout]   --> src/debugger/breakpoints.rs:38:46
[INFO] [stdout]    |
[INFO] [stdout] 38 |             BreakType::WatchAddress(address, address1) => write!(f, "address == {}", address),
[INFO] [stdout]    |                                              ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_address1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_undefined` is never used
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:287:12
[INFO] [stdout]     |
[INFO] [stdout] 287 |     pub fn is_undefined(instruction: u32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `InternalOperation` is never used
[INFO] [stdout]   --> src/arm7tdmi/instructions.rs:11:10
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub type InternalOperation = fn(&mut CPU) -> CYCLES;
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Reset`, `Undefined`, and `IRQ` are never constructed
[INFO] [stdout]   --> src/arm7tdmi/interrupts.rs:7:5
[INFO] [stdout]    |
[INFO] [stdout] 6  | pub enum Exceptions {
[INFO] [stdout]    |          ---------- variants in this enum
[INFO] [stdout] 7  |     Reset,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 8  |     Undefined,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 9  |     Software,
[INFO] [stdout] 10 |     IRQ,
[INFO] [stdout]    |     ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Exceptions` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 54.16s
[INFO] running `Command { std: "docker" "inspect" "45bfb78be5abd6fbfc7bdd3d13fedbcee05b17a37a47174161e1c6fedf97fcef", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "45bfb78be5abd6fbfc7bdd3d13fedbcee05b17a37a47174161e1c6fedf97fcef", kill_on_drop: false }`
[INFO] [stdout] 45bfb78be5abd6fbfc7bdd3d13fedbcee05b17a37a47174161e1c6fedf97fcef
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/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" "-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" "+334963c956d25708feab489a3816ae63f639355d" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] ad9567147a78f82a97b9625bd70ea20f1d949abee6c120037d1d8b2d2df72ed5
[INFO] running `Command { std: "docker" "start" "-a" "ad9567147a78f82a97b9625bd70ea20f1d949abee6c120037d1d8b2d2df72ed5", kill_on_drop: false }`
[INFO] [stderr]    Compiling cfg-if v1.0.0
[INFO] [stderr]    Compiling libc v0.2.155
[INFO] [stderr]    Compiling regex-syntax v0.8.5
[INFO] [stderr]    Compiling aho-corasick v1.1.3
[INFO] [stderr]    Compiling memchr v2.7.4
[INFO] [stderr]    Compiling futures-sink v0.3.31
[INFO] [stderr]    Compiling scopeguard v1.2.0
[INFO] [stderr]    Compiling log v0.4.22
[INFO] [stderr]    Compiling sdl2-sys v0.37.0
[INFO] [stderr]    Compiling smallvec v1.13.2
[INFO] [stderr]    Compiling futures-core v0.3.31
[INFO] [stderr]    Compiling futures-channel v0.3.31
[INFO] [stderr]    Compiling lock_api v0.4.12
[INFO] [stderr]    Compiling sdl2 v0.37.0
[INFO] [stderr]    Compiling slab v0.4.9
[INFO] [stderr]    Compiling pin-project-lite v0.2.15
[INFO] [stderr]    Compiling futures-task v0.3.31
[INFO] [stderr]    Compiling futures-io v0.3.31
[INFO] [stderr]    Compiling pin-utils v0.1.0
[INFO] [stderr]    Compiling bitflags v2.6.0
[INFO] [stderr]    Compiling bitflags v1.3.2
[INFO] [stderr]    Compiling unicode-width v0.1.13
[INFO] [stderr]    Compiling lazy_static v1.5.0
[INFO] [stderr]    Compiling futures-timer v3.0.3
[INFO] [stderr]    Compiling cassowary v0.3.0
[INFO] [stderr]    Compiling unicode-segmentation v1.11.0
[INFO] [stderr]    Compiling getopts v0.2.21
[INFO] [stderr]    Compiling futures-util v0.3.31
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling regex-automata v0.4.8
[INFO] [stderr]    Compiling signal-hook-registry v1.4.2
[INFO] [stderr]    Compiling mio v0.8.11
[INFO] [stderr]    Compiling signal-hook v0.3.17
[INFO] [stderr]    Compiling parking_lot_core v0.9.10
[INFO] [stderr]    Compiling parking_lot v0.12.3
[INFO] [stderr]    Compiling nix v0.28.0
[INFO] [stderr]    Compiling signal-hook-mio v0.2.3
[INFO] [stderr]    Compiling crossterm v0.25.0
[INFO] [stderr]    Compiling tui v0.19.0
[INFO] [stderr]    Compiling crossterm v0.27.0
[INFO] [stderr]    Compiling regex v1.11.1
[INFO] [stderr]    Compiling futures-executor v0.3.31
[INFO] [stderr]    Compiling ctrlc v3.4.4
[INFO] [stderr]    Compiling futures v0.3.31
[INFO] [stderr]    Compiling rstest_macros v0.23.0
[INFO] [stderr]    Compiling rstest v0.23.0
[INFO] [stderr]    Compiling gameboy_advance v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `breakpoints::BreakType`
[INFO] [stdout]  --> src/arm7tdmi/cpu.rs:2:16
[INFO] [stdout]   |
[INFO] [stdout] 2 |     debugger::{breakpoints::BreakType},
[INFO] [stdout]   |                ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BreakType`, `Breakpoint`, and `debugger::Debugger`
[INFO] [stdout]  --> src/memory/debugger_memory.rs:1:37
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::debugger::{breakpoints::{BreakType, Breakpoint}, debugger::Debugger};
[INFO] [stdout]   |                                     ^^^^^^^^^  ^^^^^^^^^^   ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `breakpoints::BreakType`
[INFO] [stdout]  --> src/arm7tdmi/cpu.rs:2:16
[INFO] [stdout]   |
[INFO] [stdout] 2 |     debugger::{breakpoints::BreakType},
[INFO] [stdout]   |                ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BreakType`, `Breakpoint`, and `debugger::Debugger`
[INFO] [stdout]  --> src/memory/debugger_memory.rs:1:37
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::debugger::{breakpoints::{BreakType, Breakpoint}, debugger::Debugger};
[INFO] [stdout]   |                                     ^^^^^^^^^  ^^^^^^^^^^   ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `breakpoints::BreakType`
[INFO] [stdout]  --> src/arm7tdmi/cpu.rs:2:16
[INFO] [stdout]   |
[INFO] [stdout] 2 |     debugger::{breakpoints::BreakType},
[INFO] [stdout]   |                ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BreakType`, `Breakpoint`, and `debugger::Debugger`
[INFO] [stdout]  --> src/memory/debugger_memory.rs:1:37
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::debugger::{breakpoints::{BreakType, Breakpoint}, debugger::Debugger};
[INFO] [stdout]   |                                     ^^^^^^^^^  ^^^^^^^^^^   ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `memory::memory::MemoryBus`
[INFO] [stdout]  --> src/arm7tdmi/data_transfer_instructions.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 |     memory::memory::MemoryBus, types::{CYCLES, REGISTER, WORD}, utils::{
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `memory::memory::MemoryBus`
[INFO] [stdout]  --> src/arm7tdmi/swap_instruction.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 |     memory::memory::MemoryBus, types::{CYCLES, WORD}, utils::bits::Bits
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `memory::memory::MemoryBus`
[INFO] [stdout]  --> src/arm7tdmi/thumb/data_transfer_instructions.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 |     memory::memory::MemoryBus,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `instruction`
[INFO] [stdout]   --> src/arm7tdmi/instructions.rs:55:36
[INFO] [stdout]    |
[INFO] [stdout] 55 |     pub fn arm_multiply(&mut self, instruction: ARMByteCode) -> CYCLES {
[INFO] [stdout]    |                                    ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_instruction`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `instruction`
[INFO] [stdout]   --> src/arm7tdmi/instructions.rs:59:47
[INFO] [stdout]    |
[INFO] [stdout] 59 |     pub fn arm_multiply_accumulate(&mut self, instruction: ARMByteCode) -> CYCLES {
[INFO] [stdout]    |                                               ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_instruction`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `instruction`
[INFO] [stdout]   --> src/arm7tdmi/instructions.rs:63:41
[INFO] [stdout]    |
[INFO] [stdout] 63 |     pub fn arm_multiply_long(&mut self, instruction: ARMByteCode) -> CYCLES {
[INFO] [stdout]    |                                         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_instruction`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `instruction`
[INFO] [stdout]   --> src/arm7tdmi/instructions.rs:93:43
[INFO] [stdout]    |
[INFO] [stdout] 93 |     pub fn arm_not_implemented(&mut self, instruction: ARMByteCode) -> CYCLES {
[INFO] [stdout]    |                                           ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_instruction`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `operand1`
[INFO] [stdout]    --> src/arm7tdmi/alu.rs:183:45
[INFO] [stdout]     |
[INFO] [stdout] 183 |     pub fn arm_rsc(&mut self, rd: REGISTER, operand1: u32, operand2: u32, set_flags: bool) {
[INFO] [stdout]     |                                             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_operand1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `address1`
[INFO] [stdout]   --> src/debugger/breakpoints.rs:38:46
[INFO] [stdout]    |
[INFO] [stdout] 38 |             BreakType::WatchAddress(address, address1) => write!(f, "address == {}", address),
[INFO] [stdout]    |                                              ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_address1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_undefined` is never used
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:287:12
[INFO] [stdout]     |
[INFO] [stdout] 287 |     pub fn is_undefined(instruction: u32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `memory::memory::MemoryBus`
[INFO] [stdout]  --> src/arm7tdmi/data_transfer_instructions.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 |     memory::memory::MemoryBus, types::{CYCLES, REGISTER, WORD}, utils::{
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `memory::memory::MemoryBus`
[INFO] [stdout]  --> src/arm7tdmi/swap_instruction.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 |     memory::memory::MemoryBus, types::{CYCLES, WORD}, utils::bits::Bits
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `memory::memory::MemoryBus`
[INFO] [stdout]  --> src/arm7tdmi/thumb/data_transfer_instructions.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 |     memory::memory::MemoryBus,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `instruction`
[INFO] [stdout]   --> src/arm7tdmi/instructions.rs:55:36
[INFO] [stdout]    |
[INFO] [stdout] 55 |     pub fn arm_multiply(&mut self, instruction: ARMByteCode) -> CYCLES {
[INFO] [stdout]    |                                    ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_instruction`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `instruction`
[INFO] [stdout]   --> src/arm7tdmi/instructions.rs:59:47
[INFO] [stdout]    |
[INFO] [stdout] 59 |     pub fn arm_multiply_accumulate(&mut self, instruction: ARMByteCode) -> CYCLES {
[INFO] [stdout]    |                                               ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_instruction`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `instruction`
[INFO] [stdout]   --> src/arm7tdmi/instructions.rs:63:41
[INFO] [stdout]    |
[INFO] [stdout] 63 |     pub fn arm_multiply_long(&mut self, instruction: ARMByteCode) -> CYCLES {
[INFO] [stdout]    |                                         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_instruction`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `instruction`
[INFO] [stdout]   --> src/arm7tdmi/instructions.rs:93:43
[INFO] [stdout]    |
[INFO] [stdout] 93 |     pub fn arm_not_implemented(&mut self, instruction: ARMByteCode) -> CYCLES {
[INFO] [stdout]    |                                           ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_instruction`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `operand1`
[INFO] [stdout]    --> src/arm7tdmi/alu.rs:183:45
[INFO] [stdout]     |
[INFO] [stdout] 183 |     pub fn arm_rsc(&mut self, rd: REGISTER, operand1: u32, operand2: u32, set_flags: bool) {
[INFO] [stdout]     |                                             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_operand1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `address1`
[INFO] [stdout]   --> src/debugger/breakpoints.rs:38:46
[INFO] [stdout]    |
[INFO] [stdout] 38 |             BreakType::WatchAddress(address, address1) => write!(f, "address == {}", address),
[INFO] [stdout]    |                                              ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_address1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_undefined` is never used
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:287:12
[INFO] [stdout]     |
[INFO] [stdout] 287 |     pub fn is_undefined(instruction: u32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `GBAMemory` and `MemoryBus`
[INFO] [stdout]  --> src/main.rs:6:22
[INFO] [stdout]   |
[INFO] [stdout] 6 | use memory::memory::{GBAMemory, MemoryBus};
[INFO] [stdout]   |                      ^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `breakpoints::BreakType`
[INFO] [stdout]  --> src/arm7tdmi/cpu.rs:2:16
[INFO] [stdout]   |
[INFO] [stdout] 2 |     debugger::{breakpoints::BreakType},
[INFO] [stdout]   |                ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BreakType`, `Breakpoint`, and `debugger::Debugger`
[INFO] [stdout]  --> src/memory/debugger_memory.rs:1:37
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::debugger::{breakpoints::{BreakType, Breakpoint}, debugger::Debugger};
[INFO] [stdout]   |                                     ^^^^^^^^^  ^^^^^^^^^^   ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `MemoryBus`
[INFO] [stdout]    --> src/arm7tdmi/alu.rs:377:38
[INFO] [stdout]     |
[INFO] [stdout] 377 |         memory::memory::{ GBAMemory, MemoryBus},
[INFO] [stdout]     |                                      ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `memory::memory::MemoryBus`
[INFO] [stdout]  --> src/arm7tdmi/data_transfer_instructions.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 |     memory::memory::MemoryBus, types::{CYCLES, REGISTER, WORD}, utils::{
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `MemoryBus`
[INFO] [stdout]    --> src/arm7tdmi/data_transfer_instructions.rs:353:65
[INFO] [stdout]     |
[INFO] [stdout] 353 |     use crate::{arm7tdmi::cpu::CPU, memory::memory::{GBAMemory, MemoryBus}};
[INFO] [stdout]     |                                                                 ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `memory::memory::MemoryBus`
[INFO] [stdout]  --> src/arm7tdmi/swap_instruction.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 |     memory::memory::MemoryBus, types::{CYCLES, WORD}, utils::bits::Bits
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `MemoryBus`
[INFO] [stdout]   --> src/arm7tdmi/swap_instruction.rs:39:65
[INFO] [stdout]    |
[INFO] [stdout] 39 |     use crate::{arm7tdmi::cpu::CPU, memory::memory::{GBAMemory, MemoryBus}};
[INFO] [stdout]    |                                                                 ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `memory::memory::MemoryBus`
[INFO] [stdout]  --> src/arm7tdmi/thumb/data_transfer_instructions.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 |     memory::memory::MemoryBus,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `MemoryBus`
[INFO] [stdout]    --> src/arm7tdmi/thumb/data_transfer_instructions.rs:225:37
[INFO] [stdout]     |
[INFO] [stdout] 225 |         memory::memory::{GBAMemory, MemoryBus},
[INFO] [stdout]     |                                     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `instruction`
[INFO] [stdout]   --> src/arm7tdmi/instructions.rs:55:36
[INFO] [stdout]    |
[INFO] [stdout] 55 |     pub fn arm_multiply(&mut self, instruction: ARMByteCode) -> CYCLES {
[INFO] [stdout]    |                                    ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_instruction`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `instruction`
[INFO] [stdout]   --> src/arm7tdmi/instructions.rs:59:47
[INFO] [stdout]    |
[INFO] [stdout] 59 |     pub fn arm_multiply_accumulate(&mut self, instruction: ARMByteCode) -> CYCLES {
[INFO] [stdout]    |                                               ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_instruction`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `instruction`
[INFO] [stdout]   --> src/arm7tdmi/instructions.rs:63:41
[INFO] [stdout]    |
[INFO] [stdout] 63 |     pub fn arm_multiply_long(&mut self, instruction: ARMByteCode) -> CYCLES {
[INFO] [stdout]    |                                         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_instruction`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `instruction`
[INFO] [stdout]   --> src/arm7tdmi/instructions.rs:93:43
[INFO] [stdout]    |
[INFO] [stdout] 93 |     pub fn arm_not_implemented(&mut self, instruction: ARMByteCode) -> CYCLES {
[INFO] [stdout]    |                                           ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_instruction`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `operand1`
[INFO] [stdout]    --> src/arm7tdmi/alu.rs:183:45
[INFO] [stdout]     |
[INFO] [stdout] 183 |     pub fn arm_rsc(&mut self, rd: REGISTER, operand1: u32, operand2: u32, set_flags: bool) {
[INFO] [stdout]     |                                             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_operand1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `address1`
[INFO] [stdout]   --> src/debugger/breakpoints.rs:38:46
[INFO] [stdout]    |
[INFO] [stdout] 38 |             BreakType::WatchAddress(address, address1) => write!(f, "address == {}", address),
[INFO] [stdout]    |                                              ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_address1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:509:17
[INFO] [stdout]     |
[INFO] [stdout] 509 |         assert!(cpu.decode_arm_instruction(instruction).executable == CPU::single_data_swap)
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout]     = note: `#[warn(unpredictable_function_pointer_comparisons)]` on by default
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 509 |         assert!(std::ptr::fn_addr_eq(cpu.decode_arm_instruction(instruction).executable, CPU::single_data_swap as for<'a> fn(&'a mut cpu::CPU, u32) -> u8))
[INFO] [stdout]     |                 +++++++++++++++++++++                                                  ~                       +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:518:17
[INFO] [stdout]     |
[INFO] [stdout] 518 |         assert!(cpu.decode_arm_instruction(instruction).executable == CPU::block_dt_execution)
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 518 |         assert!(std::ptr::fn_addr_eq(cpu.decode_arm_instruction(instruction).executable, CPU::block_dt_execution as for<'a> fn(&'a mut cpu::CPU, u32) -> u8))
[INFO] [stdout]     |                 +++++++++++++++++++++                                                  ~                         +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:526:17
[INFO] [stdout]     |
[INFO] [stdout] 526 |         assert!(cpu.decode_arm_instruction(instruction).executable == CPU::arm_branch_and_exchange)
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 526 |         assert!(std::ptr::fn_addr_eq(cpu.decode_arm_instruction(instruction).executable, CPU::arm_branch_and_exchange as for<'a> fn(&'a mut cpu::CPU, u32) -> u8))
[INFO] [stdout]     |                 +++++++++++++++++++++                                                  ~                              +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:536:17
[INFO] [stdout]     |
[INFO] [stdout] 536 |         assert!(cpu.decode_arm_instruction(instruction).executable == CPU::arm_software_interrupt);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 536 |         assert!(std::ptr::fn_addr_eq(cpu.decode_arm_instruction(instruction).executable, CPU::arm_software_interrupt as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 +++++++++++++++++++++                                                  ~                             +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:555:17
[INFO] [stdout]     |
[INFO] [stdout] 555 |         assert!(decoded_instruction.executable != CPU::arm_nop);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 555 |         assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 ++++++++++++++++++++++                              ~              +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:556:17
[INFO] [stdout]     |
[INFO] [stdout] 556 |         assert!(decoded_instruction.executable == CPU::data_processing_instruction);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 556 |         assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 +++++++++++++++++++++                              ~                                  +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:567:17
[INFO] [stdout]     |
[INFO] [stdout] 567 |         assert!(decoded_instruction.executable == CPU::arm_nop);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 567 |         assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 +++++++++++++++++++++                              ~              +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:568:17
[INFO] [stdout]     |
[INFO] [stdout] 568 |         assert!(decoded_instruction.executable != CPU::data_processing_instruction);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 568 |         assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 ++++++++++++++++++++++                              ~                                  +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:579:17
[INFO] [stdout]     |
[INFO] [stdout] 579 |         assert!(decoded_instruction.executable != CPU::arm_nop);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 579 |         assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 ++++++++++++++++++++++                              ~              +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:580:17
[INFO] [stdout]     |
[INFO] [stdout] 580 |         assert!(decoded_instruction.executable == CPU::data_processing_instruction);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 580 |         assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 +++++++++++++++++++++                              ~                                  +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:591:17
[INFO] [stdout]     |
[INFO] [stdout] 591 |         assert!(decoded_instruction.executable == CPU::arm_nop);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 591 |         assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 +++++++++++++++++++++                              ~              +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:592:17
[INFO] [stdout]     |
[INFO] [stdout] 592 |         assert!(decoded_instruction.executable != CPU::data_processing_instruction);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 592 |         assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 ++++++++++++++++++++++                              ~                                  +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:603:17
[INFO] [stdout]     |
[INFO] [stdout] 603 |         assert!(decoded_instruction.executable != CPU::arm_nop);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 603 |         assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 ++++++++++++++++++++++                              ~              +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:604:17
[INFO] [stdout]     |
[INFO] [stdout] 604 |         assert!(decoded_instruction.executable == CPU::data_processing_instruction);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 604 |         assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 +++++++++++++++++++++                              ~                                  +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:614:17
[INFO] [stdout]     |
[INFO] [stdout] 614 |         assert!(decoded_instruction.executable != CPU::arm_nop);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 614 |         assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 ++++++++++++++++++++++                              ~              +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:615:17
[INFO] [stdout]     |
[INFO] [stdout] 615 |         assert!(decoded_instruction.executable == CPU::data_processing_instruction);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 615 |         assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 +++++++++++++++++++++                              ~                                  +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:625:17
[INFO] [stdout]     |
[INFO] [stdout] 625 |         assert!(decoded_instruction.executable != CPU::arm_nop);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 625 |         assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 ++++++++++++++++++++++                              ~              +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:626:17
[INFO] [stdout]     |
[INFO] [stdout] 626 |         assert!(decoded_instruction.executable == CPU::data_processing_instruction);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 626 |         assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 +++++++++++++++++++++                              ~                                  +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:636:17
[INFO] [stdout]     |
[INFO] [stdout] 636 |         assert!(decoded_instruction.executable != CPU::arm_nop);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 636 |         assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 ++++++++++++++++++++++                              ~              +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:637:17
[INFO] [stdout]     |
[INFO] [stdout] 637 |         assert!(decoded_instruction.executable == CPU::data_processing_instruction);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 637 |         assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 +++++++++++++++++++++                              ~                                  +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:647:17
[INFO] [stdout]     |
[INFO] [stdout] 647 |         assert!(decoded_instruction.executable != CPU::arm_nop);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 647 |         assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 ++++++++++++++++++++++                              ~              +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:648:17
[INFO] [stdout]     |
[INFO] [stdout] 648 |         assert!(decoded_instruction.executable == CPU::data_processing_instruction);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 648 |         assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 +++++++++++++++++++++                              ~                                  +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:658:17
[INFO] [stdout]     |
[INFO] [stdout] 658 |         assert!(decoded_instruction.executable != CPU::arm_nop);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 658 |         assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 ++++++++++++++++++++++                              ~              +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:659:17
[INFO] [stdout]     |
[INFO] [stdout] 659 |         assert!(decoded_instruction.executable == CPU::data_processing_instruction);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 659 |         assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 +++++++++++++++++++++                              ~                                  +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:670:17
[INFO] [stdout]     |
[INFO] [stdout] 670 |         assert!(decoded_instruction.executable != CPU::arm_nop);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 670 |         assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 ++++++++++++++++++++++                              ~              +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:671:17
[INFO] [stdout]     |
[INFO] [stdout] 671 |         assert!(decoded_instruction.executable == CPU::data_processing_instruction);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 671 |         assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 +++++++++++++++++++++                              ~                                  +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:682:17
[INFO] [stdout]     |
[INFO] [stdout] 682 |         assert!(decoded_instruction.executable != CPU::arm_nop);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 682 |         assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 ++++++++++++++++++++++                              ~              +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:683:17
[INFO] [stdout]     |
[INFO] [stdout] 683 |         assert!(decoded_instruction.executable == CPU::data_processing_instruction);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 683 |         assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 +++++++++++++++++++++                              ~                                  +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:688:17
[INFO] [stdout]     |
[INFO] [stdout] 688 |         assert!(decoded_instruction.executable != CPU::arm_nop);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 688 |         assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 ++++++++++++++++++++++                              ~              +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:689:17
[INFO] [stdout]     |
[INFO] [stdout] 689 |         assert!(decoded_instruction.executable == CPU::data_processing_instruction);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 689 |         assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 +++++++++++++++++++++                              ~                                  +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:694:17
[INFO] [stdout]     |
[INFO] [stdout] 694 |         assert!(decoded_instruction.executable != CPU::arm_nop);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 694 |         assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 ++++++++++++++++++++++                              ~              +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:695:17
[INFO] [stdout]     |
[INFO] [stdout] 695 |         assert!(decoded_instruction.executable == CPU::data_processing_instruction);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 695 |         assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 +++++++++++++++++++++                              ~                                  +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:707:17
[INFO] [stdout]     |
[INFO] [stdout] 707 |         assert!(decoded_instruction.executable != CPU::arm_nop);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 707 |         assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 ++++++++++++++++++++++                              ~              +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:708:17
[INFO] [stdout]     |
[INFO] [stdout] 708 |         assert!(decoded_instruction.executable == CPU::data_processing_instruction);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 708 |         assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 +++++++++++++++++++++                              ~                                  +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:713:17
[INFO] [stdout]     |
[INFO] [stdout] 713 |         assert!(decoded_instruction.executable != CPU::arm_nop);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 713 |         assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 ++++++++++++++++++++++                              ~              +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:714:17
[INFO] [stdout]     |
[INFO] [stdout] 714 |         assert!(decoded_instruction.executable == CPU::data_processing_instruction);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 714 |         assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 +++++++++++++++++++++                              ~                                  +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:725:17
[INFO] [stdout]     |
[INFO] [stdout] 725 |         assert!(decoded_instruction.executable != CPU::arm_nop);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 725 |         assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 ++++++++++++++++++++++                              ~              +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:726:17
[INFO] [stdout]     |
[INFO] [stdout] 726 |         assert!(decoded_instruction.executable == CPU::data_processing_instruction);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 726 |         assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 +++++++++++++++++++++                              ~                                  +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:731:17
[INFO] [stdout]     |
[INFO] [stdout] 731 |         assert!(decoded_instruction.executable != CPU::arm_nop);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 731 |         assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 ++++++++++++++++++++++                              ~              +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:732:17
[INFO] [stdout]     |
[INFO] [stdout] 732 |         assert!(decoded_instruction.executable == CPU::data_processing_instruction);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 732 |         assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 +++++++++++++++++++++                              ~                                  +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:745:17
[INFO] [stdout]     |
[INFO] [stdout] 745 |         assert!(decoded_instruction.executable != CPU::arm_nop);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 745 |         assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 ++++++++++++++++++++++                              ~              +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:746:17
[INFO] [stdout]     |
[INFO] [stdout] 746 |         assert!(decoded_instruction.executable == CPU::data_processing_instruction);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 746 |         assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 +++++++++++++++++++++                              ~                                  +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:752:17
[INFO] [stdout]     |
[INFO] [stdout] 752 |         assert!(decoded_instruction.executable != CPU::arm_nop);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 752 |         assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 ++++++++++++++++++++++                              ~              +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:753:17
[INFO] [stdout]     |
[INFO] [stdout] 753 |         assert!(decoded_instruction.executable == CPU::data_processing_instruction);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 753 |         assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 +++++++++++++++++++++                              ~                                  +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:767:17
[INFO] [stdout]     |
[INFO] [stdout] 767 |         assert!(decoded_instruction.executable != CPU::arm_nop);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 767 |         assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 ++++++++++++++++++++++                              ~              +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:768:17
[INFO] [stdout]     |
[INFO] [stdout] 768 |         assert!(decoded_instruction.executable == CPU::data_processing_instruction);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 768 |         assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 +++++++++++++++++++++                              ~                                  +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:774:17
[INFO] [stdout]     |
[INFO] [stdout] 774 |         assert!(decoded_instruction.executable != CPU::arm_nop);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 774 |         assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 ++++++++++++++++++++++                              ~              +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:775:17
[INFO] [stdout]     |
[INFO] [stdout] 775 |         assert!(decoded_instruction.executable == CPU::data_processing_instruction);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 775 |         assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 +++++++++++++++++++++                              ~                                  +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:781:17
[INFO] [stdout]     |
[INFO] [stdout] 781 |         assert!(decoded_instruction.executable != CPU::arm_nop);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 781 |         assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 ++++++++++++++++++++++                              ~              +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:782:17
[INFO] [stdout]     |
[INFO] [stdout] 782 |         assert!(decoded_instruction.executable == CPU::data_processing_instruction);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 782 |         assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 +++++++++++++++++++++                              ~                                  +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:791:17
[INFO] [stdout]     |
[INFO] [stdout] 791 |         assert!(decoded_instruction.executable != CPU::arm_nop);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 791 |         assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 ++++++++++++++++++++++                              ~              +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:792:17
[INFO] [stdout]     |
[INFO] [stdout] 792 |         assert!(decoded_instruction.executable == CPU::data_processing_instruction);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 792 |         assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 +++++++++++++++++++++                              ~                                  +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:991:17
[INFO] [stdout]     |
[INFO] [stdout] 991 |         assert!(decoded_instruction.executable != CPU::arm_nop);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 991 |         assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 ++++++++++++++++++++++                              ~              +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:992:17
[INFO] [stdout]     |
[INFO] [stdout] 992 |         assert!(decoded_instruction.executable == CPU::sdt_imm_offset);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 992 |         assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::sdt_imm_offset as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 +++++++++++++++++++++                              ~                     +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]     --> src/arm7tdmi/decoder.rs:1006:17
[INFO] [stdout]      |
[INFO] [stdout] 1006 |         assert!(decoded_instruction.executable != CPU::arm_nop);
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: the address of the same function can vary between different codegen units
[INFO] [stdout]      = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]      = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]      |
[INFO] [stdout] 1006 |         assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]      |                 ++++++++++++++++++++++                              ~              +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]     --> src/arm7tdmi/decoder.rs:1007:17
[INFO] [stdout]      |
[INFO] [stdout] 1007 |         assert!(decoded_instruction.executable == CPU::thumb_sdt_sp_imm);
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: the address of the same function can vary between different codegen units
[INFO] [stdout]      = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]      = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]      |
[INFO] [stdout] 1007 |         assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::thumb_sdt_sp_imm as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]      |                 +++++++++++++++++++++                              ~                       +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]     --> src/arm7tdmi/decoder.rs:1021:17
[INFO] [stdout]      |
[INFO] [stdout] 1021 |         assert!(decoded_instruction.executable != CPU::arm_nop);
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: the address of the same function can vary between different codegen units
[INFO] [stdout]      = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]      = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]      |
[INFO] [stdout] 1021 |         assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]      |                 ++++++++++++++++++++++                              ~              +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]     --> src/arm7tdmi/decoder.rs:1022:17
[INFO] [stdout]      |
[INFO] [stdout] 1022 |         assert!(decoded_instruction.executable == CPU::thumb_add_offset_to_sp);
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: the address of the same function can vary between different codegen units
[INFO] [stdout]      = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]      = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]      |
[INFO] [stdout] 1022 |         assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::thumb_add_offset_to_sp as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]      |                 +++++++++++++++++++++                              ~                             +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]     --> src/arm7tdmi/decoder.rs:1035:17
[INFO] [stdout]      |
[INFO] [stdout] 1035 |         assert!(decoded_instruction.executable != CPU::arm_nop);
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: the address of the same function can vary between different codegen units
[INFO] [stdout]      = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]      = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]      |
[INFO] [stdout] 1035 |         assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]      |                 ++++++++++++++++++++++                              ~              +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]     --> src/arm7tdmi/decoder.rs:1036:17
[INFO] [stdout]      |
[INFO] [stdout] 1036 |         assert!(decoded_instruction.executable == CPU::thumb_push_pop);
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: the address of the same function can vary between different codegen units
[INFO] [stdout]      = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]      = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]      |
[INFO] [stdout] 1036 |         assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::thumb_push_pop as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]      |                 +++++++++++++++++++++                              ~                     +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]     --> src/arm7tdmi/decoder.rs:1049:17
[INFO] [stdout]      |
[INFO] [stdout] 1049 |         assert!(decoded_instruction.executable != CPU::arm_nop);
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: the address of the same function can vary between different codegen units
[INFO] [stdout]      = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]      = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]      |
[INFO] [stdout] 1049 |         assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]      |                 ++++++++++++++++++++++                              ~              +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]     --> src/arm7tdmi/decoder.rs:1050:17
[INFO] [stdout]      |
[INFO] [stdout] 1050 |         assert!(decoded_instruction.executable == CPU::thumb_multiple_load_or_store);
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: the address of the same function can vary between different codegen units
[INFO] [stdout]      = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]      = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]      |
[INFO] [stdout] 1050 |         assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::thumb_multiple_load_or_store as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]      |                 +++++++++++++++++++++                              ~                                   +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `MemoryBus`
[INFO] [stdout]  --> tests/test_thumb_long_branch.rs:3:71
[INFO] [stdout]   |
[INFO] [stdout] 3 | use gameboy_advance::{arm7tdmi::cpu::CPU, memory::memory::{GBAMemory, MemoryBus}};
[INFO] [stdout]   |                                                                       ^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `GBAMemory` and `MemoryBus`
[INFO] [stdout]  --> src/main.rs:6:22
[INFO] [stdout]   |
[INFO] [stdout] 6 | use memory::memory::{GBAMemory, MemoryBus};
[INFO] [stdout]   |                      ^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `breakpoints::BreakType`
[INFO] [stdout]  --> src/arm7tdmi/cpu.rs:2:16
[INFO] [stdout]   |
[INFO] [stdout] 2 |     debugger::{breakpoints::BreakType},
[INFO] [stdout]   |                ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BreakType`, `Breakpoint`, and `debugger::Debugger`
[INFO] [stdout]  --> src/memory/debugger_memory.rs:1:37
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::debugger::{breakpoints::{BreakType, Breakpoint}, debugger::Debugger};
[INFO] [stdout]   |                                     ^^^^^^^^^  ^^^^^^^^^^   ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `MemoryBus`
[INFO] [stdout]    --> src/arm7tdmi/alu.rs:377:38
[INFO] [stdout]     |
[INFO] [stdout] 377 |         memory::memory::{ GBAMemory, MemoryBus},
[INFO] [stdout]     |                                      ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `memory::memory::MemoryBus`
[INFO] [stdout]  --> src/arm7tdmi/data_transfer_instructions.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 |     memory::memory::MemoryBus, types::{CYCLES, REGISTER, WORD}, utils::{
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `MemoryBus`
[INFO] [stdout]    --> src/arm7tdmi/data_transfer_instructions.rs:353:65
[INFO] [stdout]     |
[INFO] [stdout] 353 |     use crate::{arm7tdmi::cpu::CPU, memory::memory::{GBAMemory, MemoryBus}};
[INFO] [stdout]     |                                                                 ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `memory::memory::MemoryBus`
[INFO] [stdout]  --> src/arm7tdmi/swap_instruction.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 |     memory::memory::MemoryBus, types::{CYCLES, WORD}, utils::bits::Bits
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `MemoryBus`
[INFO] [stdout]   --> src/arm7tdmi/swap_instruction.rs:39:65
[INFO] [stdout]    |
[INFO] [stdout] 39 |     use crate::{arm7tdmi::cpu::CPU, memory::memory::{GBAMemory, MemoryBus}};
[INFO] [stdout]    |                                                                 ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `memory::memory::MemoryBus`
[INFO] [stdout]  --> src/arm7tdmi/thumb/data_transfer_instructions.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 |     memory::memory::MemoryBus,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `MemoryBus`
[INFO] [stdout]    --> src/arm7tdmi/thumb/data_transfer_instructions.rs:225:37
[INFO] [stdout]     |
[INFO] [stdout] 225 |         memory::memory::{GBAMemory, MemoryBus},
[INFO] [stdout]     |                                     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `instruction`
[INFO] [stdout]   --> src/arm7tdmi/instructions.rs:55:36
[INFO] [stdout]    |
[INFO] [stdout] 55 |     pub fn arm_multiply(&mut self, instruction: ARMByteCode) -> CYCLES {
[INFO] [stdout]    |                                    ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_instruction`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `instruction`
[INFO] [stdout]   --> src/arm7tdmi/instructions.rs:59:47
[INFO] [stdout]    |
[INFO] [stdout] 59 |     pub fn arm_multiply_accumulate(&mut self, instruction: ARMByteCode) -> CYCLES {
[INFO] [stdout]    |                                               ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_instruction`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `instruction`
[INFO] [stdout]   --> src/arm7tdmi/instructions.rs:63:41
[INFO] [stdout]    |
[INFO] [stdout] 63 |     pub fn arm_multiply_long(&mut self, instruction: ARMByteCode) -> CYCLES {
[INFO] [stdout]    |                                         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_instruction`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `instruction`
[INFO] [stdout]   --> src/arm7tdmi/instructions.rs:93:43
[INFO] [stdout]    |
[INFO] [stdout] 93 |     pub fn arm_not_implemented(&mut self, instruction: ARMByteCode) -> CYCLES {
[INFO] [stdout]    |                                           ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_instruction`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `operand1`
[INFO] [stdout]    --> src/arm7tdmi/alu.rs:183:45
[INFO] [stdout]     |
[INFO] [stdout] 183 |     pub fn arm_rsc(&mut self, rd: REGISTER, operand1: u32, operand2: u32, set_flags: bool) {
[INFO] [stdout]     |                                             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_operand1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `memory::memory::MemoryBus`
[INFO] [stdout]  --> src/arm7tdmi/data_transfer_instructions.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 |     memory::memory::MemoryBus, types::{CYCLES, REGISTER, WORD}, utils::{
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `memory::memory::MemoryBus`
[INFO] [stdout]  --> src/arm7tdmi/swap_instruction.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 |     memory::memory::MemoryBus, types::{CYCLES, WORD}, utils::bits::Bits
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `memory::memory::MemoryBus`
[INFO] [stdout]  --> src/arm7tdmi/thumb/data_transfer_instructions.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 |     memory::memory::MemoryBus,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `address1`
[INFO] [stdout]   --> src/debugger/breakpoints.rs:38:46
[INFO] [stdout]    |
[INFO] [stdout] 38 |             BreakType::WatchAddress(address, address1) => write!(f, "address == {}", address),
[INFO] [stdout]    |                                              ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_address1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `instruction`
[INFO] [stdout]   --> src/arm7tdmi/instructions.rs:55:36
[INFO] [stdout]    |
[INFO] [stdout] 55 |     pub fn arm_multiply(&mut self, instruction: ARMByteCode) -> CYCLES {
[INFO] [stdout]    |                                    ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_instruction`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `instruction`
[INFO] [stdout]   --> src/arm7tdmi/instructions.rs:59:47
[INFO] [stdout]    |
[INFO] [stdout] 59 |     pub fn arm_multiply_accumulate(&mut self, instruction: ARMByteCode) -> CYCLES {
[INFO] [stdout]    |                                               ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_instruction`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `instruction`
[INFO] [stdout]   --> src/arm7tdmi/instructions.rs:63:41
[INFO] [stdout]    |
[INFO] [stdout] 63 |     pub fn arm_multiply_long(&mut self, instruction: ARMByteCode) -> CYCLES {
[INFO] [stdout]    |                                         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_instruction`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `instruction`
[INFO] [stdout]   --> src/arm7tdmi/instructions.rs:93:43
[INFO] [stdout]    |
[INFO] [stdout] 93 |     pub fn arm_not_implemented(&mut self, instruction: ARMByteCode) -> CYCLES {
[INFO] [stdout]    |                                           ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_instruction`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `operand1`
[INFO] [stdout]    --> src/arm7tdmi/alu.rs:183:45
[INFO] [stdout]     |
[INFO] [stdout] 183 |     pub fn arm_rsc(&mut self, rd: REGISTER, operand1: u32, operand2: u32, set_flags: bool) {
[INFO] [stdout]     |                                             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_operand1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `address1`
[INFO] [stdout]   --> src/debugger/breakpoints.rs:38:46
[INFO] [stdout]    |
[INFO] [stdout] 38 |             BreakType::WatchAddress(address, address1) => write!(f, "address == {}", address),
[INFO] [stdout]    |                                              ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_address1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `InternalOperation` is never used
[INFO] [stdout]   --> src/arm7tdmi/instructions.rs:11:10
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub type InternalOperation = fn(&mut CPU) -> CYCLES;
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Reset`, `Undefined`, and `IRQ` are never constructed
[INFO] [stdout]   --> src/arm7tdmi/interrupts.rs:7:5
[INFO] [stdout]    |
[INFO] [stdout] 6  | pub enum Exceptions {
[INFO] [stdout]    |          ---------- variants in this enum
[INFO] [stdout] 7  |     Reset,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 8  |     Undefined,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 9  |     Software,
[INFO] [stdout] 10 |     IRQ,
[INFO] [stdout]    |     ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Exceptions` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:509:17
[INFO] [stdout]     |
[INFO] [stdout] 509 |         assert!(cpu.decode_arm_instruction(instruction).executable == CPU::single_data_swap)
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout]     = note: `#[warn(unpredictable_function_pointer_comparisons)]` on by default
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 509 |         assert!(std::ptr::fn_addr_eq(cpu.decode_arm_instruction(instruction).executable, CPU::single_data_swap as for<'a> fn(&'a mut cpu::CPU, u32) -> u8))
[INFO] [stdout]     |                 +++++++++++++++++++++                                                  ~                       +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:518:17
[INFO] [stdout]     |
[INFO] [stdout] 518 |         assert!(cpu.decode_arm_instruction(instruction).executable == CPU::block_dt_execution)
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 518 |         assert!(std::ptr::fn_addr_eq(cpu.decode_arm_instruction(instruction).executable, CPU::block_dt_execution as for<'a> fn(&'a mut cpu::CPU, u32) -> u8))
[INFO] [stdout]     |                 +++++++++++++++++++++                                                  ~                         +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:526:17
[INFO] [stdout]     |
[INFO] [stdout] 526 |         assert!(cpu.decode_arm_instruction(instruction).executable == CPU::arm_branch_and_exchange)
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 526 |         assert!(std::ptr::fn_addr_eq(cpu.decode_arm_instruction(instruction).executable, CPU::arm_branch_and_exchange as for<'a> fn(&'a mut cpu::CPU, u32) -> u8))
[INFO] [stdout]     |                 +++++++++++++++++++++                                                  ~                              +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:536:17
[INFO] [stdout]     |
[INFO] [stdout] 536 |         assert!(cpu.decode_arm_instruction(instruction).executable == CPU::arm_software_interrupt);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 536 |         assert!(std::ptr::fn_addr_eq(cpu.decode_arm_instruction(instruction).executable, CPU::arm_software_interrupt as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 +++++++++++++++++++++                                                  ~                             +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:555:17
[INFO] [stdout]     |
[INFO] [stdout] 555 |         assert!(decoded_instruction.executable != CPU::arm_nop);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 555 |         assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 ++++++++++++++++++++++                              ~              +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:556:17
[INFO] [stdout]     |
[INFO] [stdout] 556 |         assert!(decoded_instruction.executable == CPU::data_processing_instruction);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 556 |         assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 +++++++++++++++++++++                              ~                                  +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:567:17
[INFO] [stdout]     |
[INFO] [stdout] 567 |         assert!(decoded_instruction.executable == CPU::arm_nop);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 567 |         assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 +++++++++++++++++++++                              ~              +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:568:17
[INFO] [stdout]     |
[INFO] [stdout] 568 |         assert!(decoded_instruction.executable != CPU::data_processing_instruction);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 568 |         assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 ++++++++++++++++++++++                              ~                                  +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:579:17
[INFO] [stdout]     |
[INFO] [stdout] 579 |         assert!(decoded_instruction.executable != CPU::arm_nop);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 579 |         assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 ++++++++++++++++++++++                              ~              +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:580:17
[INFO] [stdout]     |
[INFO] [stdout] 580 |         assert!(decoded_instruction.executable == CPU::data_processing_instruction);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 580 |         assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 +++++++++++++++++++++                              ~                                  +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:591:17
[INFO] [stdout]     |
[INFO] [stdout] 591 |         assert!(decoded_instruction.executable == CPU::arm_nop);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 591 |         assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 +++++++++++++++++++++                              ~              +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:592:17
[INFO] [stdout]     |
[INFO] [stdout] 592 |         assert!(decoded_instruction.executable != CPU::data_processing_instruction);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 592 |         assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 ++++++++++++++++++++++                              ~                                  +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:603:17
[INFO] [stdout]     |
[INFO] [stdout] 603 |         assert!(decoded_instruction.executable != CPU::arm_nop);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 603 |         assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 ++++++++++++++++++++++                              ~              +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:604:17
[INFO] [stdout]     |
[INFO] [stdout] 604 |         assert!(decoded_instruction.executable == CPU::data_processing_instruction);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 604 |         assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 +++++++++++++++++++++                              ~                                  +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:614:17
[INFO] [stdout]     |
[INFO] [stdout] 614 |         assert!(decoded_instruction.executable != CPU::arm_nop);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 614 |         assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 ++++++++++++++++++++++                              ~              +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:615:17
[INFO] [stdout]     |
[INFO] [stdout] 615 |         assert!(decoded_instruction.executable == CPU::data_processing_instruction);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 615 |         assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 +++++++++++++++++++++                              ~                                  +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:625:17
[INFO] [stdout]     |
[INFO] [stdout] 625 |         assert!(decoded_instruction.executable != CPU::arm_nop);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 625 |         assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 ++++++++++++++++++++++                              ~              +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:626:17
[INFO] [stdout]     |
[INFO] [stdout] 626 |         assert!(decoded_instruction.executable == CPU::data_processing_instruction);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 626 |         assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 +++++++++++++++++++++                              ~                                  +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:636:17
[INFO] [stdout]     |
[INFO] [stdout] 636 |         assert!(decoded_instruction.executable != CPU::arm_nop);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 636 |         assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 ++++++++++++++++++++++                              ~              +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:637:17
[INFO] [stdout]     |
[INFO] [stdout] 637 |         assert!(decoded_instruction.executable == CPU::data_processing_instruction);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 637 |         assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 +++++++++++++++++++++                              ~                                  +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:647:17
[INFO] [stdout]     |
[INFO] [stdout] 647 |         assert!(decoded_instruction.executable != CPU::arm_nop);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 647 |         assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 ++++++++++++++++++++++                              ~              +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:648:17
[INFO] [stdout]     |
[INFO] [stdout] 648 |         assert!(decoded_instruction.executable == CPU::data_processing_instruction);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 648 |         assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 +++++++++++++++++++++                              ~                                  +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:658:17
[INFO] [stdout]     |
[INFO] [stdout] 658 |         assert!(decoded_instruction.executable != CPU::arm_nop);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 658 |         assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 ++++++++++++++++++++++                              ~              +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:659:17
[INFO] [stdout]     |
[INFO] [stdout] 659 |         assert!(decoded_instruction.executable == CPU::data_processing_instruction);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 659 |         assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 +++++++++++++++++++++                              ~                                  +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:670:17
[INFO] [stdout]     |
[INFO] [stdout] 670 |         assert!(decoded_instruction.executable != CPU::arm_nop);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 670 |         assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 ++++++++++++++++++++++                              ~              +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:671:17
[INFO] [stdout]     |
[INFO] [stdout] 671 |         assert!(decoded_instruction.executable == CPU::data_processing_instruction);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 671 |         assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 +++++++++++++++++++++                              ~                                  +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:682:17
[INFO] [stdout]     |
[INFO] [stdout] 682 |         assert!(decoded_instruction.executable != CPU::arm_nop);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 682 |         assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 ++++++++++++++++++++++                              ~              +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:683:17
[INFO] [stdout]     |
[INFO] [stdout] 683 |         assert!(decoded_instruction.executable == CPU::data_processing_instruction);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 683 |         assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 +++++++++++++++++++++                              ~                                  +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:688:17
[INFO] [stdout]     |
[INFO] [stdout] 688 |         assert!(decoded_instruction.executable != CPU::arm_nop);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 688 |         assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 ++++++++++++++++++++++                              ~              +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:689:17
[INFO] [stdout]     |
[INFO] [stdout] 689 |         assert!(decoded_instruction.executable == CPU::data_processing_instruction);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 689 |         assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 +++++++++++++++++++++                              ~                                  +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:694:17
[INFO] [stdout]     |
[INFO] [stdout] 694 |         assert!(decoded_instruction.executable != CPU::arm_nop);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 694 |         assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 ++++++++++++++++++++++                              ~              +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:695:17
[INFO] [stdout]     |
[INFO] [stdout] 695 |         assert!(decoded_instruction.executable == CPU::data_processing_instruction);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 695 |         assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 +++++++++++++++++++++                              ~                                  +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:707:17
[INFO] [stdout]     |
[INFO] [stdout] 707 |         assert!(decoded_instruction.executable != CPU::arm_nop);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 707 |         assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 ++++++++++++++++++++++                              ~              +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:708:17
[INFO] [stdout]     |
[INFO] [stdout] 708 |         assert!(decoded_instruction.executable == CPU::data_processing_instruction);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 708 |         assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 +++++++++++++++++++++                              ~                                  +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:713:17
[INFO] [stdout]     |
[INFO] [stdout] 713 |         assert!(decoded_instruction.executable != CPU::arm_nop);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 713 |         assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 ++++++++++++++++++++++                              ~              +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:714:17
[INFO] [stdout]     |
[INFO] [stdout] 714 |         assert!(decoded_instruction.executable == CPU::data_processing_instruction);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 714 |         assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 +++++++++++++++++++++                              ~                                  +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:725:17
[INFO] [stdout]     |
[INFO] [stdout] 725 |         assert!(decoded_instruction.executable != CPU::arm_nop);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 725 |         assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 ++++++++++++++++++++++                              ~              +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:726:17
[INFO] [stdout]     |
[INFO] [stdout] 726 |         assert!(decoded_instruction.executable == CPU::data_processing_instruction);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 726 |         assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 +++++++++++++++++++++                              ~                                  +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:731:17
[INFO] [stdout]     |
[INFO] [stdout] 731 |         assert!(decoded_instruction.executable != CPU::arm_nop);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 731 |         assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 ++++++++++++++++++++++                              ~              +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:732:17
[INFO] [stdout]     |
[INFO] [stdout] 732 |         assert!(decoded_instruction.executable == CPU::data_processing_instruction);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 732 |         assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 +++++++++++++++++++++                              ~                                  +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:745:17
[INFO] [stdout]     |
[INFO] [stdout] 745 |         assert!(decoded_instruction.executable != CPU::arm_nop);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 745 |         assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 ++++++++++++++++++++++                              ~              +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:746:17
[INFO] [stdout]     |
[INFO] [stdout] 746 |         assert!(decoded_instruction.executable == CPU::data_processing_instruction);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 746 |         assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 +++++++++++++++++++++                              ~                                  +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:752:17
[INFO] [stdout]     |
[INFO] [stdout] 752 |         assert!(decoded_instruction.executable != CPU::arm_nop);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 752 |         assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 ++++++++++++++++++++++                              ~              +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:753:17
[INFO] [stdout]     |
[INFO] [stdout] 753 |         assert!(decoded_instruction.executable == CPU::data_processing_instruction);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 753 |         assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 +++++++++++++++++++++                              ~                                  +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:767:17
[INFO] [stdout]     |
[INFO] [stdout] 767 |         assert!(decoded_instruction.executable != CPU::arm_nop);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 767 |         assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 ++++++++++++++++++++++                              ~              +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:768:17
[INFO] [stdout]     |
[INFO] [stdout] 768 |         assert!(decoded_instruction.executable == CPU::data_processing_instruction);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 768 |         assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 +++++++++++++++++++++                              ~                                  +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:774:17
[INFO] [stdout]     |
[INFO] [stdout] 774 |         assert!(decoded_instruction.executable != CPU::arm_nop);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 774 |         assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 ++++++++++++++++++++++                              ~              +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:775:17
[INFO] [stdout]     |
[INFO] [stdout] 775 |         assert!(decoded_instruction.executable == CPU::data_processing_instruction);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 775 |         assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 +++++++++++++++++++++                              ~                                  +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:781:17
[INFO] [stdout]     |
[INFO] [stdout] 781 |         assert!(decoded_instruction.executable != CPU::arm_nop);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 781 |         assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 ++++++++++++++++++++++                              ~              +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:782:17
[INFO] [stdout]     |
[INFO] [stdout] 782 |         assert!(decoded_instruction.executable == CPU::data_processing_instruction);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 782 |         assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 +++++++++++++++++++++                              ~                                  +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:791:17
[INFO] [stdout]     |
[INFO] [stdout] 791 |         assert!(decoded_instruction.executable != CPU::arm_nop);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 791 |         assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 ++++++++++++++++++++++                              ~              +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:792:17
[INFO] [stdout]     |
[INFO] [stdout] 792 |         assert!(decoded_instruction.executable == CPU::data_processing_instruction);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 792 |         assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 +++++++++++++++++++++                              ~                                  +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:991:17
[INFO] [stdout]     |
[INFO] [stdout] 991 |         assert!(decoded_instruction.executable != CPU::arm_nop);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 991 |         assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 ++++++++++++++++++++++                              ~              +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:992:17
[INFO] [stdout]     |
[INFO] [stdout] 992 |         assert!(decoded_instruction.executable == CPU::sdt_imm_offset);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 992 |         assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::sdt_imm_offset as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]     |                 +++++++++++++++++++++                              ~                     +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]     --> src/arm7tdmi/decoder.rs:1006:17
[INFO] [stdout]      |
[INFO] [stdout] 1006 |         assert!(decoded_instruction.executable != CPU::arm_nop);
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: the address of the same function can vary between different codegen units
[INFO] [stdout]      = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]      = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]      |
[INFO] [stdout] 1006 |         assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]      |                 ++++++++++++++++++++++                              ~              +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]     --> src/arm7tdmi/decoder.rs:1007:17
[INFO] [stdout]      |
[INFO] [stdout] 1007 |         assert!(decoded_instruction.executable == CPU::thumb_sdt_sp_imm);
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: the address of the same function can vary between different codegen units
[INFO] [stdout]      = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]      = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]      |
[INFO] [stdout] 1007 |         assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::thumb_sdt_sp_imm as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]      |                 +++++++++++++++++++++                              ~                       +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]     --> src/arm7tdmi/decoder.rs:1021:17
[INFO] [stdout]      |
[INFO] [stdout] 1021 |         assert!(decoded_instruction.executable != CPU::arm_nop);
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: the address of the same function can vary between different codegen units
[INFO] [stdout]      = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]      = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]      |
[INFO] [stdout] 1021 |         assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]      |                 ++++++++++++++++++++++                              ~              +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]     --> src/arm7tdmi/decoder.rs:1022:17
[INFO] [stdout]      |
[INFO] [stdout] 1022 |         assert!(decoded_instruction.executable == CPU::thumb_add_offset_to_sp);
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: the address of the same function can vary between different codegen units
[INFO] [stdout]      = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]      = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]      |
[INFO] [stdout] 1022 |         assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::thumb_add_offset_to_sp as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]      |                 +++++++++++++++++++++                              ~                             +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]     --> src/arm7tdmi/decoder.rs:1035:17
[INFO] [stdout]      |
[INFO] [stdout] 1035 |         assert!(decoded_instruction.executable != CPU::arm_nop);
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: the address of the same function can vary between different codegen units
[INFO] [stdout]      = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]      = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]      |
[INFO] [stdout] 1035 |         assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]      |                 ++++++++++++++++++++++                              ~              +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]     --> src/arm7tdmi/decoder.rs:1036:17
[INFO] [stdout]      |
[INFO] [stdout] 1036 |         assert!(decoded_instruction.executable == CPU::thumb_push_pop);
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: the address of the same function can vary between different codegen units
[INFO] [stdout]      = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]      = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]      |
[INFO] [stdout] 1036 |         assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::thumb_push_pop as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]      |                 +++++++++++++++++++++                              ~                     +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]     --> src/arm7tdmi/decoder.rs:1049:17
[INFO] [stdout]      |
[INFO] [stdout] 1049 |         assert!(decoded_instruction.executable != CPU::arm_nop);
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: the address of the same function can vary between different codegen units
[INFO] [stdout]      = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]      = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]      |
[INFO] [stdout] 1049 |         assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]      |                 ++++++++++++++++++++++                              ~              +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]     --> src/arm7tdmi/decoder.rs:1050:17
[INFO] [stdout]      |
[INFO] [stdout] 1050 |         assert!(decoded_instruction.executable == CPU::thumb_multiple_load_or_store);
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: the address of the same function can vary between different codegen units
[INFO] [stdout]      = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]      = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]      |
[INFO] [stdout] 1050 |         assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::thumb_multiple_load_or_store as for<'a> fn(&'a mut cpu::CPU, u32) -> u8));
[INFO] [stdout]      |                 +++++++++++++++++++++                              ~                                   +++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_undefined` is never used
[INFO] [stdout]    --> src/arm7tdmi/decoder.rs:287:12
[INFO] [stdout]     |
[INFO] [stdout] 287 |     pub fn is_undefined(instruction: u32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `InternalOperation` is never used
[INFO] [stdout]   --> src/arm7tdmi/instructions.rs:11:10
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub type InternalOperation = fn(&mut CPU) -> CYCLES;
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Reset`, `Undefined`, and `IRQ` are never constructed
[INFO] [stdout]   --> src/arm7tdmi/interrupts.rs:7:5
[INFO] [stdout]    |
[INFO] [stdout] 6  | pub enum Exceptions {
[INFO] [stdout]    |          ---------- variants in this enum
[INFO] [stdout] 7  |     Reset,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 8  |     Undefined,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 9  |     Software,
[INFO] [stdout] 10 |     IRQ,
[INFO] [stdout]    |     ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Exceptions` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 56.48s
[INFO] running `Command { std: "docker" "inspect" "ad9567147a78f82a97b9625bd70ea20f1d949abee6c120037d1d8b2d2df72ed5", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "ad9567147a78f82a97b9625bd70ea20f1d949abee6c120037d1d8b2d2df72ed5", kill_on_drop: false }`
[INFO] [stdout] ad9567147a78f82a97b9625bd70ea20f1d949abee6c120037d1d8b2d2df72ed5
