Previously we were looking for the returns twice attribute by manually
getting the function attributes from the call. This meant that we only
found attributes on the call itself, not what it was calling.
So if you had:
%call1 = call i32 @setjmp(ptr noundef null)
We would not BTI protect that even though setjmp clearly needs it.
Clang happens to produce:
%call = call i32 @setjmp(ptr noundef null) #0 ; returns_twice
So all valid calls were protected. This is not guaranteed,
the frontend may choose not to put attributes on the call.
It is undefined behaviour to call setjmp indirectly
(https://pubs.opengroup.org/onlinepubs/9699919799/functions/setjmp.html)
but as I misused the APIs here I think it's worth fixing up regardless.
Added comments to the test file where the IR differs from what
clang would output.