[SafeStack] Use updated CreateMemCpy API to set more accurate source and destination...
authorDaniel Neilson <dneilson@azul.com>
Mon, 12 Feb 2018 22:39:47 +0000 (22:39 +0000)
committerDaniel Neilson <dneilson@azul.com>
Mon, 12 Feb 2018 22:39:47 +0000 (22:39 +0000)
commit095d72989d88467b674ec9282a28405a2aa4c729
tree846a8bfb9f9d89f48e60dbaa4ad1ec7cbc6ee55e
parentebb0838f74f694a62957646463b6a650903adb97
[SafeStack] Use updated CreateMemCpy API to set more accurate source and destination alignments.

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
creation of memcpys in the SafeStack pass to set the alignment of the destination object to
its stack alignment while separately setting the source byval arguments alignment to its
alignment.

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, rL324642, rL324653, rL324654, rL324773, rL324774,
rL324781, rL324784 )
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

Reviewers: eugenis, bollu

Reviewed By: eugenis

Subscribers: llvm-commits

Differential Revision: https://reviews.llvm.org/D42710

llvm-svn: 324955
llvm/lib/CodeGen/SafeStack.cpp
llvm/lib/CodeGen/SafeStackLayout.cpp
llvm/lib/CodeGen/SafeStackLayout.h
llvm/test/Transforms/SafeStack/X86/byval.ll