[LLVMdev] byval attr for base+range parameters
Yuanfang Chen
cyfmxc at gmail.com
Thu Jan 23 20:49:14 PST 2014
On Thu, Jan 23, 2014 at 10:57 PM, Reid Kleckner <rnk at google.com> wrote:
> That is not what byval does. byval implicitly copies the pointee into the
> argument slots used for the call or registers on some architectures.
Thanks Reid. I looked into the argpromotion code and you are right.
'byval' does not work for this case. I think I'll stick to my
workaround for now. But I don't quite understand why argpromotion
does not check for readonly use other than (GEPorNonGEP) LoadInst.
For case like
define void @checksum_(i32* noalias %i) {
. . . load %i
call void @_gfortran_transfer_integer_write(%xx, %i, 4)
}
If type of
@_gfortran_transfer_integer_write(%struct.__st_parameter_dt*, i8*,
i32) is changed to
@_gfortran_transfer_integer_write(%struct.__st_parameter_dt*, i8* byval, i32)
It makes sense to argpro %i of checksum_ , right?
More information about the llvm-dev
mailing list