In pipelining (at least, in MIPS), why is the incremented program counter address saved in the IF/ID pipeline register?
beq doesn't contain the destination address in the instruction, but an offset relative to the location of the instruction. For example "branch if equal to the instruction 12 words ahead of the branch instruction". You cannot execute such an instruction if you don't know what the address of the branch instruction was.