This patch defines 'unpredictable' metadata. This metadata can be used to signal to the optimizer or backend that a branch or switch is unpredictable, and therefore, it's probably better to not split a compound predicate into multiple branches such as in CodeGenPrepare::splitBranchCondition(). This was discussed in:
See the dependent patches (to CodeGenPrepare and SelectionDAGBuilder) that use the metadata when deciding to split branch conditions. There will also be a patch to clang to make this available in C.