NOP
LLVM decided that the function wasn’t doing anything worthwhile and just removed it.
Your for
loop delay would become:
$ cargo objdump --bin clocks-and-timers --release -- -d -no-show-raw-insn
clocks_and_timers::delay::h711ce9bd68a6328f:
8000188: push {r4, r5, r7, lr}
800018a: movs r4, #0
800018e: uxth r5, r4
8000190: bl #4666
8000194: cmp r5, #150
8000198: pop {r4, r5, r7, pc}
Now, test this: Compile the program in debug mode and run it, then compile the program in releasemode and run it. What’s the difference between them? What do you think is the main cause of thedifference? Can you think of a way to make them equivalent or at least more similar again?