This patch puts a constraint on the attributes that will receive call base context.
Nit: For better or worse we use F and Fn as a variable name for functions usually.
I read the comment and do not know what happens. We need to improve the wording, maybe elaborate.
I'm confused by the description. Is the analysis invaliding values?
Nit: Assertions always with messages.
Can we have a explanation here or in the header what is happening here. The commit message should also contain more details.
Style: No braces. Use a range loop or part of the constructor (or use append).
That was my initial idea but since arg_begin() is a pointer the SmallVector was trying to converyt Argument to Value*. After investigating I found that there is something called pointer_iterator that would fix this issue.