[llvm] [SPIRV] Add support for pointers to functions with aggregate args/returns as global variables / constant initialisers (PR #169595)
Juan Manuel Martinez CaamaƱo via llvm-commits
llvm-commits at lists.llvm.org
Wed Nov 26 02:53:58 PST 2025
================
@@ -543,11 +558,76 @@ SPIRVPrepareFunctions::removeAggregateTypesFromSignature(Function *F) {
return NewF;
}
+// Mutates indirect callsites iff if aggregate argument/return types are present
+// with the types replaced by i32 types. The change in types is noted in
+// 'spv.mutated_callsites' metadata for later restoration.
+bool SPIRVPrepareFunctions::removeAggregateTypesFromCalls(Function *F) {
+ if (F->isDeclaration() || F->isIntrinsic())
+ return false;
+
+ SmallVector<std::pair<CallBase *, FunctionType *>> Calls;
+ for (auto &&BB : *F) {
+ for (auto &&I : BB) {
----------------
jmmartinez wrote:
Maybe use instructions to reduce the indentation.
```suggestion
for (auto &&I : instructions(F)) {
```
https://github.com/llvm/llvm-project/pull/169595
More information about the llvm-commits
mailing list