Le 17/07/2025 à 15:58, Yuao Ma a écrit :
Hi Mikael,

On 7/17/2025 3:47 PM, Mikael Morin wrote:
How did you declare gfor_fndecl_string_split?
More exactly what is the declaration type for the POS argument?

For the POS argument type, I'm using build_pointer_type(gfc_charlen_type_node). I got this from string_minmax, but I'm unsure if it's the right fit here.

It makes sense to use that type, but then the argument passed to the function should have the same type, or at least the same type size. gfc_charlen_type_node is probably 8 bytes long, whereas the default integer passed to it is only 4 bytes long.

Also, I'm encountering an issue with pointer declarations. I've found two methods: gfc_build_addr_expr and se.want_pointer. Are these the same, or do they have different uses? I've tried both, and they give me the same errors in my tests.

gfc_build_addr_expr is maybe a bit more low level. See at the end of gfc_conv_variable, if se.want_pointer is set, we use gfc_build_addr_expr. You can also use gfc_conv_expr_reference, which uses either of them depending on the case.

Reply via email to