Chandler Carruth
c908ca1766
Port the global copy optimization from the SROA pass to InstCombine.
...
This optimization is really just replacing allocas wholesale with
globals, there is no scalarization.
The underlying motivation for this patch is to simplify the SROA pass
and focus it on splitting and promoting allocas.
llvm-svn: 162271
2012-08-21 08:39:44 +00:00
Pete Cooper
0deca6be79
Fix crash when when do lto on Bullet. Dynamic GEPs in SROA were incorrectly being applied to all accesses to an alloca, not just the ones which read from the GEP. Thanks to Evan for reducing the test. rdar://11861001
...
llvm-svn: 161654
2012-08-10 03:26:36 +00:00
Nadav Rotem
465834c85f
Clean whitespaces.
...
llvm-svn: 160668
2012-07-24 10:51:42 +00:00
Chandler Carruth
aafe0918bc
Move llvm/Support/IRBuilder.h -> llvm/IRBuilder.h
...
This was always part of the VMCore library out of necessity -- it deals
entirely in the IR. The .cpp file in fact was already part of the VMCore
library. This is just a mechanical move.
I've tried to go through and re-apply the coding standard's preferred
header sort, but at 40-ish files, I may have gotten some wrong. Please
let me know if so.
I'll be committing the corresponding updates to Clang and Polly, and
Duncan has DragonEgg.
Thanks to Bill and Eric for giving the green light for this bit of cleanup.
llvm-svn: 159421
2012-06-29 12:38:19 +00:00
Bill Wendling
f799efdedc
The DIBuilder class is just a wrapper around debug info creation
...
(a.k.a. MDNodes). The module doesn't belong in Analysis. Move it to the VMCore
instead.
llvm-svn: 159414
2012-06-29 08:32:07 +00:00
Bill Wendling
e38859dc8e
Move lib/Analysis/DebugInfo.cpp to lib/VMCore/DebugInfo.cpp and
...
include/llvm/Analysis/DebugInfo.h to include/llvm/DebugInfo.h.
The reasoning is because the DebugInfo module is simply an interface to the
debug info MDNodes and has nothing to do with analysis.
llvm-svn: 159312
2012-06-28 00:05:13 +00:00
Nadav Rotem
4e9012c2b1
Add a number of threshold arguments to the SRA pass.
...
A patch by Tom Stellard with minor changes.
llvm-svn: 158918
2012-06-21 13:44:31 +00:00
Pete Cooper
33ee6c9bf1
Now that SROA can form alloca's for dynamic vector accesses, further improve it to be able to replace operations on these vector alloca's with insert/extract element insts
...
llvm-svn: 158623
2012-06-17 03:58:26 +00:00
Pete Cooper
818e9f4a26
Fix crash from r158529 on Bullet.
...
Dynamic GEPs created by SROA needed to insert extra "i32 0"
operands to index through structs and arrays to get to the
vector being indexed.
llvm-svn: 158590
2012-06-16 01:43:26 +00:00
Pete Cooper
e24d6a19e3
Allow SROA to split up an array of vectors into multiple vectors, even when the vectors are dynamically indexed
...
llvm-svn: 158529
2012-06-15 18:07:29 +00:00
Pete Cooper
1d1fa72837
Recommit r158407: Allow SROA to look at a vector type and see if the offset is out of range to be replaced with a scalar access. Now with additional fix and test for indexing into a vector inside a struct
...
llvm-svn: 158479
2012-06-14 23:53:53 +00:00
Pete Cooper
5d19452f3f
Revert r158454: Allow SROA to look at a vector type... Its breaking the vectorise buildbot
...
This reverts commit 12c1f86ffa731e2952c80d2cc577000c96b8962c.
llvm-svn: 158462
2012-06-14 18:32:52 +00:00
Pete Cooper
a7e6d58a87
Recommit r158407: Allow SROA to look at a vector type and see if the offset is out of range to be replaced with a scalar access. Now with additional fix and test for indexing into a vector inside a struct
...
llvm-svn: 158454
2012-06-14 16:38:13 +00:00
Pete Cooper
e2fe809772
Revert "Allow SROA to look at a vector type and see if the offset is out of range to be replaced with a scalar access"
...
This reverts commit 51786e0aaec76b973205066bd44f7f427b21969f.
llvm-svn: 158408
2012-06-13 17:55:22 +00:00
Pete Cooper
e1d4e8b563
Allow SROA to look at a vector type and see if the offset is out of range to be replaced with a scalar access
...
llvm-svn: 158407
2012-06-13 17:30:34 +00:00
Peter Collingbourne
97b1076435
Do not eliminate allocas whose alignment exceeds that of the
...
copied-in constant, as a subsequent user may rely on over alignment.
Fixes PR12885.
llvm-svn: 157134
2012-05-19 22:52:10 +00:00
Chad Rosier
cc899f3b6d
Typo.
...
llvm-svn: 154522
2012-04-11 19:21:58 +00:00
Duncan Sands
8f897dc88b
Indentation.
...
llvm-svn: 153322
2012-03-23 08:29:04 +00:00
Chris Lattner
7d7dba3c92
don't use "signed", just something I noticed in patches flying by.
...
llvm-svn: 153237
2012-03-22 03:46:58 +00:00
Aaron Ballman
a733297fa6
Fixed a transform crash when setting a negative size value for memset. Fixes PR12202.
...
llvm-svn: 152756
2012-03-15 00:05:31 +00:00
Benjamin Kramer
077e55252a
Reflow code, no functionality change.
...
llvm-svn: 151262
2012-02-23 17:42:19 +00:00
Chris Lattner
47a86bdbe2
use ConstantVector::getSplat in a few places.
...
llvm-svn: 148929
2012-01-25 06:02:56 +00:00
Rafael Espindola
2b14b80b60
Fix warning.
...
llvm-svn: 147284
2011-12-26 23:12:42 +00:00
Nadav Rotem
3924cb0267
Add support for vectors of pointers.
...
llvm-svn: 145801
2011-12-05 06:29:09 +00:00
Nick Lewycky
612d70b19d
Refactor code to use new attribute getters on CallSite for NoCapture and ByVal.
...
Suggested in code review by Eli.
That code in InstCombine looks kinda suspicious.
llvm-svn: 145013
2011-11-20 19:09:04 +00:00
Eli Friedman
ecb453805d
Make sure scalarrepl picks the correct alloca when it rewrites a bitcast. Fixes PR11353.
...
llvm-svn: 144442
2011-11-12 02:07:50 +00:00
Cameron Zwarich
057fbb1a10
The element insertion code in scalar replacement doesn't handle incorrect
...
element types, even though the element extraction code does. It is surprising
that this bug has been here for so long. Fixes <rdar://problem/10318778>.
llvm-svn: 142740
2011-10-23 07:02:10 +00:00
Cameron Zwarich
1a761dcfbd
Fix PR11106 by correcting a typo that has been in the code for over a year. This
...
would have never worked, since the element type of a vector type is never a
vector type. Also fix the conditional to be more direct in checking whether
EltTy is a vector type.
llvm-svn: 141713
2011-10-11 21:26:40 +00:00
Cameron Zwarich
d7515ccc47
Remove a lot of the fancy scalar replacement code for dealing with llvm-gcc's
...
lowering of NEON code. It provides little-to-no benefit now and only introduces
additional complexity.
llvm-svn: 141646
2011-10-11 06:10:30 +00:00
Benjamin Kramer
547b6c5ecd
Stop emitting instructions with the name "tmp" they eat up memory and have to be uniqued, without any benefit.
...
If someone prefers %tmp42 to %42, run instnamer.
llvm-svn: 140634
2011-09-27 20:39:19 +00:00
Eli Friedman
f9b785f185
PR10987: add a missed safety check to isSafePHIToSpeculate in scalarrepl.
...
llvm-svn: 140327
2011-09-22 18:56:30 +00:00
Eli Friedman
7c5dc122a0
Change a bunch of isVolatile() checks to check for atomic load/store as well.
...
No tests; these changes aren't really interesting in the sense that the logic is the same for volatile and atomic.
I believe this completes all of the changes necessary for the optimizer to handle loads and stores correctly. I'm going to try and come up with some additional testing, though.
llvm-svn: 139533
2011-09-12 20:23:13 +00:00
Nick Lewycky
15e2d90746
Finish adding support for lifetime intrinsics to SROA. Fixes PR10121!
...
llvm-svn: 136008
2011-07-25 23:14:22 +00:00
Jay Foad
d1b7849d49
Convert GetElementPtrInst to use ArrayRef.
...
llvm-svn: 135904
2011-07-25 09:48:08 +00:00
Dan Gohman
e106aee6f5
Fix MergeInVectorType to check for vector types with the same alloc
...
size but different element types, so that it filters out the cases
that CreateShuffleVectorCast doesn't handle. This fixes rdar://9786827.
llvm-svn: 135721
2011-07-21 23:30:09 +00:00
Jay Foad
bf904773bb
Convert TargetData::getIndexedOffset to use ArrayRef.
...
llvm-svn: 135478
2011-07-19 14:01:37 +00:00
Chris Lattner
229907cd11
land David Blaikie's patch to de-constify Type, with a few tweaks.
...
llvm-svn: 135375
2011-07-18 04:54:35 +00:00
Devang Patel
41e97da74f
Use DBG_VALUE location while inserting DBG_VALUE during alloca promotion.
...
llvm-svn: 134568
2011-07-07 00:05:58 +00:00
Devang Patel
c6ee9181d0
Handle cases where multiple dbg.declare and dbg.value intrinsics are tied to one alloca.
...
llvm-svn: 134549
2011-07-06 22:06:11 +00:00
Devang Patel
a3cbf52a57
Simplify. Consolidate dbg.declare handling in AllocaPromoter.
...
llvm-svn: 134538
2011-07-06 21:09:55 +00:00
Nick Lewycky
f64a39768d
Fix likely typo, reduce number of instruction name collisions.
...
llvm-svn: 134235
2011-07-01 06:27:03 +00:00
Nick Lewycky
a61df3f843
Teach one piece of scalarrepl to handle lifetime markers. When transforming an
...
alloca that only holds a copy of a global and we're going to replace the users
of the alloca with that global, just nuke the lifetime intrinsics. Part of
PR10121.
llvm-svn: 133905
2011-06-27 05:40:02 +00:00
Cameron Zwarich
9601ddb2f3
When scalar replacement returns a vector type, only accept it if the vector
...
type's bitwidth matches the (allocated) size of the alloca. This severely
pessimizes vector scalar replacement when the only vector type being used is
something like <3 x float> on x86 or ARM whose allocated size matches a
<4 x float>.
I hope to fix some of the flawed assumptions about allocated size throughout
scalar replacement and reenable this in most cases.
llvm-svn: 133338
2011-06-18 06:17:51 +00:00
Cameron Zwarich
2a26100c87
Fix an invalid bitcast crash that occurs when doing a partial memset of a vector
...
alloca. Fixes part of <rdar://problem/9580800>.
llvm-svn: 133336
2011-06-18 05:47:49 +00:00
Cameron Zwarich
cd42038fdc
Remove a pointless assignment. Nothing checks the value of VectorTy anymore now
...
unless ScalarKind is Vector.
llvm-svn: 133335
2011-06-18 05:47:45 +00:00
Cameron Zwarich
b5f19d9f6f
Be more obvious about what is being tested.
...
llvm-svn: 132982
2011-06-14 06:33:51 +00:00
Cameron Zwarich
922e4940bd
Fix grammar.
...
llvm-svn: 132952
2011-06-13 23:39:23 +00:00
Cameron Zwarich
3ecbd59c27
Rename MergeInType to MergeInTypeForLoadOrStore.
...
llvm-svn: 132940
2011-06-13 21:44:43 +00:00
Cameron Zwarich
8cb90ac456
Remove the HadAVector instance variable and replace it with a use of ScalarKind.
...
llvm-svn: 132939
2011-06-13 21:44:40 +00:00
Cameron Zwarich
1bfab48edb
Remove a vacuous check.
...
llvm-svn: 132938
2011-06-13 21:44:38 +00:00