There are a bunch of heuristics with different weights for taken and not taken cases in BranchProbabilityInfo.cpp file. Is there any documentation available, explaining how such weights are arrived at?
Also, is it of interest to improve the heuristics? For example, in the case of loop branch heuristic, it may be helpful to consider trip count for calculating the weights. Similarly, other heuristics can be improved.