Link register is used to store return address after a branch with link. As u said if it holds [address of current instruction + 8 bytes] , how will it return to the next instruction if the previous instruction was a branch with link. All the instructions are 4 bytes aligned.