Page MenuHomePhabricator

[AlignmentFromAssumptions] Set source and dest alignments of memory intrinsiscs separately
ClosedPublic

Authored by dneilson on Feb 8 2018, 10:52 AM.

Details

Summary

This change is part of step five in the series of changes to remove alignment argument from
memcpy/memmove/memset in favour of alignment attributes. In particular, this changes the
AlignmentFromAssumptions pass to cease using the old getAlignment()/setAlignment API of
MemoryIntrinsic in favour of getting/setting source & dest specific alignments through
the new API. This allows us to simplify some of the code in this pass and also be more
aggressive about setting the source and destination alignments separately.

Steps:
Step 1) Remove alignment parameter and create alignment parameter attributes for
memcpy/memmove/memset. ( rL322965, rC322964, rL322963 )
Step 2) Expand the IRBuilder API to allow creation of memcpy/memmove with differing
source and dest alignments. ( rL323597 )
Step 3) Update Clang to use the new IRBuilder API. ( rC323617 )
Step 4) Update Polly to use the new IRBuilder API. ( rL323618 )
Step 5) Update LLVM passes that create memcpy/memmove calls to use the new IRBuilder API,
and those that use use MemIntrinsicInst::[get|set]Alignment() to use [get|set]DestAlignment()
and [get|set]SourceAlignment() instead. ( rL323886, rL323891, rL324148, rL324273, rL324278,
rL324384, rL324395, rL324402, rL324626 )
Step 6) Remove the single-alignment IRBuilder API for memcpy/memmove, and the
MemIntrinsicInst::[get|set]Alignment() methods.

Reference

http://lists.llvm.org/pipermail/llvm-dev/2015-August/089384.html
http://lists.llvm.org/pipermail/llvm-commits/Week-of-Mon-20151109/312083.html

Diff Detail

Repository
rL LLVM

Event Timeline

dneilson created this revision.Feb 8 2018, 10:52 AM

@hfinkel I hope that you don't mind being added as a reviewer; it looks like you're the original author of much of the memory intrinsic handling in this pass.

reames accepted this revision.Feb 17 2018, 2:47 PM
reames added a subscriber: reames.

LGTM provided that the backend changes to take the min of the two have already landed.

This revision is now accepted and ready to land.Feb 17 2018, 2:47 PM
This revision was automatically updated to reflect the committed changes.