tree 79491bc308cc63c12b1254c0facc194c20de8205
parent ade502a8c46b8393e022b4eabcdd445af91a451c
author Asher Mancinelli <ashermancinelli@gmail.com> 1745589476 -0700
committer GitHub <noreply@github.com> 1745589476 -0700
gpgsig -----BEGIN PGP SIGNATURE-----
 
 wsFcBAABCAAQBQJoC5TkCRC1aQ7uu5UhlAAA62oQAAZJCYEk+vP790BX+bDoaknj
 +D4rT/dz0TuQyNubSquWl6YO1PQXXkLpgOVALPnaMYtsiwmDnVCIfDYAVSrVq7bJ
 rLzSms+Mxv5vbe/g7fj2Gv75fqrlnUj4EC1D6SssvXcfhYeOlrruXvnUwEgqDMkh
 zc0zRq4WSouoaD7g14V1DhWfrYZYH9LoOlgzDrfOfDq0yT6LZgY+Aj6gST235bUZ
 majjvfs94bK5LSdvjluVfi0GoXyQdgdN+4+S+93UOFloe2Hsrd6V80Sd+sSbrV9m
 h7cjgyQ60TypPtxBa/DiimPzNsJnjko/taN3JmbP1wgt4Rj/l2zMNYJXqPk2XXHA
 EHkU4glSN8Lpzf6DBBbCP5YJ66aCLlbjhXzxVopd5nUHtWGSUOsX7GtClG7xjkM9
 eVxXBktQN55J4CqLSAue4qgXRA/D4EuztXKa+mEno3u1BoHtDvZZ4hKSGlbKNfY/
 qPyzQwBMOCSNq63B9rkYEtqUTzMF4inaIgswOhI2xcRPh1KQV3m56cxfD3m7T8iN
 QT2/Ep0ddXMiWGxhen22Xg3Z9dNOh8BtJdAKbuRznUUDUKVE7FUiZBzZWgrwNcCh
 dTkAkS8moNWYEr+EqvetUl6/iFoHO4VSd9QNWvlBYLoxOiawQyoS5zEtnkctbZiQ
 nkkRfVkNYgnSz4410VRh
 =3J0n
 -----END PGP SIGNATURE-----
 

[flang] Use correct int extension flags for C-ABI calls on aarch64 (#137105)

The AArch64 procedure call standard does not mandate that the callee
extends the return value. Clang does not add signext to functions
returning i8 or i16 on linux aarch64, but flang does.

This means that runtime routines returning i8's will have signext on the
callsite/declaration, but not on the implementation, and the call site
will assume the return value has already been sign extended when it has
not. This showed up in a test case calling MINVAL on an array of
INTEGER*1.

Adjust our integer extension flags to match clang and aarch64pcs on
linux. The behavior on Darwin should be preserved. This is listed on the
apple developer guide as a divergence from aarch64pcs.