nikic added a comment. In D127579#3598306 <https://reviews.llvm.org/D127579#3598306>, @Anastasia wrote:
> In D127579#3595461 <https://reviews.llvm.org/D127579#3595461>, @nikic wrote: > >> In D127579#3588626 <https://reviews.llvm.org/D127579#3588626>, @Anastasia >> wrote: >> >>> In D127579#3586092 <https://reviews.llvm.org/D127579#3586092>, @nikic wrote: >>> >>>> @Anastasia Thanks, that does sound like a legitimate reason to include the >>>> information. I want to double check though, does linking the modules >>>> actually fail if the functions have signatures that differ only by pointer >>>> types? At least for normal LLVM IR this would work fine, and would just >>>> result in the insertion of a bitcast during linking (and then typically >>>> the bitcast would get shifted from the called function to the call >>>> arguments later). >>> >>> @nikic If I use `spirv-link` with two modules that have mismatching pointee >>> type in a function parameter I get an error: >>> >>> error: 0: Type mismatch on symbol "foo" between imported >>> variable/function %6 and exported variable/function %17. >>> >>> The way I understand a bitcast instruction in SPIR-V (`OpBitcast` in >>> https://www.khronos.org/registry/SPIR-V/specs/unified1/SPIRV.html#_conversion_instructions) >>> is that it can only apply to pointer types which are distinct from >>> function types. Note that I believe that function pointers are illegal, at >>> least we disallow them in OpenCL. >> >> Okay ... can we maybe turn this around then? Always emit function parameters >> as `i8*` and bitcast them as needed, even if it is possible to guess a >> better type based on the definition? (Let's ignore the image type case here, >> which seems to have different requirements from the rest.) > > So where would bitcasts be emitted to reconstruct the function prototypes > correctly? The bitcasts would be in the definition only, when the pointer arguments actually get used in a typed manner. The prototype would always include `i8*` arguments only. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D127579/new/ https://reviews.llvm.org/D127579 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits