I've read that one of the penalties for integer overflow checking is pollution of the branch history table.
I was wondering if it is really necessary. Assuming the CPU statically predicts a forward branch as not taken and the branch is indeed not taken. Can't the CPU leave it out of the branch history table? This way the branch history table won't be polluted and the branch will be predicted correctly next time anyway.
Does anyone know if this is actually done by some CPUs? And if not is there a reason why its a bad idea?