a byval argument without an align can have an arbitrary alignment

requirement on the input pointer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119914 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2010-11-20 23:49:06 +00:00
parent 5cc88a205d
commit a6fd81dd7f

View File

@ -1021,8 +1021,9 @@ declare signext i8 @returns_signed_char()
registers). Use of this attribute is target-specific.</dd>
<dt><tt><b><a name="byval">byval</a></b></tt></dt>
<dd>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
<dd><p>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,
<tt><a href="#readonly">readonly</a></tt> functions should not write to
<tt>byval</tt> 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.</dd>
values.</p>
<p>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.</p></dd>
<dt><tt><b><a name="sret">sret</a></b></tt></dt>
<dd>This indicates that the pointer parameter specifies the address of a