Allow InvokeInst to have the second optional prof branch weight for its unwind branch.
InvokeInst is a terminator with two successors. It might have its unwind branch taken many times. If so the BranchProbabilityInfo unwind branch heuristic can be inaccurate. This patch allows a higher accuracy calculated with both branch weights set.
Changes:
- A new section about InvokeInst is added to the BranchWeightMetadata page. It states the old information that missed in the doc and adds new about the second branch weight.
- Verifier is changed to allow either 1 or 2 branch weights for InvokeInst.
- A new test is written for BranchProbabilityInfo to demonstrate the main improvement of the simple fix in calcMetadataWeights().
- Several new testcases are created for Inliner. Those check that both weights are accounted for invoke instruction weight calculation.
I'd suggest calling this INVOKE_NORMAL_WEIGHT.