[LLVMdev] using large structures in registers/returns

edA-qa mort-ora-y eda-qa at disemia.com
Tue Nov 6 22:32:26 PST 2012


I can't find a lot of information about using structures directly as
parameters, returns, and in registers. Is this fully supported on all
platforms? Does it always convert to creating a hidden parameter when
too large?

For example (assume very.large is too big to fit in the target machine
registers):

define %very.large @get_struct() {
	%m1 = insertvalue %very.large undef, i32 10, 0
	...
	%m10 = insertvalue %very.large %m9, i32 25, 9
	ret %very.large %m10
}

define void @use_struct( %very.large %m ) { ... }

define i32 @main() {
	%m = call %very.large @get_struct()
	call void @use_struct( %very.large %m )
}

Will this work on all targets?

-- 
edA-qa mort-ora-y
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
Sign: Please digitally sign your emails.
Encrypt: I'm also happy to receive encrypted mail.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 259 bytes
Desc: OpenPGP digital signature
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20121107/53bbb79d/attachment.sig>


More information about the llvm-dev mailing list