Wiring the ALU into the execute stage and updating Zero/Carry/Negative flags is exactly what happens inside real x86 EFLAGS and ARM CPSR/NZCV registers on every arithmetic instruction. Compilers depend on these flags being set correctly: GCC and LLVM emit conditional branches immediately after arithmetic ops specifically to read them, so a flag bug here would silently break every if-statement in a compiled program.