Given something like this:
declare signext i16 @signext_callee() define i32 @caller() { %res = call i16 @signext_callee() }
CallLowering would miss that signext_callee's return value is sign extended, because it isn't on the call.
Use hasRetAttr on the CallBase to allow us to catch this.
This doesn't actually need a G_ZEXT. In this context it's supposed to be an optimization hint, so really this should be something like