1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-20 19:42:54 +02:00
llvm-mirror/include/llvm/Transforms
Daniel Neilson 515e117e3a [AlignmentFromAssumptions] Set source and dest alignments of memory intrinsiscs separately
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, rL324642, rL324653, rL324654, rL324773, rL324774,
rL324781, rL324784, rL324955, rL324960 )
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: hfinkel, bollu, reames

Reviewed By: reames

Subscribers: reames, llvm-commits

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

llvm-svn: 325816
2018-02-22 18:55:59 +00:00
..
AggressiveInstCombine Another try to commit 323321 (aggressive instruction combine). 2018-01-25 12:06:32 +00:00
InstCombine Do a sweep over move ctors and remove those that are identical to the default. 2016-10-20 12:20:28 +00:00
Instrumentation [PM] Port BoundsChecking to the new PM. 2017-11-14 01:30:04 +00:00
IPO [ThinLTO] Convert dead alias to declarations 2018-02-05 15:44:27 +00:00
Scalar [AlignmentFromAssumptions] Set source and dest alignments of memory intrinsiscs separately 2018-02-22 18:55:59 +00:00
Utils Pass a module reference to CloneModule. 2018-02-14 19:50:40 +00:00
Vectorize [SLP] Take user instructions cost into consideration in insertelement vectorization. 2018-02-12 14:54:48 +00:00
Coroutines.h [coroutines] Part 3 of N: Adding Boilerplate for Coroutine Passes 2016-07-28 21:04:31 +00:00
GCOVProfiler.h Consistently use ModuleAnalysisManager 2016-08-09 00:28:38 +00:00
InstrProfiling.h [PGO] Implementate profile counter regiser promotion 2017-06-25 00:26:43 +00:00
Instrumentation.h [hwasan] Implement -fsanitize-recover=hwaddress. 2017-12-20 19:05:44 +00:00
IPO.h Add missing include to fix the failure caused by r323266 2018-01-23 22:55:28 +00:00
ObjCARC.h
PGOInstrumentation.h Irreducible loop metadata for more accurate block frequency under PGO. 2017-11-02 22:26:51 +00:00
SampleProfile.h [Transforms] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-10-27 01:09:08 +00:00
Scalar.h Another try to commit 323321 (aggressive instruction combine). 2018-01-25 12:06:32 +00:00
Vectorize.h Remove the BBVectorize pass. 2017-06-30 07:09:08 +00:00