diff options
author | Alexandros Lamprineas <alexandros.lamprineas@arm.com> | 2024-07-26 09:22:47 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-07-26 09:22:47 +0100 |
commit | f8ae128755777424cf4133e4e8e819c0bc08d2b1 (patch) | |
tree | bb4880d8ad4076e48bb4f4534d505352c0431ebe /flang/lib/Frontend/CompilerInvocation.cpp | |
parent | 9440a49b0ff812c889927e4dc81e746b32124bb4 (diff) | |
download | llvm-f8ae128755777424cf4133e4e8e819c0bc08d2b1.zip llvm-f8ae128755777424cf4133e4e8e819c0bc08d2b1.tar.gz llvm-f8ae128755777424cf4133e4e8e819c0bc08d2b1.tar.bz2 |
[clang][FMV][AArch64] Improve streaming mode compatibility. (#100181)
* Allow arm-streaming if all the functions versions adhere to it.
* Allow arm-streaming-compatible if all the functions versions adhere to
it.
When the caller needs to toggle the streaming mode all the function
versions of the callee must adhere to the same mode, otherwise the call
will yield a runtime error.
Imagine the versions of the callee live in separate TUs. The version
that is visible to the caller will determine the calling convention used
when generating code for the callsite. Therefore we cannot support
mixing streaming with non-streaming function versions. Imagine TU1 has a
streaming caller and calls foo._sme which is streaming-compatible. The
codegen for the callsite will not switch off the streaming mode. Then in
TU2 we have a version which is non-streaming and could potentially be
called in streaming mode. Similarly if the caller is non-streaming and
the called version is streaming-compatible the codegen for the callsite
will not switch on the streaming mode, but other versions may be
streaming.
Diffstat (limited to 'flang/lib/Frontend/CompilerInvocation.cpp')
0 files changed, 0 insertions, 0 deletions