<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/102983>102983</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [AArch64] no-FP ABI check blames caller's declaration
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          jroelofs
      </td>
    </tr>
</table>

<pre>
    ```
$ cat >vaargs.c <<EOF
#include <stdarg.h>
#include <stdbool.h>

double takes_double(double);

static bool takes_va_list_ptr(va_list * ap) {
  double val = va_arg(*ap, double);
  return takes_double(val);
}

float foo(float);

int main() {
 va_list ap;
  takes_va_list_ptr(&ap);
}
EOF
$ ./bin/clang vaargs.c -c -o /dev/null -march=armv8-a+nofp --target=arm64-apple-ios
vaargs.c:6:13: error: 'takes_va_list_ptr' requires 'double' type support, but ABI 'darwinpcs' does not support it
 6 | static bool takes_va_list_ptr(va_list * ap) {
      | ^
vaargs.c:6:13: error: 'takes_va_list_ptr' requires 'double' type support, but ABI 'darwinpcs' does not support it
2 errors generated.
```

It would be less confusing if the diagnostic pointed at the call site for `takes_double`, with a note pointing at `takes_double`'s declaration.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzMVMFu4zgM_RrmQjhwJNtxDj64TQ3MafcPClqmbc0okleSU8zfL-Qmu5m2e9rLBIEigU9875ERKQQ9WeYGyicozzta4-x88907Nm4Mu94NPxuo8ts3P0PegihQUUSQL1ciP4W9QpDPIJ9f_ujuEKmtMuvAKRLiQH7azyBf_iPcO2ce49s6uLU3jJF-cHh9P4Co75sTyKdHdIgUtcKU6XblSq9Gh_i6RA-ivp0QRIu0gDghHG8JEG9UVzII8oxXeiU_gahBtAn7jJ9ZET3H1duP-q5kfhF3PD-qHI2jiKNzIOpt_9mIthEvpO1G_6jy7oCWBxFfWQVRbQ4_i3hoUIF7EF2feDplyE74TzMzhZlDEN3AVxCdXY3B7EJezSDP5C_XOiMQT9aNC2ZZJD9xfI9URUbLYjjTLrwT3ZOCbCuQ7UGCbJG9dz5tQBy_MHBEz3-t2nNIgHtljxh_LoxhXRbnY2pKv0Zsn75tIPJv2i4qJNzgOKB18Y5FHW_lqhCOz_i__irpk5JA-fIbOhTvzAEntuwp8rC_NfzDG97WbxHf3GoG7BkNh4DK2XEN2k6oR4wz46Bpsi6kci1O28gDUtwiiozBoCPj6DxClf_yDqo8yX_TcUZKQvn9esqcJscX6GPAgZUhT1E7u98NjRxO8kQ7bg5HIYvTqSrL3dxUStR9WXIpZHUYy5LHoi6ULAUfVV0p3ulG5KLI64MQh7I4lPuxoEIMuTwMBx7GsYIi5wtpszfmetk7P-10CCs3h1ycarkz1LMJ20AUwvIbblEQIs1H36RLWb9OAYo8NTT8mybqaLZJ2rZezVUB5Rmty7o_tx6qmdUP7A1dOGzVY__R9W71ppljXALIFkQHopt0nNd-r9wFRJeYbj_Z4t13VhFEt-kLILqbgWsj_g4AAP__bJbMjw">