[LLVMdev] Broke my tail (call)

Anton Korobeynikov anton at korobeynikov.info
Mon Feb 23 05:59:27 PST 2009


> This is all swinging on my interpretation of first-class structs though. I am 
> under the impression that they are essentially a set of registers holding 
> their first-class fields. So you can pass them by value as arguments to 
> functions with the behaviour of any other first-class type regardless of 
> where they came from.
This is not true in general and highly target- and CC- dependent. For
example, you can ran out of registers and then your struct can be passed
partly in registers and partly on stack. And depending on the stack
frame size of the callee you can easily get infinite stack growth.

As for returning struct-by-value - I think the situation is more
complicated and you can expect only "small structs" to behave so (small
= fits in the single target register)

-- 
With best regards, Anton Korobeynikov.

Faculty of Mathematics & Mechanics, Saint Petersburg State University.




More information about the llvm-dev mailing list