NOP

    LLVM decided that the function wasn’t doing anything worthwhile and just removed it.

    Your for loop delay would become:

    1. $ cargo objdump --bin clocks-and-timers --release -- -d -no-show-raw-insn
    2. clocks_and_timers::delay::h711ce9bd68a6328f:
    3. 8000188: push {r4, r5, r7, lr}
    4. 800018a: movs r4, #0
    5. 800018e: uxth r5, r4
    6. 8000190: bl #4666
    7. 8000194: cmp r5, #150
    8. 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?