This adds the unknown_provenance LLVM-IR keyword, corresponding to the UnknownProvenance constant.
The unknown_provenance (UnknownProvenance) constant is being introduced as a clean way to indicate that a ptr_provenance is unknown.
In the original full restrict proposal, this role was served by using undef (UndefValue) as ptr_provenance operand.
For full restrict that was ok, but when we want to use ptr_provenance in a broader context having a special value results in a cleaner implementation without ambiguity.
(Especially if, at a later time, we want to make use of ptr_provenance in BasicAliasAnalysis, not just ScopedNoAliasAA).
Yes, that definitely makes sense.
It can be PHI'd, select'ed, cast'ed. But in the end, the usage must only show up in the provenance path of load,store,llvm.ptr.provenance.
I'll look into this in the coming days.