From a6fd81dd7f6039fbc1a55f6f4d45659fffdd81fb Mon Sep 17 00:00:00 2001
From: Chris Lattner This indicates that the pointer parameter should really be passed by
+ value to the function. The attribute implies that a hidden copy of the
+ pointee
is made between the caller and the callee, so the callee is unable to
modify the value in the callee. This attribute is only valid on LLVM
pointer arguments. It is generally used to pass structs and arrays by
@@ -1030,10 +1031,13 @@ declare signext i8 @returns_signed_char()
to belong to the caller not the callee (for example,
readonly functions should not write to
byval parameters). This is not a valid attribute for return
- values. The byval attribute also supports specifying an alignment with
- the align attribute. This has a target-specific effect on the code
- generator that usually indicates a desired alignment for the synthesized
- stack slot.
The byval attribute also supports specifying an alignment with + the align attribute. It indicates the alignment of the stack slot to + form and the known alignment of the pointer specified to the call site. If + the alignment is not specified, then the code generator makes a + target-specific assumption.