[llvm-dev] Change memcpy/memmove/memset to have dest and source alignment attributes

Hal Finkel via llvm-dev llvm-dev at lists.llvm.org
Tue Jan 2 12:19:16 PST 2018

On 01/02/2018 02:11 PM, Daniel Neilson via llvm-dev wrote:
> Good day all,
>  I’ve spent a few days resurrecting the circa-2015 work on removing 
> the explicit alignment argument (4th arg) from the 
> @llvm.memcpy/memmove/memset intrinsics in favour of using the 
> alignment attribute on the pointer args of calls to the intrinsic. 
> This work was first proposed back in August 2015 by Lang Hames:
> http://lists.llvm.org/pipermail/llvm-dev/2015-August/089384.html  (item 2)
>  and an attempt at landing the work was made by Pete Cooper in 
> November 2015, but then backed out due to unspecified bot failures:
> http://lists.llvm.org/pipermail/llvm-commits/Week-of-Mon-20151109/312083.html
>  I’ve prepared changes for LLVM, Clang, and Polly that are now up for 
> review:
> * https://reviews.llvm.org/D41675  (LLVM part)
> * https://reviews.llvm.org/D41676  (polly part)
> * https://reviews.llvm.org/D41677  (Clang part)
>  Importantly for those maintaining downstream users of the LLVM API, 
> this changes the prototypes for the @llvm.memcpy/memmove/memset 
> intrinsics and changes the IRBuilder API for creating memcpy and 
> memmove calls.
> For example, IR which used to read:
>      call void @llvm.memcpy.p0i8.p0i8.i32(i8* %dest, i8* %src, i32 
> 100, i32 4, i1 false)
> will now read
>      call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 4 %dest, i8* align 
> 4 %src, i32 100, i1 false)
>  The LLVM change includes auto upgrade of the old IR. However, match 
> expressions in IR tests and calls to IRBuilder’s CreateMemCpy & 
> CreateMemMove will need to be updated.
>  My plan is to post another note to the list when the change is 
> landed, and stable.
>  Comments? Concerns?

Thanks for working on this. This still seems like the right thing to do 
(and will let us represent separate source and destination alignments).


> -Daniel
> ---
> Daniel Neilson, Ph.D.
> Azul Systems
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev

Hal Finkel
Lead, Compiler Technology and Programming Languages
Leadership Computing Facility
Argonne National Laboratory

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20180102/16ee51e7/attachment.html>

More information about the llvm-dev mailing list