2c3e0051c31c3f5b2328b447eadf1cf9c4427442 |
|
06-May-2015 |
Pirama Arumuga Nainar <pirama@google.com> |
Update aosp/master LLVM for rebase to r235153 Change-Id: I9bf53792f9fc30570e81a8d80d296c681d005ea7 (cherry picked from commit 0c7f116bb6950ef819323d855415b2f2b0aad987)
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
4c5e43da7792f75567b693105cc53e3f1992ad98 |
|
08-Apr-2015 |
Pirama Arumuga Nainar <pirama@google.com> |
Update aosp/master llvm for rebase to r233350 Change-Id: I07d935f8793ee8ec6b7da003f6483046594bca49
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
ebe69fe11e48d322045d5949c83283927a0d790b |
|
23-Mar-2015 |
Stephen Hines <srhines@google.com> |
Update aosp/master LLVM for rebase to r230699. Change-Id: I2b5be30509658cb8266be782de0ab24f9099f9b9
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
37ed9c199ca639565f6ce88105f9e39e898d82d0 |
|
01-Dec-2014 |
Stephen Hines <srhines@google.com> |
Update aosp/master LLVM for rebase to r222494. Change-Id: Ic787f5e0124df789bd26f3f24680f45e678eef2d
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
c6a4f5e819217e1e12c458aed8e7b122e23a3a58 |
|
21-Jul-2014 |
Stephen Hines <srhines@google.com> |
Update LLVM for rebase to r212749. Includes a cherry-pick of: r212948 - fixes a small issue with atomic calls Change-Id: Ib97bd980b59f18142a69506400911a6009d9df18
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
dce4a407a24b04eebc6a376f8e62b41aaa7b071f |
|
29-May-2014 |
Stephen Hines <srhines@google.com> |
Update LLVM for 3.5 rebase (r209712). Change-Id: I149556c940fb7dc92d075273c87ff584f400941f
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
36b56886974eae4f9c5ebc96befd3e7bfe5de338 |
|
24-Apr-2014 |
Stephen Hines <srhines@google.com> |
Update to LLVM 3.5a. Change-Id: Ifadecab779f128e62e430c2b4f6ddd84953ed617
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
9effcbb879728f8a1e0e86c9cb777f11a9a3be7d |
|
30-Oct-2013 |
Matt Arsenault <Matthew.Arsenault@amd.com> |
Teach scalarrepl about address spaces git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193720 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
6c1fa7caaefc88a5a867add402d90115823bd0eb |
|
14-Aug-2013 |
Nick Lewycky <nicholas@mxc.ca> |
Revert r187191, which broke opt -mem2reg on the testcases included in PR16867. However, opt -O2 doesn't run mem2reg directly so nobody noticed until r188146 when SROA started sending more things directly down the PromoteMemToReg path. In order to revert r187191, I also revert dependent revisions r187296, r187322 and r188146. Fixes PR16867. Does not add the testcases from that PR, but both of them should get added for both mem2reg and sroa when this revert gets unreverted. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188327 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
6c3a95dab561ef9747876d14014e965f8688f55b |
|
28-Jul-2013 |
Chandler Carruth <chandlerc@gmail.com> |
Thread DataLayout through the callers and into mem2reg. This will be useful in a subsequent patch, but causes an unfortunate amount of noise, so I pulled it out into a separate patch. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187322 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
a0ec3f9b7b826b9b40b80199923b664bad808cce |
|
14-Jul-2013 |
Craig Topper <craig.topper@gmail.com> |
Use SmallVectorImpl& instead of SmallVector to avoid repeating small vector size. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186274 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
365ef0b197d7c841f8e501da64296df65be4ca23 |
|
03-Jul-2013 |
Craig Topper <craig.topper@gmail.com> |
Use SmallVectorImpl::iterator/const_iterator instead of SmallVector to avoid specifying the vector size. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185540 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
77327fd652e184c413744eabec8d9fdd605d09c1 |
|
18-Apr-2013 |
Chris Lattner <sabre@nondot.org> |
Fix a comment, PR15777. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179775 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
2da70d1792abf0ad837578991f492a3dd0364118 |
|
05-Apr-2013 |
Shuxin Yang <shuxin.llvm@gmail.com> |
Disable the optimization about promoting vector-element-access with symbolic index. This optimization is unstable at this moment; it 1) block us on a very important application 2) PR15200 3) test6 and test7 in test/Transforms/ScalarRepl/dynamic-vector-gep.ll (the CHECK command compare the output against wrong result) I personally believe this optimization should not have any impact on the autovectorized code, as auto-vectorizer is supposed to put gather/scatter in a "right" way. Although in theory downstream optimizaters might reveal some gather/scatter optimization opportunities, the chance is quite slim. For the hand-crafted vectorizing code, in term of redundancy elimination, load-CSE, copy-propagation and DSE can collectively achieve the same result, but in much simpler way. On the other hand, these optimizers are able to improve the code in a incremental way; in contrast, SROA is sort of all-or-none approach. However, SROA might slighly win in stack size, as it tries to figure out a stretch of memory tightenly cover the area accessed by the dynamic index. rdar://13174884 PR15200 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178912 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
0b8c9a80f20772c3793201ab5b251d3520b9cea3 |
|
02-Jan-2013 |
Chandler Carruth <chandlerc@gmail.com> |
Move all of the header files which are involved in modelling the LLVM IR into their new header subdirectory: include/llvm/IR. This matches the directory structure of lib, and begins to correct a long standing point of file layout clutter in LLVM. There are still more header files to move here, but I wanted to handle them in separate commits to make tracking what files make sense at each layer easier. The only really questionable files here are the target intrinsic tablegen files. But that's a battle I'd rather not fight today. I've updated both CMake and Makefile build systems (I think, and my tests think, but I may have missed something). I've also re-sorted the includes throughout the project. I'll be committing updates to Clang, DragonEgg, and Polly momentarily. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171366 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
d04a8d4b33ff316ca4cf961e06c9e312eff8e64f |
|
03-Dec-2012 |
Chandler Carruth <chandlerc@gmail.com> |
Use the new script to sort the includes of every file under lib. Sooooo many of these had incorrect or strange main module includes. I have manually inspected all of these, and fixed the main module include to be the nearest plausible thing I could find. If you own or care about any of these source files, I encourage you to take some time and check that these edits were sensible. I can't have broken anything (I strictly added headers, and reordered them, never removed), but they may not be the headers you'd really like to identify as containing the API being implemented. Many forward declarations and missing includes were added to a header files to allow them to parse cleanly when included first. The main module rule does in fact have its merits. =] git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169131 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
ece6c6bb6329748b92403c06ac87f45c43485911 |
|
01-Nov-2012 |
Chandler Carruth <chandlerc@gmail.com> |
Revert the series of commits starting with r166578 which introduced the getIntPtrType support for multiple address spaces via a pointer type, and also introduced a crasher bug in the constant folder reported in PR14233. These commits also contained several problems that should really be addressed before they are re-committed. I have avoided reverting various cleanups to the DataLayout APIs that are reasonable to have moving forward in order to reduce the amount of churn, and minimize the number of commits that were reverted. I've also manually updated merge conflicts and manually arranged for the getIntPtrType function to stay in DataLayout and to be defined in a plausible way after this revert. Thanks to Duncan for working through this exact strategy with me, and Nick Lewycky for tracking down the really annoying crasher this triggered. (Test case to follow in its own commit.) After discussing with Duncan extensively, and based on a note from Micah, I'm going to continue to back out some more of the more problematic patches in this series in order to ensure we go into the LLVM 3.2 branch with a reasonable story here. I'll send a note to llvmdev explaining what's going on and why. Summary of reverted revisions: r166634: Fix a compiler warning with an unused variable. r166607: Add some cleanup to the DataLayout changes requested by Chandler. r166596: Revert "Back out r166591, not sure why this made it through since I cancelled the command. Bleh, sorry about this! r166591: Delete a directory that wasn't supposed to be checked in yet. r166578: Add in support for getIntPtrType to get the pointer type based on the address space. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167221 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
aa76e9e2cf50af190de90bc778b7f7e42ef9ceff |
|
24-Oct-2012 |
Micah Villmow <villmow@gmail.com> |
Add in support for getIntPtrType to get the pointer type based on the address space. This checkin also adds in some tests that utilize these paths and updates some of the clients. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166578 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
3574eca1b02600bac4e625297f4ecf745f4c4f32 |
|
08-Oct-2012 |
Micah Villmow <villmow@gmail.com> |
Move TargetData to DataLayout. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165402 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
ec68f552f2a5c1df10813a80929995185eb98243 |
|
21-Aug-2012 |
Chandler Carruth <chandlerc@gmail.com> |
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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162271 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
3eeba88631db6da7d45df67f677556297bd93f75 |
|
10-Aug-2012 |
Pete Cooper <peter_cooper@apple.com> |
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 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161654 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
a94d6e87c4c49f2e81b01d66d8bfb591277f8f96 |
|
24-Jul-2012 |
Nadav Rotem <nadav.rotem@intel.com> |
Clean whitespaces. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160668 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
06cb8ed00696eb14d1b831921452e50ec0568ea2 |
|
29-Jun-2012 |
Chandler Carruth <chandlerc@gmail.com> |
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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159421 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
16eeb6f5ebc978b03745177b9ac82684ab1c6932 |
|
29-Jun-2012 |
Bill Wendling <isanbard@gmail.com> |
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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159414 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
0bcbd1df7a204e1e512f1a27066d725309de1b13 |
|
28-Jun-2012 |
Bill Wendling <isanbard@gmail.com> |
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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159312 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
2114a8aaba99e901735e69818bb789757ed05cfd |
|
21-Jun-2012 |
Nadav Rotem <nadav.rotem@intel.com> |
Add a number of threshold arguments to the SRA pass. A patch by Tom Stellard with minor changes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158918 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
80f020a34ac60c7552c8e9b9c1f4b84c63941b57 |
|
17-Jun-2012 |
Pete Cooper <peter_cooper@apple.com> |
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 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158623 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
06e6c385cbf550ab73ad70bd3e02d9ad2fd3089c |
|
16-Jun-2012 |
Pete Cooper <peter_cooper@apple.com> |
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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158590 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
cbf73908f1d4cc1cb7104bfd451af30c177cb7a5 |
|
15-Jun-2012 |
Pete Cooper <peter_cooper@apple.com> |
Allow SROA to split up an array of vectors into multiple vectors, even when the vectors are dynamically indexed git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158529 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
6399b7c51076846942a0c05b4823ca9a8f55b5fc |
|
15-Jun-2012 |
Pete Cooper <peter_cooper@apple.com> |
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 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158479 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
9e066625b77dc211b2fa97523d1c0d06abb6312b |
|
14-Jun-2012 |
Pete Cooper <peter_cooper@apple.com> |
Revert r158454: Allow SROA to look at a vector type... Its breaking the vectorise buildbot This reverts commit 12c1f86ffa731e2952c80d2cc577000c96b8962c. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158462 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
77fdd3ad4afb2a8cd99a1dc7f24faa0e900a1aaf |
|
14-Jun-2012 |
Pete Cooper <peter_cooper@apple.com> |
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 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158454 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
e91f926f3b76774aa7ed4c327fbde6a39e42c87f |
|
13-Jun-2012 |
Pete Cooper <peter_cooper@apple.com> |
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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158408 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
51786e0aaec76b973205066bd44f7f427b21969f |
|
13-Jun-2012 |
Pete Cooper <peter_cooper@apple.com> |
Allow SROA to look at a vector type and see if the offset is out of range to be replaced with a scalar access git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158407 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
9012c57e18d76d562b1f3e60bf19cccefa7b793e |
|
20-May-2012 |
Peter Collingbourne <peter@pcc.me.uk> |
Do not eliminate allocas whose alignment exceeds that of the copied-in constant, as a subsequent user may rely on over alignment. Fixes PR12885. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157134 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
c9f27ee842b633662f381b6e2cbd6de96b5bf905 |
|
11-Apr-2012 |
Chad Rosier <mcrosier@apple.com> |
Typo. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154522 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
01b305f94c663d000e2128c7ea8c0c4e02e9eeb4 |
|
23-Mar-2012 |
Duncan Sands <baldrick@free.fr> |
Indentation. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153322 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
1fe6bfca593404e261922990f230326934dda4d6 |
|
22-Mar-2012 |
Chris Lattner <sabre@nondot.org> |
don't use "signed", just something I noticed in patches flying by. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153237 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
7e2fa3142aca46d9435a5804932ef76123c0cf71 |
|
15-Mar-2012 |
Aaron Ballman <aaron@aaronballman.com> |
Fixed a transform crash when setting a negative size value for memset. Fixes PR12202. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152756 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
6a1c7796d3966851456b835d69909e3df7f5e966 |
|
23-Feb-2012 |
Benjamin Kramer <benny.kra@googlemail.com> |
Reflow code, no functionality change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151262 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
4ca829e89567f002fc74eb0e3e532a7c7662e031 |
|
25-Jan-2012 |
Chris Lattner <sabre@nondot.org> |
use ConstantVector::getSplat in a few places. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148929 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
125ef76934f37e3fdc8ce4a2cc238850d06c5912 |
|
27-Dec-2011 |
Rafael Espindola <rafael.espindola@gmail.com> |
Fix warning. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147284 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
1608769abeb1430dc34f31ffac0d9850f99ae36a |
|
05-Dec-2011 |
Nadav Rotem <nadav.rotem@intel.com> |
Add support for vectors of pointers. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145801 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
173862e5468fbcf4b022b9088d2c81b25c2d60c5 |
|
20-Nov-2011 |
Nick Lewycky <nicholas@mxc.ca> |
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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145013 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
75f69e3a3dff78cb89ded1d6c96ccb65603a82d9 |
|
12-Nov-2011 |
Eli Friedman <eli.friedman@gmail.com> |
Make sure scalarrepl picks the correct alloca when it rewrites a bitcast. Fixes PR11353. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144442 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
90747e34e6ca7162eaf8dde032649071045f161d |
|
23-Oct-2011 |
Cameron Zwarich <zwarich@apple.com> |
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>. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142740 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
c055a8782ee66f6041cc00997857d98d6b9e9b4a |
|
11-Oct-2011 |
Cameron Zwarich <zwarich@apple.com> |
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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141713 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
446d95224b35b0fef06200b950d45839f1d5f262 |
|
11-Oct-2011 |
Cameron Zwarich <zwarich@apple.com> |
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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141646 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
a9390a4d5f5d568059a80970d22194b165d097a7 |
|
27-Sep-2011 |
Benjamin Kramer <benny.kra@googlemail.com> |
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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140634 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
d102a03b36fb522899cefc31a396c9793b929cf6 |
|
22-Sep-2011 |
Eli Friedman <eli.friedman@gmail.com> |
PR10987: add a missed safety check to isSafePHIToSpeculate in scalarrepl. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140327 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
2bc3d52b9ab422ee9f7e42a1a4e3b818e623a5f7 |
|
12-Sep-2011 |
Eli Friedman <eli.friedman@gmail.com> |
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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139533 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
5a1cb644c903da49dc612a0ba5044505d066259e |
|
26-Jul-2011 |
Nick Lewycky <nicholas@mxc.ca> |
Finish adding support for lifetime intrinsics to SROA. Fixes PR10121! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136008 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
a9203109f4ac95aa7e9624f2838e3d89623ec902 |
|
25-Jul-2011 |
Jay Foad <jay.foad@gmail.com> |
Convert GetElementPtrInst to use ArrayRef. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135904 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
856e13ddace4174ad1b07f65ebb18b2fd835ed57 |
|
22-Jul-2011 |
Dan Gohman <gohman@apple.com> |
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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135721 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
8fbbb3980755d74539a0aed02bc18842ed2bd18d |
|
19-Jul-2011 |
Jay Foad <jay.foad@gmail.com> |
Convert TargetData::getIndexedOffset to use ArrayRef. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135478 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
db125cfaf57cc83e7dd7453de2d509bc8efd0e5e |
|
18-Jul-2011 |
Chris Lattner <sabre@nondot.org> |
land David Blaikie's patch to de-constify Type, with a few tweaks. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135375 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
a4acb008cb2a9953d9cb4c90ecf6424bd32ebc0c |
|
07-Jul-2011 |
Devang Patel <dpatel@apple.com> |
Use DBG_VALUE location while inserting DBG_VALUE during alloca promotion. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134568 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
4fd3c5957e6a272b60d6446e745136187d07f812 |
|
07-Jul-2011 |
Devang Patel <dpatel@apple.com> |
Handle cases where multiple dbg.declare and dbg.value intrinsics are tied to one alloca. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134549 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
231a5ab746ca12000aa57208869a98f78781aa6b |
|
06-Jul-2011 |
Devang Patel <dpatel@apple.com> |
Simplify. Consolidate dbg.declare handling in AllocaPromoter. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134538 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
394d1f1948c1b5c9e902059104b08a4837dfbbee |
|
01-Jul-2011 |
Nick Lewycky <nicholas@mxc.ca> |
Fix likely typo, reduce number of instruction name collisions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134235 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
9174d5c7383490d79b6a483d73cded54e32275d6 |
|
27-Jun-2011 |
Nick Lewycky <nicholas@mxc.ca> |
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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133905 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
3ebb05d9a6bf6604a4b25770cfda1872983b03b2 |
|
18-Jun-2011 |
Cameron Zwarich <zwarich@apple.com> |
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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133338 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
6be41eb7f00319f5ffa1a5435dcd1e81b3ce932d |
|
18-Jun-2011 |
Cameron Zwarich <zwarich@apple.com> |
Fix an invalid bitcast crash that occurs when doing a partial memset of a vector alloca. Fixes part of <rdar://problem/9580800>. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133336 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
aab3ea244cb014beb21c112729034879a5d4e5ee |
|
18-Jun-2011 |
Cameron Zwarich <zwarich@apple.com> |
Remove a pointless assignment. Nothing checks the value of VectorTy anymore now unless ScalarKind is Vector. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133335 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
5b93d3ca6f9c6e81924063abb1487598906dcdab |
|
14-Jun-2011 |
Cameron Zwarich <zwarich@apple.com> |
Be more obvious about what is being tested. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132982 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
15cd80c16b4e63b99dcbe45d2baa9456d414aaca |
|
14-Jun-2011 |
Cameron Zwarich <zwarich@apple.com> |
Fix grammar. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132952 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
c0e2607564c1259f2d2c56cbff8f78dc0853860d |
|
13-Jun-2011 |
Cameron Zwarich <zwarich@apple.com> |
Rename MergeInType to MergeInTypeForLoadOrStore. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132940 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
5179782cf03cfabfe89df71677e0ffc772b5fdd5 |
|
13-Jun-2011 |
Cameron Zwarich <zwarich@apple.com> |
Remove the HadAVector instance variable and replace it with a use of ScalarKind. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132939 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
9837a5c95981c239b34c1d0dfb51d4096409cbe1 |
|
13-Jun-2011 |
Cameron Zwarich <zwarich@apple.com> |
Remove a vacuous check. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132938 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
deb74f21f205aa245568ea965132eb076a3bf88c |
|
13-Jun-2011 |
Cameron Zwarich <zwarich@apple.com> |
Have SRoA explicitly track the kind of scalar it is promoting. This is pretty spartan right now, but I plan to encode more information in this enum to improve the correctness and reliability of SRoA. At least this first pass makes it possible to make VectorTy an actual VectorType. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132937 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
dd68912801861273dc3dca33cfc18357213049a4 |
|
13-Jun-2011 |
Cameron Zwarich <zwarich@apple.com> |
Remove an argument that is always true. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132936 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
c4f78208b399111cc4f5d97ed1875566819f34b4 |
|
09-Jun-2011 |
Cameron Zwarich <zwarich@apple.com> |
Remove a vacuous condition. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132767 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
96cc1d0dfbcf9c7ffffc65f0aa008ff532d444f4 |
|
09-Jun-2011 |
Cameron Zwarich <zwarich@apple.com> |
Fix PR10104 by adding a bounds check on a vector element access check. It was assuming that all offsets are legal vector accesses, and thus trying to access the float member of { <2 x float>, float } as the 3rd element of the first member. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132766 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
0398d6135daef709f80837e457a75dc2e1c2aab7 |
|
09-Jun-2011 |
Cameron Zwarich <zwarich@apple.com> |
Fix an assymmetry between ConvertScalar_ExtractValue and ConvertScalar_InsertValue. The former was using the size of the entire alloca, whereas the latter was correctly using the allocated size of the immediate type being converted (which may differ from the size of the alloca). This fixes PR10082. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132759 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
abb25122050349ccf77f8afb198a985e7a4d95ee |
|
03-Jun-2011 |
Devang Patel <dpatel@apple.com> |
Use IRBuilder, preserve line numbers. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132578 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
13a16083abcdacf2ee44ae95b084f87937ea9ace |
|
24-May-2011 |
Cameron Zwarich <zwarich@apple.com> |
Clean up the lazy initialization of DIBuilder a bit. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131956 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
c827939046670a9800659b83e2048f1d3a79a531 |
|
24-May-2011 |
Cameron Zwarich <zwarich@apple.com> |
Make LoadAndStorePromoter preserve debug info and create llvm.dbg.values when promoting allocas to SSA variables. Fixes <rdar://problem/9479036>. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131953 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
5389210e638401b8982b6de7c4e4a16999007035 |
|
06-May-2011 |
Duncan Sands <baldrick@free.fr> |
Fix PR9820: a read-only call differs from a load in that a load doesn't return the pointer being dereferenced, it returns the pointee, but a call might return the pointer itself. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130979 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
344731c01805aeda49c747bac6148501fa85557c |
|
20-Apr-2011 |
Cameron Zwarich <zwarich@apple.com> |
Fix another case of <rdar://problem/9184212> that only occurs with code generated by llvm-gcc, since llvm-gcc uses 2 i64s for passing a 4 x float vector on ARM rather than an i64 array like Clang. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129878 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
c5c43b958cf2f251c836f94d4499adb6296f0611 |
|
20-Apr-2011 |
Cameron Zwarich <zwarich@apple.com> |
The bitcast case here is actually handled uniformly earlier in the function, so delete it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129877 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
5fc1282c1822d692ed1681cdc4c315950c6eb1d8 |
|
20-Apr-2011 |
Cameron Zwarich <zwarich@apple.com> |
Cleanup some code to better use an early return style in preparation for adding more cases. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129876 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
481823aa819ea1dd25567ae616dca93056ef770a |
|
14-Apr-2011 |
Mon P Wang <wangmp@apple.com> |
Cleanup r129509 based on comments by Chris git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129532 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
ddf9abf2b6ee3a1104057df20ec3be61b410441e |
|
14-Apr-2011 |
Mon P Wang <wangmp@apple.com> |
Cleanup r129472 by using a utility routine as suggested by Eli. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129509 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
be0761c8202405cdd33f1103d262c0aa97895a8e |
|
13-Apr-2011 |
Mon P Wang <wangmp@apple.com> |
Vectors with different number of elements of the same element type can have the same allocation size but different primitive sizes(e.g., <3xi32> and <4xi32>). When ScalarRepl promotes them, it can't use a bit cast but should use a shuffle vector instead. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129472 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
3ecfc861b4365f341c5c969b40e1afccde676e6f |
|
30-Mar-2011 |
Jay Foad <jay.foad@gmail.com> |
Remove PHINode::reserveOperandSpace(). Instead, add a parameter to PHINode::Create() giving the (known or expected) number of operands. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128537 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
d8b4fb4aab4d6fedb2b14bed1b846451b17bde7c |
|
30-Mar-2011 |
Jay Foad <jay.foad@gmail.com> |
(Almost) always call reserveOperandSpace() on newly created PHINodes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128535 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
9827b78b51f285e90c2b1e5add9b28d10c88595c |
|
29-Mar-2011 |
Cameron Zwarich <zwarich@apple.com> |
Do some simple copy propagation through integer loads and stores when promoting vector types. This helps a lot with inlined functions when using the ARM soft float ABI. Fixes <rdar://problem/9184212>. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128453 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
c77a10fe0a40861bcb4bd2a0c170c948a57be688 |
|
26-Mar-2011 |
Cameron Zwarich <zwarich@apple.com> |
Fix a typo and add a test. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128331 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
1537ce75ed25bbca58096383bb1fb9dd427bf1aa |
|
23-Mar-2011 |
Cameron Zwarich <zwarich@apple.com> |
Fix PR9464 by correcting some math that just happened to be right in most cases that were hit in practice. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128146 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
1bcdb6ffad79936a96b46080bf0fed867243b32a |
|
16-Mar-2011 |
Cameron Zwarich <zwarich@apple.com> |
Fix a comment. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127728 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
85b0f468cf8390fca3ec356cd498ce0039dbad4f |
|
16-Mar-2011 |
Cameron Zwarich <zwarich@apple.com> |
Only convert allocas to scalars if it is profitable. The profitability metric I chose is having a non-memcpy/memset use and being larger than any native integer type. Originally I chose having an access of a size smaller than the total size of the alloca, but this caused some minor issues on the spirit benchmark where SRoA runs again after some inlining. This fixes <rdar://problem/8613163>. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127718 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
deac268f893d5dadea845466fa0e5a11647c6113 |
|
16-Mar-2011 |
Cameron Zwarich <zwarich@apple.com> |
Better use initializer lists. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127716 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
d4c9c3e6b97e095c24d989c0f5ce763f90100ef1 |
|
16-Mar-2011 |
Cameron Zwarich <zwarich@apple.com> |
Add a clarifying comment. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127715 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
032c10fee2a4bb731488ce75844878009d3bd409 |
|
09-Mar-2011 |
Cameron Zwarich <zwarich@apple.com> |
Fix a crasher introduced by r127317 that is seen on the bots when using an alloca as both integer and floating-point vectors of the same size. Bugpoint is not cooperating with me, but I'll try to find a manual testcase tomorrow. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127320 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
b2fd770136b92637c5f084b743eab29f910288d5 |
|
09-Mar-2011 |
Cameron Zwarich <zwarich@apple.com> |
Add support to scalar replacement for partial vector accesses of an alloca, e.g. a union of a float, <2 x float>, and <4 x float>. This mostly comes up with the use of vector intrinsics, especially in NEON when programmers know the layout of the register file. This enables codegen to eliminate a lot of the subregister traffic it would otherwise generate. This commit only enables this for a small number of floating-point cases, but a lot more integer cases. I assume this is okay for all ports, but I did not do extensive testing of the quality of code involving i512 vectors and the like. If there is a use case where this generates worse code than before, let me know and we can scale it back. This fixes <rdar://problem/9036264>. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127317 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
c9ecd14cee020f884313b60f8696384d3e7848f7 |
|
09-Mar-2011 |
Cameron Zwarich <zwarich@apple.com> |
Move vector type merging to a separate function in preparation for it getting more complicated. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127316 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
2ca5c8644e6c35b3a7910a576ed89cddb7b82c3b |
|
15-Feb-2011 |
Chris Lattner <sabre@nondot.org> |
convert ConstantVector::get to use ArrayRef. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125537 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
75831904220042260c4faece8507a2807acba47f |
|
14-Feb-2011 |
Chris Lattner <sabre@nondot.org> |
revert my ConstantVector patch, it seems to have made the llvm-gcc builders unhappy. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125504 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
283c8caccd093f8e1d4f0bdd01ac240b4edbd20a |
|
14-Feb-2011 |
Chris Lattner <sabre@nondot.org> |
Switch ConstantVector::get to use ArrayRef instead of a pointer+size idiom. Change various clients to simplify their code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125487 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
bd1801b5553c8be3960255a92738464e0010b6f6 |
|
24-Jan-2011 |
Dan Gohman <gohman@apple.com> |
Give GetUnderlyingObject a TargetData, to keep it in sync with BasicAA's DecomposeGEPExpression, which recently began using a TargetData. This fixes PR8968, though the testcase is awkward to reduce. Also, update several off GetUnderlyingObject's users which happen to have a TargetData handy to pass it in. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124134 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
e3357863aaabe297c5fa819d083f2308ebb5f2c2 |
|
24-Jan-2011 |
Chris Lattner <sabre@nondot.org> |
enhance SRoA to promote allocas that are used by PHI nodes. This often occurs because instcombine sinks loads and inserts phis. This kicks in on such apps as 175.vpr, eon, 403.gcc, xalancbmk and a bunch of times in spec2006 in some app that uses std::deque. This resolves the last of rdar://7339113. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124090 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
c87c50a39c1bc27437352feee0f6aba2d50fa1b5 |
|
23-Jan-2011 |
Chris Lattner <sabre@nondot.org> |
Enhance SRoA to promote allocas that are used by selects in some common cases. This triggers a surprising number of times in SPEC2K6 because min/max idioms end up doing this. For example, code from the STL ends up looking like this to SRoA: %202 = load i64* %__old_size, align 8, !tbaa !3 %203 = load i64* %__old_size, align 8, !tbaa !3 %204 = load i64* %__n, align 8, !tbaa !3 %205 = icmp ult i64 %203, %204 %storemerge.i = select i1 %205, i64* %__n, i64* %__old_size %206 = load i64* %storemerge.i, align 8, !tbaa !3 We can now promote both the __n and the __old_size allocas. This addresses another chunk of rdar://7339113, poor codegen on stringswitch. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124088 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
145c532e68acdf70d40bab5bc2034f692848b8dc |
|
23-Jan-2011 |
Chris Lattner <sabre@nondot.org> |
Enhance SRoA to be more aggressive about scalarization of aggregate allocas that have PHI or select uses of their element pointers. This can often happen when instcombine sinks two loads into a successor, inserting a phi or select. With this patch, we can scalarize the alloca, but the pinned elements are not yet promoted. This is still a win for large aggregates where only one element is used. This fixes rdar://8904039 and part of rdar://7339113 (poor codegen on stringswitch). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124070 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
6c95d24927b11fb76bc3e76ebe6a8198d74fc178 |
|
23-Jan-2011 |
Chris Lattner <sabre@nondot.org> |
have AllocaInfo store the alloca being inspected, simplifying callers. No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124067 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
d01a0da090407762fe3b770d84f049d72d06467e |
|
23-Jan-2011 |
Chris Lattner <sabre@nondot.org> |
Rearrange some code a bit. Change MarkUnsafe to handle the "Transformation preventing inst" printing, so that -scalarrepl -debug will always print the rejected instruction. No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124066 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
85a7c690852d6151acff0d8821762d75bc774ab4 |
|
23-Jan-2011 |
Chris Lattner <sabre@nondot.org> |
remove an old hack that avoided creating MMX datatypes. The X86 backend has been fixed. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124064 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
b1686c32fc694636cbf15a59b23b2a741b65ecf4 |
|
18-Jan-2011 |
Cameron Zwarich <zwarich@apple.com> |
Remove outdated references to dominance frontiers. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123724 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
419e8a62997987e0509efe721c1ea81ac29f09f3 |
|
17-Jan-2011 |
Cameron Zwarich <zwarich@apple.com> |
Roll r123609 back in with two changes that fix test failures with expensive checks enabled: 1) Use '<' to compare integers in a comparison function rather than '<='. 2) Use the uniqued set DefBlocks rather than Info.DefiningBlocks to initialize the priority queue. The speedup of scalarrepl on test-suite + SPEC2000 + SPEC2006 is a bit less, at just under 16% rather than 17%. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123662 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
b1086a9c6d6d5ee3070a68076f38eec841cefd58 |
|
17-Jan-2011 |
Cameron Zwarich <zwarich@apple.com> |
Roll out r123609 due to failures on the llvm-x86_64-linux-checks bot. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123618 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
ebed6de7b10d20721f5bd30ed3730cadefed7963 |
|
17-Jan-2011 |
Cameron Zwarich <zwarich@apple.com> |
Eliminate the use of dominance frontiers in PromoteMemToReg. In addition to eliminating a potentially quadratic data structure, this also gives a 17% speedup when running -scalarrepl on test-suite + SPEC2000 + SPEC2006. My initial experiment gave a greater speedup around 25%, but I moved the dominator tree level computation from dominator tree construction to PromoteMemToReg. Since this approach to computing IDFs has a much lower overhead than the old code using precomputed DFs, it is worth looking at using this new code for the second scalarrepl pass as well. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123609 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
396a0567cf959d86a8a1ad185e54d84f5dacbacf |
|
16-Jan-2011 |
Chris Lattner <sabre@nondot.org> |
tidy up a comment, as suggested by duncan git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123590 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
7e9b427c879ae32b72fd24aeaf011e87e5692fd7 |
|
16-Jan-2011 |
Chris Lattner <sabre@nondot.org> |
if an alloca is only ever accessed as a unit, and is accessed with load/store instructions, then don't try to decimate it into its individual pieces. This will just make a mess of the IR and is pointless if none of the elements are individually accessed. This was generating really terrible code for std::bitset (PR8980) because it happens to be lowered by clang as an {[8 x i8]} structure instead of {i64}. The testcase now is optimized to: define i64 @test2(i64 %X) { br label %L2 L2: ; preds = %0 ret i64 %X } before we generated: define i64 @test2(i64 %X) { %sroa.store.elt = lshr i64 %X, 56 %1 = trunc i64 %sroa.store.elt to i8 %sroa.store.elt8 = lshr i64 %X, 48 %2 = trunc i64 %sroa.store.elt8 to i8 %sroa.store.elt9 = lshr i64 %X, 40 %3 = trunc i64 %sroa.store.elt9 to i8 %sroa.store.elt10 = lshr i64 %X, 32 %4 = trunc i64 %sroa.store.elt10 to i8 %sroa.store.elt11 = lshr i64 %X, 24 %5 = trunc i64 %sroa.store.elt11 to i8 %sroa.store.elt12 = lshr i64 %X, 16 %6 = trunc i64 %sroa.store.elt12 to i8 %sroa.store.elt13 = lshr i64 %X, 8 %7 = trunc i64 %sroa.store.elt13 to i8 %8 = trunc i64 %X to i8 br label %L2 L2: ; preds = %0 %9 = zext i8 %1 to i64 %10 = shl i64 %9, 56 %11 = zext i8 %2 to i64 %12 = shl i64 %11, 48 %13 = or i64 %12, %10 %14 = zext i8 %3 to i64 %15 = shl i64 %14, 40 %16 = or i64 %15, %13 %17 = zext i8 %4 to i64 %18 = shl i64 %17, 32 %19 = or i64 %18, %16 %20 = zext i8 %5 to i64 %21 = shl i64 %20, 24 %22 = or i64 %21, %19 %23 = zext i8 %6 to i64 %24 = shl i64 %23, 16 %25 = or i64 %24, %22 %26 = zext i8 %7 to i64 %27 = shl i64 %26, 8 %28 = or i64 %27, %25 %29 = zext i8 %8 to i64 %30 = or i64 %29, %28 ret i64 %30 } In this case, instcombine was able to eliminate the nonsense, but in PR8980 enough PHIs are in play that instcombine backs off. It's better to not generate this stuff in the first place. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123571 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
70728532799d751b8e0e97719dcb3344a2fc97de |
|
16-Jan-2011 |
Chris Lattner <sabre@nondot.org> |
Use an irbuilder to get some trivial constant folding when doing a store of a constant. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123570 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
192228edb1c08ca11da2df959072bcaa99eacd63 |
|
16-Jan-2011 |
Chris Lattner <sabre@nondot.org> |
enhance FoldOpIntoPhi in instcombine to try harder when a phi has multiple uses. In some cases, all the uses are the same operation, so instcombine can go ahead and promote the phi. In the testcase this pushes an add out of the loop. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123568 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
deaf55f69865bbc997a569c2a689ec5b0fbdefef |
|
15-Jan-2011 |
Chris Lattner <sabre@nondot.org> |
Generalize LoadAndStorePromoter a bit and switch LICM to use it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123501 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
d0f56132cfa6e25fb9692e84ea12444c86b92ae4 |
|
14-Jan-2011 |
Chris Lattner <sabre@nondot.org> |
switch SRoA to use LoadAndStorePromoter instead of its own copy of the code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123457 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
b352d6eb49927a7c707cbd9046cfc525b0c3f2d7 |
|
14-Jan-2011 |
Chris Lattner <sabre@nondot.org> |
split SROA into two passes: one that uses DomFrontiers (-scalarrepl) and one that uses SSAUpdater (-scalarrepl-ssa) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123436 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
e0a1a5ba91df6817f9ffae7af65ed0bda66f7620 |
|
14-Jan-2011 |
Chris Lattner <sabre@nondot.org> |
Implement full support for promoting allocas to registers using SSAUpdater instead of DomTree/DomFrontier. This may be interesting for reducing compile time. This is currently disabled, but seems to work just fine. When this is enabled, we eliminate two runs of dominator frontier, one in the "early per-function" optimizations and one in the "interlaced with inliner" function passes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123434 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
6974302e3ff20746268721959efed807c7711bfc |
|
13-Jan-2011 |
Bob Wilson <bob.wilson@apple.com> |
Fix whitespace. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123396 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
f0908aeade2f41d2fed82de8d85448358b379328 |
|
13-Jan-2011 |
Bob Wilson <bob.wilson@apple.com> |
Check for empty structs, and for consistency, zero-element arrays. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123383 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
704d1347c5009f674408fae6f78343b415891274 |
|
13-Jan-2011 |
Bob Wilson <bob.wilson@apple.com> |
Extend SROA to handle arrays accessed as homogeneous structs and vice versa. This is a minor extension of SROA to handle a special case that is important for some ARM NEON operations. Some of the NEON intrinsics return multiple values, which are handled as struct types containing multiple elements of the same vector type. The corresponding return types declared in the arm_neon.h header have equivalent arrays. We need SROA to recognize that it can split up those arrays and structs into separate vectors, even though they are not always accessed with the same type. SROA already handles loads and stores of an entire alloca by using insertvalue/extractvalue to access the individual pieces, and that code works the same regardless of whether the type is a struct or an array. So, all that needs to be done is to check for compatible arrays and homogeneous structs. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123381 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
694a10e7d8410f24639971224ce0e282c8cd04cb |
|
13-Jan-2011 |
Bob Wilson <bob.wilson@apple.com> |
Make SROA more aggressive with allocas containing padding. SROA only split up structs and arrays one level at a time, so padding can only cause trouble if it is located in between the struct or array elements. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123380 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
9fc5cdf77c812aaa80419036de27576d45894d0d |
|
02-Jan-2011 |
Chris Lattner <sabre@nondot.org> |
split dom frontier handling stuff out to its own DominanceFrontier header, so that Dominators.h is *just* domtree. Also prune #includes a bit. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122714 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
61db1f56d0b717d67557bbb2a9d83af1449458cb |
|
26-Dec-2010 |
Chris Lattner <sabre@nondot.org> |
start using irbuilder to make mem intrinsics in a few passes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122572 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
e90a6333c3a4514f88c8a3dddd10d9bcddcd6d85 |
|
23-Dec-2010 |
Mon P Wang <wangmp@apple.com> |
Preserve the address space when generating bitcasts for MemTransferInst in ConvertToScalarInfo git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122462 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
5034dd318a9dfa0dc45a3ac01e58e60f2aa2498d |
|
15-Dec-2010 |
Dan Gohman <gohman@apple.com> |
Move Value::getUnderlyingObject to be a standalone function so that it can live in Analysis instead of VMCore. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121885 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
081f80078dccf02c1f9c61378ff88bbf1b4afb5e |
|
24-Nov-2010 |
Nick Lewycky <nicholas@mxc.ca> |
Treat a call of function pointer like a load of the pointer when considering whether the pointer can be replaced with the global variable it is a copy of. Fixes PR8680. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120126 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
f601d6df6f43bb833461cbcee475c36998e6c259 |
|
20-Nov-2010 |
Benjamin Kramer <benny.kra@googlemail.com> |
Simplify code. No change in functionality. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119908 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
2e29ebd9e8efefe3ff926aa99cf2e5323665998e |
|
18-Nov-2010 |
Chris Lattner <sabre@nondot.org> |
finish a thought. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119690 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
6248065194778c866164b0c10f09f0f0d91b91ac |
|
18-Nov-2010 |
Chris Lattner <sabre@nondot.org> |
allow eliminating an alloca that is just copied from an constant global if it is passed as a byval argument. The byval argument will just be a read, so it is safe to read from the original global instead. This allows us to promote away the %agg.tmp alloca in PR8582 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119686 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
a9be1df6d7a9b5a07253d83a634ae5876e7e5550 |
|
18-Nov-2010 |
Chris Lattner <sabre@nondot.org> |
enhance the "alloca is just a memcpy from constant global" to ignore calls that obviously can't modify the alloca because they are readonly/readnone. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119683 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
2e61849f45144f2f05d57b00947df7e101610694 |
|
18-Nov-2010 |
Chris Lattner <sabre@nondot.org> |
fix a small oversight in the "eliminate memcpy from constant global" optimization. If the alloca that is "memcpy'd from constant" also has a memcpy from *it*, ignore it: it is a load. We now optimize the testcase to: define void @test2() { %B = alloca %T %a = bitcast %T* @G to i8* %b = bitcast %T* %B to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %b, i8* %a, i64 124, i32 4, i1 false) call void @bar(i8* %b) ret void } previously we would generate: define void @test() { %B = alloca %T %b = bitcast %T* %B to i8* %G.0 = getelementptr inbounds %T* @G, i32 0, i32 0 %tmp3 = load i8* %G.0, align 4 %G.1 = getelementptr inbounds %T* @G, i32 0, i32 1 %G.15 = bitcast [123 x i8]* %G.1 to i8* %1 = bitcast [123 x i8]* %G.1 to i984* %srcval = load i984* %1, align 1 %B.0 = getelementptr inbounds %T* %B, i32 0, i32 0 store i8 %tmp3, i8* %B.0, align 4 %B.1 = getelementptr inbounds %T* %B, i32 0, i32 1 %B.12 = bitcast [123 x i8]* %B.1 to i8* %2 = bitcast [123 x i8]* %B.1 to i984* store i984 %srcval, i984* %2, align 1 call void @bar(i8* %b) ret void } git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119682 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
081c34b725980f995be9080eaec24cd3dfaaf065 |
|
19-Oct-2010 |
Owen Anderson <resistor@mac.com> |
Get rid of static constructors for pass registration. Instead, every pass exposes an initializeMyPassFunction(), which must be called in the pass's constructor. This function uses static dependency declarations to recursively initialize the pass's dependencies. Clients that only create passes through the createFooPass() APIs will require no changes. Clients that want to use the CommandLine options for passes will need to manually call the appropriate initialization functions in PassInitialization.h before parsing commandline arguments. I have tested this with all standard configurations of clang and llvm-gcc on Darwin. It is possible that there are problems with the static dependencies that will only be visible with non-standard options. If you encounter any crash in pass registration/creation, please send the testcase to me directly. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116820 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
af81235ef96a7a005b7fdfe5a64cce30df3d820d |
|
16-Oct-2010 |
Benjamin Kramer <benny.kra@googlemail.com> |
Eliminate some calls to Value::getNameStr. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116670 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
2ab36d350293c77fc8941ce1023e4899df7e3a82 |
|
12-Oct-2010 |
Owen Anderson <resistor@mac.com> |
Begin adding static dependence information to passes, which will allow us to perform initialization without static constructors AND without explicit initialization by the client. For the moment, passes are required to initialize both their (potential) dependencies and any passes they preserve. I hope to be able to relax the latter requirement in the future. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116334 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
ce665bd2e2b581ab0858d1afe359192bac96b868 |
|
08-Oct-2010 |
Owen Anderson <resistor@mac.com> |
Now with fewer extraneous semicolons! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115996 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
0488fb649a56b7fc89a5814df5308813f9e5a85d |
|
01-Oct-2010 |
Dale Johannesen <dalej@apple.com> |
Massive rewrite of MMX: The x86_mmx type is used for MMX intrinsics, parameters and return values where these use MMX registers, and is also supported in load, store, and bitcast. Only the above operations generate MMX instructions, and optimizations do not operate on or produce MMX intrinsics. MMX-sized vectors <2 x i32> etc. are lowered to XMM or split into smaller pieces. Optimizations may occur on these forms and the result casted back to x86_mmx, provided the result feeds into a previous existing x86_mmx operation. The point of all this is prevent optimizations from introducing MMX operations, which is unsafe due to the EMMS problem. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115243 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
72eaa0e5eb345a8483608675b86dfcfa465c784c |
|
02-Sep-2010 |
Chris Lattner <sabre@nondot.org> |
deepen my MMX/SRoA hack to avoid hurting non-x86 codegen. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112763 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
91abace4ef6fdfe01bcebfb8e90938e71f8a5c4f |
|
01-Sep-2010 |
Chris Lattner <sabre@nondot.org> |
add a gross hack to work around a problem that Argiris reported on llvmdev: SRoA is introducing MMX datatypes like <1 x i64>, which then cause random problems because the X86 backend is producing mmx stuff without inserting proper emms calls. In the short term, force off MMX datatypes. In the long term, the X86 backend should not select generic vector types to MMX registers. This is being worked on, but won't be done in time for 2.8. rdar://8380055 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112696 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
3126f1c02895a9d18a504a5ad4af9ef2029c0dca |
|
18-Aug-2010 |
Chris Lattner <sabre@nondot.org> |
remove dead prototype. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111342 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
90c579de5a383cee278acc3f7e7b9d0a656e6a35 |
|
06-Aug-2010 |
Owen Anderson <resistor@mac.com> |
Reapply r110396, with fixes to appease the Linux buildbot gods. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110460 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
1f74590e9d1b9cf0f1f81a156efea73f76546e05 |
|
06-Aug-2010 |
Owen Anderson <resistor@mac.com> |
Revert r110396 to fix buildbots. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110410 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
9ccaf53ada99c63737547c0235baeb8454b04e80 |
|
06-Aug-2010 |
Owen Anderson <resistor@mac.com> |
Don't use PassInfo* as a type identifier for passes. Instead, use the address of the static ID member as the sole unique type identifier. Clean up APIs related to this change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110396 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
d13db2c59cc94162d6cf0a04187d408bfef6d4a7 |
|
22-Jul-2010 |
Owen Anderson <resistor@mac.com> |
Fix batch of converting RegisterPass<> to INTIALIZE_PASS(). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109045 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
a6aac4c5bc22bb10c7adb11eee3f82c703af7002 |
|
16-Jul-2010 |
Gabor Greif <ggreif@gmail.com> |
eliminate CallInst::ArgOffset git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108522 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
0238f8c430050d23ef861169bb4c4f930af0ef97 |
|
08-Jul-2010 |
Chris Lattner <sabre@nondot.org> |
Fix the second half of PR7437: scalarrepl wasn't preserving address spaces when SRoA'ing memcpy's. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107846 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
6f14c8c7c1ec97797a04631abad6885bfaabcc6d |
|
30-Jun-2010 |
Gabor Greif <ggreif@gmail.com> |
use getArgOperand instead of getOperand git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107271 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
d6bf5cf6415d1d12d66257e640471958920601b5 |
|
28-Jun-2010 |
Gabor Greif <ggreif@gmail.com> |
employ CallInst::ArgOffset (for now) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107015 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
19101c7585c191376d898e3e66e35acd9bd777c2 |
|
28-Jun-2010 |
Gabor Greif <ggreif@gmail.com> |
use cached value git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107000 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
1495247f517c0ac3aeeb9e6c7c0205dd7849d332 |
|
27-Jun-2010 |
Chris Lattner <sabre@nondot.org> |
minor cleanup to SROA: when lowering type unsafe accesses to large integers, the first inserted value would always create an 'or X, 0'. Even though this is trivially zapped by instcombine, don't bother creating this pointless instruction. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106979 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
fe60104ac97f3a8736dcfbfdf9547c7b7cc7b951 |
|
22-Jun-2010 |
Dan Gohman <gohman@apple.com> |
Use pre-increment instead of post-increment when the result is not used. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106542 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
a9b2313c13a1bc8cbae751da03a9049ecaf0f918 |
|
20-Apr-2010 |
Gabor Greif <ggreif@gmail.com> |
use abstract accessors to CallInst git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101899 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
551754c4958086cc6910da7c950f2875e212f5cf |
|
17-Apr-2010 |
Eric Christopher <echristo@apple.com> |
Revert 101465, it broke internal OpenGL testing. Probably the best way to know that all getOperand() calls have been handled is to replace that API instead of updating. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101579 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
4ec2258ffb495d7ce00177e447740ef1123a27db |
|
16-Apr-2010 |
Gabor Greif <ggreif@gmail.com> |
reapply r101434 with a fix for self-hosting rotate CallInst operands, i.e. move callee to the back of the operand array the motivation for this patch are laid out in my mail to llvm-commits: more efficient access to operands and callee, faster callgraph-construction, smaller compiler binary git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101465 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
a0bada729ffaa1bfc80ef25935bdc5a67432708f |
|
16-Apr-2010 |
Chris Lattner <sabre@nondot.org> |
fix comment noticed by Bob git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101437 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
607a7ab3da72a2eb53553a520507cbb8068dd1d8 |
|
16-Apr-2010 |
Gabor Greif <ggreif@gmail.com> |
back out r101423 and r101397, they break llvm-gcc self-host on darwin10 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101434 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
d55c1c16598eba6111fb3a5b6e5dbc6469a562f7 |
|
16-Apr-2010 |
Chris Lattner <sabre@nondot.org> |
fix PR6832: we were using the alignment of a pointer when we wanted the alignment of the pointee. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101432 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
a001b664988f759d194f3d5d880c61449219fc2e |
|
16-Apr-2010 |
Chris Lattner <sabre@nondot.org> |
improve comments. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101429 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
4cc576bc5ea27951f3bb15ccefbe483293bf8eaf |
|
16-Apr-2010 |
Chris Lattner <sabre@nondot.org> |
pull all the ConvertToScalarInfo code together into one place. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101427 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
593375d04ab32be0161607a741d310172f142b93 |
|
16-Apr-2010 |
Chris Lattner <sabre@nondot.org> |
more refactoring: suck some stuff out of SRoA into ConvertToScalarInfo. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101425 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
c4472072641f702dbd99ae12b7da089e75c44a99 |
|
16-Apr-2010 |
Chris Lattner <sabre@nondot.org> |
introduce a new ConvertToScalarInfo struct to simplify CanConvertToScalar/MergeInType. Eliminate a pointless LLVMContext argument to MergeInType. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101422 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
31d80103d56c026403d7fb6c50833664ff63ddcb |
|
15-Apr-2010 |
Chris Lattner <sabre@nondot.org> |
tidy interface to isOnlyCopiedFromConstantGlobal git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101405 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
2ff961f66816daab8bbc58a19025161d969821c2 |
|
15-Apr-2010 |
Gabor Greif <ggreif@gmail.com> |
reapply r101364, which has been backed out in r101368 with a fix rotate CallInst operands, i.e. move callee to the back of the operand array the motivation for this patch are laid out in my mail to llvm-commits: more efficient access to operands and callee, faster callgraph-construction, smaller compiler binary git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101397 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
9ee17208115482441953127615231c59a2f4d052 |
|
15-Apr-2010 |
Gabor Greif <ggreif@gmail.com> |
back out r101364, as it trips the linux nightlybot on some clang C++ tests git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101368 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
165dac08d1bb8428b32a5f39cdd3dbee2888987f |
|
15-Apr-2010 |
Gabor Greif <ggreif@gmail.com> |
rotate CallInst operands, i.e. move callee to the back of the operand array the motivation for this patch are laid out in my mail to llvm-commits: more efficient access to operands and callee, faster callgraph-construction, smaller compiler binary git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101364 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
8a8a4350db3e66a517dc179ba38439c66bb726a8 |
|
06-Apr-2010 |
Gabor Greif <ggreif@gmail.com> |
performance: get rid of repeated dereferencing of use_iterator by caching its result git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100550 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
20adc9dc4650313f017b27d9818eb2176238113d |
|
04-Apr-2010 |
Mon P Wang <wangmp@apple.com> |
Reapply address space patch after fixing an issue in MemCopyOptimizer. Added support for address spaces and added a isVolatile field to memcpy, memmove, and memset, e.g., llvm.memcpy.i32(i8*, i8*, i32, i32) -> llvm.memcpy.p0i8.p0i8.i32(i8*, i8*, i32, i32, i1) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100304 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
e754d3fb852abdeaf910c7331eed60f6303597c1 |
|
02-Apr-2010 |
Mon P Wang <wangmp@apple.com> |
Revert r100191 since it breaks objc in clang git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100199 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
e33c848fa481b038d5ad0c7c898c33b2b27ec71e |
|
02-Apr-2010 |
Mon P Wang <wangmp@apple.com> |
Reapply address space patch after fixing an issue in MemCopyOptimizer. Added support for address spaces and added a isVolatile field to memcpy, memmove, and memset, e.g., llvm.memcpy.i32(i8*, i8*, i32, i32) -> llvm.memcpy.p0i8.p0i8.i32(i8*, i8*, i32, i32, i1) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100191 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
100f090adde26005b9f1eca96871dff52825b27b |
|
31-Mar-2010 |
Bob Wilson <bob.wilson@apple.com> |
Revert Mon Ping's change 99928, since it broke all the llvm-gcc buildbots. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99948 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
808bab0169ab7d2e8dfdc72dd2c991cd8ff2396d |
|
30-Mar-2010 |
Mon P Wang <wangmp@apple.com> |
Added support for address spaces and added a isVolatile field to memcpy, memmove, and memset, e.g., llvm.memcpy.i32(i8*, i8*, i32, i32) -> llvm.memcpy.p0i8.p0i8.i32(i8*, i8*, i32, i32, i1) A update of langref will occur in a subsequent checkin. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99928 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
1df9859c40492511b8aa4321eb76496005d3b75b |
|
16-Feb-2010 |
Duncan Sands <baldrick@free.fr> |
There are two ways of checking for a given type, for example isa<PointerType>(T) and T->isPointerTy(). Convert most instances of the first form to the second form. Requested by Chris. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96344 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
b0bc6c361da9009e8414efde317d9bbff755f6c0 |
|
15-Feb-2010 |
Duncan Sands <baldrick@free.fr> |
Uniformize the names of type predicates: rather than having isFloatTy and isInteger, we now have isFloatTy and isIntegerTy. Requested by Chris! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96223 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
3992feb075b27ff37b63017078a977206f97d10d |
|
03-Feb-2010 |
Bob Wilson <bob.wilson@apple.com> |
Adjust the heuristics used to decide when SROA is likely to be profitable. The SRThreshold value makes perfect sense for checking if an entire aggregate should be promoted to a scalar integer, but it is not so good for splitting an aggregate into its separate elements. A struct may contain a large embedded array along with some scalar fields that would benefit from being split apart by SROA. Even if the total aggregate size is large, it may still be good to perform SROA. Thus, the most important piece of this patch is simply moving the aggregate size comparison vs. SRThreshold so that it guards only the aggregate promotion. We have also been checking the number of elements to decide if an aggregate should be split up. The limit of "SRThreshold/4" seemed rather arbitrary, and I don't think it's very useful to derive this limit from SRThreshold anyway. I've collected some data showing that the current default limit of 32 (since SRThreshold defaults to 128) is a reasonable cutoff for struct types. One thing suggested by the data is that distinguishing between structs and arrays might be useful. There are (obviously) a lot more large arrays than large structs (as measured by the number of elements and not the total size -- a large array inside a struct still counts as a single element given the way we do SROA right now). Out of 8377 arrays where we successfully performed SROA while compiling a large set of benchmarks, only 16 of them had more than 8 elements. And, for those 16 arrays, it's not at all clear that SROA was actually beneficial. So, to offset the compile time cost of investigating more large structs for SROA, the patch lowers the limit on array elements to 8. This fixes Apple Radar 7563690. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95224 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
2d64ca09d4e1ea57ca07aef8c1c2276f38c4293a |
|
27-Jan-2010 |
Benjamin Kramer <benny.kra@googlemail.com> |
Use the less expensive getName function instead of getNameStr. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94683 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
032742972f69c014dd5e985753c06a7fe3d08704 |
|
25-Jan-2010 |
Bob Wilson <bob.wilson@apple.com> |
Change Value::getUnderlyingObject to have the MaxLookup value specified as a parameter with a default value, instead of just hardcoding it in the implementation. The limit of MaxLookup = 6 was introduced in r69151 to fix a performance problem with O(n^2) behavior in instcombine, but the scalarrepl pass is relying on getUnderlyingObject to go all the way back to an AllocaInst. Making the limit part of the method signature makes it clear that by default the result is limited and should help avoid similar problems in the future. This fixes pr6126. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94433 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
6c146eefbf75875250af37a0f1ea70fc6b4716ee |
|
22-Jan-2010 |
Victor Hernandez <vhernandez@apple.com> |
DbgInfoIntrinsics no longer appear in an instruction's use list; so clean up looking for them in use iterations and remove OnlyUsedByDbgInfoIntrinsics() git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94111 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
a756b1d914eaf4ad610d29398e5831b394bd1547 |
|
19-Jan-2010 |
Bob Wilson <bob.wilson@apple.com> |
Fix a crash in scalarrepl for memcpy/memmove where the source and destination are the same. I had already fixed a similar problem where the source and destination were different bitcasts derived from the same alloca, but the previous fix still did not handle the case where both operands are exactly the same value. Radar 7552893. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93848 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
321a813c536e2f1f2f05bbe78a7fbf64046f0557 |
|
05-Jan-2010 |
Dan Gohman <gohman@apple.com> |
Use do+while instead of while for loops which obviously have a non-zero trip count. Use SmallVector's pop_back_val(). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92734 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
504c7d8973b86b5129912cf34b780953027dadc7 |
|
05-Jan-2010 |
David Greene <greened@obbligato.org> |
Change errs() to dbgs(). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92610 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
aadadb3973bb202cd4d2e20e842588162e780f13 |
|
22-Dec-2009 |
Chris Lattner <sabre@nondot.org> |
Fix the Convert to scalar to not insert dead loads in the store case. The load is needed when we have a small store into a large alloca (at which point we get a load/insert/store sequence), but when you do a full-sized store, this load ends up being dead. This dead load is bad in really large nasty testcases where the load ends up causing mem2reg to insert large chains of dependent phi nodes which only ADCE can delete. Instead of doing this, just don't insert the dead load. This fixes rdar://6864035 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91917 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
97eee027f980464fde0a9374fa90bac6a771c4dc |
|
22-Dec-2009 |
Chris Lattner <sabre@nondot.org> |
fix some fixme's by using twines git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91916 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
f27a4cd7837794392d35a96bdc7d5fb196190b3e |
|
22-Dec-2009 |
Bob Wilson <bob.wilson@apple.com> |
Generalize SROA to allow the first index of a GEP to be non-zero. Add a missing check that an array reference doesn't go past the end of the array, and remove some redundant checks for in-bound array and vector references that are no longer needed. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91897 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
3c3af5d15569d708d2dc8f13351bc77056b4d70d |
|
21-Dec-2009 |
Bob Wilson <bob.wilson@apple.com> |
Remove special-case SROA optimization of variable indexes to one-element and two-element arrays. After restructuring the SROA code, it was not safe to do this without adding more checking. It is not clear that this special-case has really been useful, and removing this simplifies the code quite a bit. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91828 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
e88728d757d3090f1c0885b78d3675a7e143a2f9 |
|
19-Dec-2009 |
Bob Wilson <bob.wilson@apple.com> |
Update my SROA changes in response to review. * change FindElementAndOffset to return a uint64_t instead of unsigned, and to identify the type to be used for that result in a GEP instruction. * move "isa<ConstantInt>" to be first in conditional. * replace some dyn_casts with casts. * add a comment about handling mem intrinsics. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91762 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
b742defa0a8f3e477c3ed641da49aab276937556 |
|
18-Dec-2009 |
Bob Wilson <bob.wilson@apple.com> |
Reapply 91459 with a simple fix for the problem that broke the x86_64-darwin bootstrap. This also replaces the WeakVH references that Chris objected to with normal Value references. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91711 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
39c88a641b6bf9cea7d270ccee85992f9c30f40f |
|
17-Dec-2009 |
Bob Wilson <bob.wilson@apple.com> |
Re-revert 91459. It's breaking the x86_64 darwin bootstrap. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91607 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
2674089cefe519195e00bdf879647438cfb1cb0f |
|
16-Dec-2009 |
Daniel Dunbar <daniel@zuster.org> |
Reapply r91459, it was only unmasking the bug, and since TOT is still broken having it reverted does no good. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91559 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
fca55c8ac7d12e4139ad0ab7d74b76c47935aef6 |
|
16-Dec-2009 |
Daniel Dunbar <daniel@zuster.org> |
Revert "Reapply 91184 with fixes and an addition to the testcase to cover the problem", this broke llvm-gcc bootstrap for release builds on x86_64-apple-darwin10. This reverts commit db22309800b224a9f5f51baf76071d7a93ce59c9. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91534 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
970eaf2520760d9aa30ceb3a8d4a0dde4548784d |
|
15-Dec-2009 |
Bob Wilson <bob.wilson@apple.com> |
Reapply 91184 with fixes and an addition to the testcase to cover the problem found last time. Instead of trying to modify the IR while iterating over it, I've change it to keep a list of WeakVH references to dead instructions, and then delete those instructions later. I also added some special case code to detect and handle the situation when both operands of a memcpy intrinsic are referencing the same alloca. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91459 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
a59adc40153f3e0f9843952c127d179b5ebe6c4c |
|
14-Dec-2009 |
Chris Lattner <sabre@nondot.org> |
revert r91184, because it causes a crash on a .bc file I just sent to Bob. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91268 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
73a1b67cb9b52553c3684b8eea3f97f35744354b |
|
12-Dec-2009 |
Bob Wilson <bob.wilson@apple.com> |
Revise scalar replacement to be more flexible about handle bitcasts and GEPs. While scanning through the uses of an alloca, keep track of the current offset relative to the start of the alloca, and check memory references to see if the offset & size correspond to a component within the alloca. This has the nice benefit of unifying much of the code from isSafeUseOfAllocation, isSafeElementUse, and isSafeUseOfBitCastedAllocation. The code to rewrite the uses of a promoted alloca, after it is determined to be safe, is reorganized in the same way. Also, when rewriting GEP instructions, mark them as "in-bounds" since all the indices are known to be safe. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91184 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
efc58e793370597eb3e3100e284453c5eddc6099 |
|
09-Dec-2009 |
Bob Wilson <bob.wilson@apple.com> |
Fix a comment. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90975 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
65ab34f3f29f8e4efb10b2cc40e58c5ce63a76d7 |
|
08-Dec-2009 |
Bob Wilson <bob.wilson@apple.com> |
Some superficial cleanups. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90866 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
78c50b8cd68d266d4ed6f8eca443cf8142a01204 |
|
08-Dec-2009 |
Bob Wilson <bob.wilson@apple.com> |
Clean up dead operands left around after SROA replaces a mem intrinsic. I'm not aware that this does anything significant on its own, but it's needed for another patch that I'm working on. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90864 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
39fdd6947cb800a0db7f7012fe843c98b414602f |
|
04-Dec-2009 |
Bob Wilson <bob.wilson@apple.com> |
Fix up some comments. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90603 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
d614a1f0a89927639db37efd8840fe006dacd7a1 |
|
04-Dec-2009 |
Bob Wilson <bob.wilson@apple.com> |
Fix 80-column violations. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90601 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
e6f329476c6598db1b45c3d573eac9cf65179831 |
|
29-Nov-2009 |
Benjamin Kramer <benny.kra@googlemail.com> |
Revert r90089 for now, it's breaking selfhost. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90097 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
4aac07e8983d31c6bbbcd100ad119859fb4bb968 |
|
29-Nov-2009 |
Benjamin Kramer <benny.kra@googlemail.com> |
Fix two FIXMEs. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90089 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
8976e5950f3ee5eebfe6e9520bbf47a419ee8b6a |
|
27-Nov-2009 |
Chris Lattner <sabre@nondot.org> |
fix PR5436 by making the 'simple' case of SRoA not promote out of range array indexes. The "complex" case of SRoA still handles them, and correctly. This fixes a weirdness where we'd correctly avoid transforming A[0][42] if the 42 was too large, but we'd only do it if it was one gep, not two separate ones. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90007 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
ce2c51b6701c06f701efa2871794b7710cb64b41 |
|
23-Nov-2009 |
Nick Lewycky <nicholas@mxc.ca> |
Pull LLVMContext out of PromoteMemToReg. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89645 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
7b929dad59785f62a66f7c58615082f98441e95e |
|
23-Oct-2009 |
Victor Hernandez <vhernandez@apple.com> |
Remove AllocationInst. Since MallocInst went away, AllocaInst is the only subclass of AllocationInst, so it no longer is necessary. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84969 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
cf0fe8d813727383d630055bb9d1cde21b00b7e7 |
|
05-Oct-2009 |
Chris Lattner <sabre@nondot.org> |
strength reduce a ton of type equality tests to check the typeid (Through the new predicates I added) instead of going through a context and doing a pointer comparison. Besides being cheaper, this allows a smart compiler to turn the if sequence into a switch. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83297 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
59136251f348a02a26f7a711a0e7fc459a727093 |
|
15-Sep-2009 |
Nick Lewycky <nicholas@mxc.ca> |
Add more newlines to make up for the ones removed from the end of instructions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81851 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
ff1147072a0c9dbe91572bbbbf93031c6451bbae |
|
15-Sep-2009 |
Chris Lattner <sabre@nondot.org> |
add newline to debug dump git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81840 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
3e8b6631e67e01e4960a7ba4668a50c596607473 |
|
02-Sep-2009 |
Chris Lattner <sabre@nondot.org> |
eliminate VISIBILITY_HIDDEN from Transforms/Scalar. PR4861 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80766 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
bdff548e4dd577a72094d57b282de4e765643b96 |
|
23-Aug-2009 |
Chris Lattner <sabre@nondot.org> |
eliminate the "Value" printing methods that print to a std::ostream. This required converting a bunch of stuff off DOUT and other cleanups. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79819 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
e4af1cf4027d19cbe52d70858353dc1765ea3aef |
|
19-Aug-2009 |
Dan Gohman <gohman@apple.com> |
Make SROA and PredicateSimplifier cope if TargetData is not available. This is very conservative for now. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79442 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
d3aa25e2a8b04853f03341b6275ef7718659b915 |
|
17-Aug-2009 |
Nick Lewycky <nicholas@mxc.ca> |
Don't crash trying to promote VLAs. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79226 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
1d0be15f89cb5056e20e2d24faa8d6afb1573bca |
|
13-Aug-2009 |
Owen Anderson <resistor@mac.com> |
Push LLVMContexts through the IntegerType APIs. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78948 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
a7235ea7245028a0723e8ab7fd011386b3900777 |
|
31-Jul-2009 |
Owen Anderson <resistor@mac.com> |
Move a few more APIs back to 2.5 forms. The only remaining ones left to change back are metadata related, which I'm waiting on to avoid conflicting with Devang. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77721 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
9e9a0d5fc26878e51a58a8b57900fcbf952c2691 |
|
31-Jul-2009 |
Owen Anderson <resistor@mac.com> |
Move more code back to 2.5 APIs. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77635 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
fe09b2098ac483f6d6ce6ea4ab237a9539bdb6b9 |
|
30-Jul-2009 |
Daniel Dunbar <daniel@zuster.org> |
Twines: Don't allow implicit conversion from integers, this is too tricky. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77605 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
7f93dc8345fb33652973e35cae4c3b58addf4f87 |
|
30-Jul-2009 |
Daniel Dunbar <daniel@zuster.org> |
Switch obvious clients to Twine instead of utostr (when they were already using a Twine, e.g., for names). - I am a little ambivalent about this; we don't want the string conversion of utostr, but using overload '+' mixed with string and integer arguments is sketchy. On the other hand, this particular usage is something of an idiom. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77579 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
debcb01b0f0a15f568ca69e8f288fade4bfc7297 |
|
30-Jul-2009 |
Owen Anderson <resistor@mac.com> |
Move types back to the 2.5 API. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77516 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
baf3c404409d5e47b13984a7f95bfbd6d1f2e79e |
|
29-Jul-2009 |
Owen Anderson <resistor@mac.com> |
Move ConstantExpr to 2.5 API. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77494 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
af7ec975870f92245f1f1484ac80a1e2db6a0afa |
|
28-Jul-2009 |
Owen Anderson <resistor@mac.com> |
Return ConstantVector to 2.5 API. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77366 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
6e0d1cb30957a636c53158d3089e6fb88348a57a |
|
25-Jul-2009 |
Daniel Dunbar <daniel@zuster.org> |
Initial update to VMCore to use Twines for string arguments. - The only meat here is in Value.{h,cpp} the rest is essential 'const std::string &' -> 'const Twine &'. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77048 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
eed707b1e6097aac2bb6b3d47271f6300ace7f2e |
|
25-Jul-2009 |
Owen Anderson <resistor@mac.com> |
Revert the ConstantInt constructors back to their 2.5 forms where possible, thanks to contexts-on-types. More to come. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77011 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
e922c0201916e0b980ab3cfe91e1413e68d55647 |
|
22-Jul-2009 |
Owen Anderson <resistor@mac.com> |
Get rid of the Pass+Context magic. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76702 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
50dead06ffc107edb7e84857baaeeb09039c631c |
|
16-Jul-2009 |
Owen Anderson <resistor@mac.com> |
Revert yesterday's change by removing the LLVMContext parameter to AllocaInst and MallocInst. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75863 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
9adc0abad3c3ed40a268ccbcee0c74cb9e1359fe |
|
15-Jul-2009 |
Owen Anderson <resistor@mac.com> |
Move EVER MORE stuff over to LLVMContext. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75703 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
c23197a26f34f559ea9797de51e187087c039c42 |
|
14-Jul-2009 |
Torok Edwin <edwintorok@gmail.com> |
llvm_unreachable->llvm_unreachable(0), LLVM_UNREACHABLE->llvm_unreachable. This adds location info for all llvm_unreachable calls (which is a macro now) in !NDEBUG builds. In NDEBUG builds location info and the message is off (it only prints "UREACHABLE executed"). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75640 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
c25e7581b9b8088910da31702d4ca21c4734c6d7 |
|
11-Jul-2009 |
Torok Edwin <edwintorok@gmail.com> |
assert(0) -> LLVM_UNREACHABLE. Make llvm_unreachable take an optional string, thus moving the cerr<< out of line. LLVM_UNREACHABLE is now a simple wrapper that makes the message go away for NDEBUG builds. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75379 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
7d696d80409aad20bb5da0fc4eccab941dd371d4 |
|
11-Jul-2009 |
Torok Edwin <edwintorok@gmail.com> |
Convert more assert(0)+abort() -> LLVM_UNREACHABLE, and abort()/exit() -> llvm_report_error(). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75363 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
333c40096561218bc3597cf153c0a3895274414c |
|
10-Jul-2009 |
Owen Anderson <resistor@mac.com> |
This started as a small change, I swear. Unfortunately, lots of things call the [I|F]CmpInst constructors. Who knew!? git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75200 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
07cf79ef537caff6d39145f190a28a336e629b6f |
|
07-Jul-2009 |
Owen Anderson <resistor@mac.com> |
"LLVMContext* " --> "LLVMContext *" git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74878 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
0a205a459884ec745df1c529396dd921f029dafd |
|
06-Jul-2009 |
Owen Anderson <resistor@mac.com> |
More LLVMContext-ification. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74807 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
fa5cbd6d0fbda23fd669c8718e07b19001b2d21a |
|
03-Jul-2009 |
Owen Anderson <resistor@mac.com> |
Even more passes being LLVMContext'd. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74781 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
44118f0e25c25fedda1ccdd6a72f072c0b5c96e7 |
|
16-Jun-2009 |
Dan Gohman <gohman@apple.com> |
Use Type::getScalarType. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73451 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
0906b1bf09769d5301e62d372b363b4cd0b5a6c7 |
|
06-Jun-2009 |
Jay Foad <jay.foad@gmail.com> |
Use cast<> instead of dyn_cast<> for things that are known to be Instructions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73002 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
41b33f437f70dcf63e35d08e5f4202258ef05c15 |
|
01-Jun-2009 |
Eli Friedman <eli.friedman@gmail.com> |
PR4286: Make RewriteLoadUserOfWholeAlloca and RewriteStoreUserOfWholeAlloca deal with tail padding because isSafeUseOfBitCastedAllocation expects them to. Otherwise, we crash trying to erase the bitcast. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72688 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
777d2306b36816a53bc1ae1244c0dc7d998ae691 |
|
09-May-2009 |
Duncan Sands <baldrick@free.fr> |
Rename PaddedSize to AllocSize, in the hope that this will make it more obvious what it represents, and stop it being confused with the StoreSize. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71349 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
ef554846f061b9b467e7824f8d01e3c59778f3f6 |
|
08-May-2009 |
Chris Lattner <sabre@nondot.org> |
fix RewriteStoreUserOfWholeAlloca to use the correct type size method, fixing a crash on PR4146. While the store will ultimately overwrite the "padded size" number of bits in memory, the stored value may be a subset of this size. This function only wants to handle the case where all bits are stored. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71224 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
33e24adc3bc3d046aa05cf903fb74da1610b57cb |
|
21-Apr-2009 |
Chris Lattner <sabre@nondot.org> |
fix a crash on a pointless but valid zero-length memset, rdar://6808691 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69680 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
b0c4199a55d72fb9560f00b84a92a062fb8e79ea |
|
18-Mar-2009 |
Zhou Sheng <zhousheng00@gmail.com> |
Explicitly check for StoreInst, do not lose the chance to delete unused loads or bitcasts. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67202 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
16767c6b49659d5187ebb70c97207b0bf146ba35 |
|
18-Mar-2009 |
Zhou Sheng <zhousheng00@gmail.com> |
Revert my previous change on Local.cpp, instead, fix the bug on scalarrepl. If the instruction has no users, it is also not only used by debug info and should not be deleted. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67194 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
29e641761e81bd000bdc4ccfae479c6dda18e402 |
|
08-Mar-2009 |
Chris Lattner <sabre@nondot.org> |
teach SROA to handle promoting vector allocas with a memset into them into a vector type instead of into an integer type. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66368 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
c570487d45f7426dc5f75c0309122d6f9330ecf7 |
|
08-Mar-2009 |
Chris Lattner <sabre@nondot.org> |
Enhance SROA to "promote to scalar" allocas which are memcpy/memmove'd into or out of. This fixes a serious perf issue that Nate ran into. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66366 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
dfe964ce8c367248e587f2d9ecc7fac5ee2c6fdc |
|
08-Mar-2009 |
Chris Lattner <sabre@nondot.org> |
change the MemIntrinsic get/setAlignment method to take an unsigned instead of a Constant*, which is what the clients of it really want. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66364 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
3ce5e887aef457701da95f1c6ccbd58ec3d32fe4 |
|
08-Mar-2009 |
Chris Lattner <sabre@nondot.org> |
Introduce a new MemTransferInst pseudo class, which is a common parent between MemCpyInst and MemMoveInst, simplify some code to use it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66361 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
00e389c8c8874be352358f2cbd23f98d3df5ebad |
|
06-Mar-2009 |
Devang Patel <dpatel@apple.com> |
While converting an aggregate to scalare, ignore and remove aggregate's debug info. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66262 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
67fca63da267da491de9526b09a7de0a2e99ece2 |
|
06-Mar-2009 |
Evan Cheng <evan.cheng@apple.com> |
SRThreshold is meant to be inclusive. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66227 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
88fe1ad187041e2ca636e0f86204e30fc6e14300 |
|
04-Mar-2009 |
Chris Lattner <sabre@nondot.org> |
complete comment. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66055 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
0ff83ab9858d56fb37ea634c52eafb3de641d733 |
|
04-Mar-2009 |
Chris Lattner <sabre@nondot.org> |
this wasn't intended to be committed. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66054 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
1541e0f7da2de6ae84434060df81e93b64000924 |
|
04-Mar-2009 |
Chris Lattner <sabre@nondot.org> |
Fix PR3720 by properly propagating alignment information from memcpy/memmove onto element accesses. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66053 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
3aaf5d993365c803dad9a8815b6c9864505af5b6 |
|
03-Mar-2009 |
Bill Wendling <isanbard@gmail.com> |
Use > instead of >=. We want to promote aggregates of 128-bytes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65960 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
5a377cb27bb65ea608b63716454c9ae214ef81c9 |
|
03-Mar-2009 |
Bill Wendling <isanbard@gmail.com> |
Reapply r65755, but reversing "<" to ">=". git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65945 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
8fe40819aed54e3c33adcbc972f414f5e13a6de8 |
|
01-Mar-2009 |
Bill Wendling <isanbard@gmail.com> |
Temporarily revert r65755. It was causing failures in the self-hosting testsuite: Running /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/test/CodeGen/X86/dg.exp ... FAIL: /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/test/CodeGen/X86/nancvt.ll Failed with exit(1) at line 2 while running: grep 2147027116 nancvt.ll.tmp | count 3 count: expected 3 lines and got 0. child process exited abnormally FAIL: /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/test/CodeGen/X86/vec_ins_extract.ll Failed with exit(1) at line 1 while running: llvm-as < /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/test/CodeGen/X86/vec_ins_extract.ll | opt -scalarrepl -instcombine | llc -march=x86 -mcpu=yonah | not /usr/bin/grep sub.*esp subl $28, %esp subl $28, %esp child process exited abnormally And more. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65758 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
af89a3f1d3bc77f5f0c39ef8189b4506462b0111 |
|
01-Mar-2009 |
Chris Lattner <sabre@nondot.org> |
hoist the check for alloca size up so that it controls CanConvertToScalar as well as isSafeAllocaToScalarRepl. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65755 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
7afe8fa066b227bb2683b6890d6cfdc4ebac0205 |
|
10-Feb-2009 |
Devang Patel <dpatel@apple.com> |
Use early exits. Reduce indentation. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64226 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
4afc90dacf309999d8b7f6c2b4b0c56af346bab5 |
|
10-Feb-2009 |
Devang Patel <dpatel@apple.com> |
Enable scalar replacement of AllocaInst whose one of the user is dbg info. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64207 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
e991ced7cb5cb86d1c33b8d400b1be41185bc69f |
|
06-Feb-2009 |
Chris Lattner <sabre@nondot.org> |
fix PR3489, use bits instead of bytes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63916 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
1aa7056b13ac9e0f3fe176d37739ec484d4fe4da |
|
03-Feb-2009 |
Chris Lattner <sabre@nondot.org> |
teach "convert from scalar" to handle loads of fca's. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63659 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
6e01115bb122ef82daa6c8133a1d199d6b8ff767 |
|
03-Feb-2009 |
Chris Lattner <sabre@nondot.org> |
refactor the interface to ConvertUsesOfLoadToScalar, renaming it to ConvertScalar_ExtractValue git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63658 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
9bc67da0a9982f2f7597d1d46cf18f079e4f8f98 |
|
03-Feb-2009 |
Chris Lattner <sabre@nondot.org> |
convert ConvertUsesOfLoadToScalar to use IRBuilder, no functionality change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63652 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
65a650291d01638853aaf1e80fcc2fc86a785957 |
|
03-Feb-2009 |
Chris Lattner <sabre@nondot.org> |
switch ConvertScalar_InsertValue to use an IRBuilder, no functionality change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63651 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
9b872db775797dea4b391a9347cfbd2ca9c558e2 |
|
03-Feb-2009 |
Chris Lattner <sabre@nondot.org> |
make scalar conversion handle stores of first class aggregate values. loads are not yet handled (coming soon to an sroa near you). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63649 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
1a3257bbf53eff4c7cfcbef972dd382f7baa7592 |
|
03-Feb-2009 |
Chris Lattner <sabre@nondot.org> |
Make SROA produce a vector only when the alloca is actually accessed at least once as a vector. This prevents it from compiling the example in not-a-vector into: define double @test(double %A, double %B) { %tmp4 = insertelement <7 x double> undef, double %A, i32 0 %tmp = insertelement <7 x double> %tmp4, double %B, i32 4 %tmp2 = extractelement <7 x double> %tmp, i32 4 ret double %tmp2 } instead, producing the integer code. Producing vectors when they aren't otherwise in the program is dangerous because a lot of other code treats them carefully and doesn't want to break them down. OTOH, many things want to break down tasty i448's. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63638 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
55a683d7f03b0acaf7807545fd7be319498277ff |
|
03-Feb-2009 |
Chris Lattner <sabre@nondot.org> |
add another case of undefined behavior without crashing, PR3466. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63620 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
3d730f7453af5ecb1be4b8c5d48843ad5637de37 |
|
03-Feb-2009 |
Chris Lattner <sabre@nondot.org> |
Teach ConvertUsesToScalar to handle memset, allowing it to handle crazy cases like: struct f { int A, B, C, D, E, F; }; short test4() { struct f A; A.A = 1; memset(&A.B, 2, 12); return A.C; } git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63596 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
7809ecd5b019d26498499121f4d9c0b7de2f0a14 |
|
03-Feb-2009 |
Chris Lattner <sabre@nondot.org> |
rearrange how SRoA handles promotion of allocas to vectors. With the new world order, it can handle cases where the first store into the alloca is an element of the vector, instead of requiring the first analyzed store to have the vector type itself. This allows us to un-xfail test/CodeGen/X86/vec_ins_extract.ll. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63590 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
15c82779033826a0958182b746b03a22ad04a16a |
|
02-Feb-2009 |
Chris Lattner <sabre@nondot.org> |
inline SROA::ConvertToScalar, no functionality change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63544 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
996d7a97f94de45a3627b03eb3c44b2b325f3e51 |
|
02-Feb-2009 |
Chris Lattner <sabre@nondot.org> |
Fix a bug which caused us to miscompile a couple of Ada tests. Thanks for the beautiful reduced testcase Duncan! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63529 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
4b3dfbd220835cbba519162712c9cb6afaa44059 |
|
02-Feb-2009 |
Duncan Sands <baldrick@free.fr> |
Fix a comment (bytes -> bits), reformat a comment and remove trailing whitespace. No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63511 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
0e7c46bc7eb68099eecd1244390dccd0a77d0875 |
|
02-Feb-2009 |
Duncan Sands <baldrick@free.fr> |
Fix an obvious thinko. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63510 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
2e0d5f84325303fa95997cd66485811bd0a6ef70 |
|
31-Jan-2009 |
Chris Lattner <sabre@nondot.org> |
Simplify and generalize the SROA "convert to scalar" transformation to be able to handle *ANY* alloca that is poked by loads and stores of bitcasts and GEPs with constant offsets. Before the code had a number of annoying limitations and caused it to miss cases such as storing into holes in structs and complex casts (as in bitfield-sroa) where we had unions of bitfields etc. This also handles a number of important cases that are exposed due to the ABI lowering stuff we do to pass stuff by value. One case that is pretty great is that we compile 2006-11-07-InvalidArrayPromote.ll into: define i32 @func(<4 x float> %v0, <4 x float> %v1) nounwind { %tmp10 = call <4 x i32> @llvm.x86.sse2.cvttps2dq(<4 x float> %v1) %tmp105 = bitcast <4 x i32> %tmp10 to i128 %tmp1056 = zext i128 %tmp105 to i256 %tmp.upgrd.43 = lshr i256 %tmp1056, 96 %tmp.upgrd.44 = trunc i256 %tmp.upgrd.43 to i32 ret i32 %tmp.upgrd.44 } which turns into: _func: subl $28, %esp cvttps2dq %xmm1, %xmm0 movaps %xmm0, (%esp) movl 12(%esp), %eax addl $28, %esp ret Which is pretty good code all things considering :). One effect of this is that SROA will start generating arbitrary bitwidth integers that are a multiple of 8 bits. In the case above, we got a 256 bit integer, but the codegen guys assure me that it can handle the simple and/or/shift/zext stuff that we're doing on these operations. This addresses rdar://6532315 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63469 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
6e733d34ca487ab7ff8a6def018a933620393869 |
|
28-Jan-2009 |
Chris Lattner <sabre@nondot.org> |
Fix some issues with volatility, move "CanConvertToScalar" check after the others. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63227 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
ceb4d1aecb9deffe59b3dcdc9a783ffde8477be9 |
|
12-Jan-2009 |
Duncan Sands <baldrick@free.fr> |
Rename getABITypeSize to getTypePaddedSize, as suggested by Chris. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62099 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
583dd6072eed7a446dad8f0e796fa34aec40aa12 |
|
09-Jan-2009 |
Chris Lattner <sabre@nondot.org> |
Fix PR3304 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61995 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
5ffe6acd577696a41932c7b82db06a04687e07ba |
|
08-Jan-2009 |
Chris Lattner <sabre@nondot.org> |
This implements the second half of the fix for PR3290, handling loads from allocas that cover the entire aggregate. This handles some memcpy/byval cases that are produced by llvm-gcc. This triggers a few times in kc++ (with std::pair<std::_Rb_tree_const_iterator <kc::impl_abstract_phylum*>,bool>) and once in 176.gcc (with %struct..0anon). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61915 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
d2fa781169175b827e50953a1d0b7edc6b0c4801 |
|
07-Jan-2009 |
Chris Lattner <sabre@nondot.org> |
Implement the first half of PR3290: if there is a store of an integer to a (transitive) bitcast the alloca and if that integer has the full size of the alloca, then it clobbers the whole thing. Handle this by extracting pieces out of the stored integer and filing them away in the SROA'd elements. This triggers fairly frequently because the CFE uses integers to pass small structs by value and the inliner exposes these. For example, in kimwitu++, I see a bunch of these with i64 stores to "%struct.std::pair<std::_Rb_tree_const_iterator<kc::impl_abstract_phylum*>,bool>" In 176.gcc I see a few i32 stores to "%struct..0anon". In the testcase, this is a difference between compiling test1 to: _test1: subl $12, %esp movl 20(%esp), %eax movl %eax, 4(%esp) movl 16(%esp), %eax movl %eax, (%esp) movl (%esp), %eax addl 4(%esp), %eax addl $12, %esp ret vs: _test1: movl 8(%esp), %eax addl 4(%esp), %eax ret The second half of this will be to handle loads of the same form. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61853 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
d93afec1dbbb1abb3df55e2e007b5f256d09f84a |
|
07-Jan-2009 |
Chris Lattner <sabre@nondot.org> |
Factor a bunch of code out into a helper method. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61852 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
cf3218640969175634b82e4e3fde1b9e680a5dc6 |
|
07-Jan-2009 |
Chris Lattner <sabre@nondot.org> |
use continue to simplify code and reduce nesting, no functionality change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61851 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
56c3852fb46b7754ad89b998b5968cff0c3937ee |
|
07-Jan-2009 |
Chris Lattner <sabre@nondot.org> |
Get TargetData once up front and cache as an ivar instead of requerying it all over the place. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61850 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
d356a7ee0ed7744857dcf497cb20b0128770fb0f |
|
07-Jan-2009 |
Chris Lattner <sabre@nondot.org> |
Use the hasAllZeroIndices predicate to simplify some code, no functionality change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61849 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
c0bc547c99bd97088e950b3074d917091abe3f51 |
|
04-Nov-2008 |
Dale Johannesen <dalej@apple.com> |
Allow SROA of vectors. Removing this caused a huge performance regression in something we care about. This may not be final fix. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58718 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
5fac55fafb53fde5c548bcd08e07418e9d8e549f |
|
06-Oct-2008 |
Matthijs Kooijman <matthijs@stdin.nl> |
Allow scalarrepl to treat an all-zero GEP just as bitcast. This includes not marking a GEP involving a vector as unsafe, but only when it has all zero indices. This allows scalarrepl to work in a few more cases. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57177 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
ae73dc1448d25b02cabc7c64c86c64371453dda8 |
|
04-Sep-2008 |
Dan Gohman <gohman@apple.com> |
Tidy up several unbeseeming casts from pointer to intptr_t. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55779 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
88e6dc8bf14e8a98888f62173a6581386b8d29a0 |
|
23-Aug-2008 |
Chris Lattner <sabre@nondot.org> |
Fix PR2423 by checking all indices for out of range access, not only indices that start with an array subscript. x->field[10000] is just as bad as (*X)[14][10000]. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55226 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
2a6a6457094e05e5f5ab34f90dbd25c13d61f8b5 |
|
23-Jun-2008 |
Chris Lattner <sabre@nondot.org> |
minor tidying of comments. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52630 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
963a97f1a365c8d09ca681e922371f9ec3473ee8 |
|
22-Jun-2008 |
Chris Lattner <sabre@nondot.org> |
Fix PR2369 by making scalarrepl more careful about promoting structures. Its default threshold is to promote things that are smaller than 128 bytes, which is sane. However, it is not sane to do this for things that turn into 128 *registers*. Add a cap on the number of registers introduced, defaulting to 128/4=32. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52611 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
02518140ac3310d0357c26a87b2372d85da9c2f4 |
|
05-Jun-2008 |
Matthijs Kooijman <matthijs@stdin.nl> |
Learn ScalarReplAggregrates how stores and loads of first class aggregrates work and how to replace them into individual values. Also, when trying to replace an aggregrate that is used by load or store with a single (large) integer, don't crash (but don't replace the aggregrate either). Also adds a testcase for both structs and arrays. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51997 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
a0fcc08e6542a0376917b5c76a0af3eb2650c535 |
|
04-Jun-2008 |
Duncan Sands <baldrick@free.fr> |
Change packed struct layout so that field sizes are the same as in unpacked structs, only field positions differ. This only matters for structs containing x86 long double or an apint; it may cause backwards compatibility problems if someone has bitcode containing a packed struct with a field of one of those types. The issue is that only 10 bytes are needed to hold an x86 long double: the store size is 10 bytes, but the ABI size is 12 or 16 bytes (linux/ darwin) which comes from rounding the store size up by the alignment. Because it seemed silly not to pack an x86 long double into 10 bytes in a packed struct, this is what was done. I now think this was a mistake. Reserving the ABI size for an x86 long double field even in a packed struct makes things more uniform: the ABI size is now always used when reserving space for a type. This means that developers are less likely to make mistakes. It also makes life easier for the CBE which otherwise could not represent all LLVM packed structs (PR2402). Front-end people might need to adjust the way they create LLVM structs - see following change to llvm-gcc. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51928 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
31e5bdccf29f0ce6172f0f0bbb43a9a736b1ef0c |
|
23-May-2008 |
Dan Gohman <gohman@apple.com> |
Use isSingleValueType instead of isFirstClassType to exclude struct and array types. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51456 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
7cbd8a3e92221437048b484d5ef9c0a22d0f8c58 |
|
16-May-2008 |
Gabor Greif <ggreif@gmail.com> |
API change for {BinaryOperator|CmpInst|CastInst}::create*() --> Create. Legacy interfaces will be in place for some time. (Merge from use-diet branch.) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51200 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
844731a7f1909f55935e3514c9e713a62d67662e |
|
13-May-2008 |
Dan Gohman <gohman@apple.com> |
Clean up the use of static and anonymous namespaces. This turned up several things that were neither in an anonymous namespace nor static but not intended to be global. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51017 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
051a950000e21935165db56695e35bade668193b |
|
06-Apr-2008 |
Gabor Greif <ggreif@gmail.com> |
API changes for class Use size reduction, wave 1. Specifically, introduction of XXX::Create methods for Users that have a potentially variable number of Uses. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49277 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
9d34c4d678cfc836a59a114b7b2cf91e9dd5eac4 |
|
29-Feb-2008 |
Chris Lattner <sabre@nondot.org> |
fix a bug Anders ran into where scalarrepl would crash when promoting a union containing a vector and an array whose elements were smaller than the vector elements. this means we need to compile the load of the array elements into an extract element plus a truncate. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47752 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
800de31776356910eb877e71df9f32b0a6215324 |
|
29-Feb-2008 |
Chris Lattner <sabre@nondot.org> |
Refactor some code out of ConvertUsesToScalar into their own methods, no functionality change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47751 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
916c954bf20f48c3269542fc919ccb92a99496ee |
|
10-Feb-2008 |
Chris Lattner <sabre@nondot.org> |
Fix scalarrepl to not 'miscompile' undefined code, part #2. This fixes the store case, my previous patch just fixed the load case. rdar://5707076. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46932 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
b10e0da065fc2c18b5bee9011eb249e223a23108 |
|
30-Jan-2008 |
Chris Lattner <sabre@nondot.org> |
Fix a bug where scalarrepl would discard offset if type would match. In practice this can only happen on code with already undefined behavior, but this is still a good thing to handle correctly. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46539 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
4ee451de366474b9c228b4e5fa573795a715216d |
|
29-Dec-2007 |
Chris Lattner <sabre@nondot.org> |
Remove attribution from file headers, per discussion on llvmdev. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45418 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
91508a490bc31819d97346083ec02b94eb8d7b27 |
|
06-Nov-2007 |
Duncan Sands <baldrick@free.fr> |
At the point of calculating the shift amount, the type of SV has changed from what it originally was. However we need the store width of the original. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43775 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
18b0ca854fbeebbc48cf1f4473daa428e68f748c |
|
05-Nov-2007 |
Duncan Sands <baldrick@free.fr> |
If a long double is in a packed struct, it may be that there is no padding. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43691 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
3cb3650a278e37aa6378127c51e407d2823139b4 |
|
04-Nov-2007 |
Duncan Sands <baldrick@free.fr> |
Change uses of getTypeSize to getABITypeSize, getTypeStoreSize or getTypeSizeInBits as appropriate in ScalarReplAggregates. The right change to make was not always obvious, so it would be good to have an sroa guru review this. While there I noticed some bugs, and fixed them: (1) arrays of x86 long double have holes due to alignment padding, but this wasn't being spotted by HasStructPadding (renamed to HasPadding). The same goes for arrays of oddly sized ints. Vectors also suffer from this, in fact the problem for vectors is much worse because basic vector assumptions seem to be broken by vectors of type with alignment padding. I didn't try to fix any of these vector problems. (2) The code for extracting smaller integers from larger ones (in the "int union" case) was wrong on big-endian machines for integers with size not a multiple of 8, like i1. Probably this is impossible to hit via llvm-gcc, but I fixed it anyway while there and added a testcase. I also got rid of some trailing whitespace and changed a function name which had an obvious typo in it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43672 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
ef0ab932ef3b07016ffb827cd529d4787d7ed12e |
|
28-Sep-2007 |
Dale Johannesen <dalej@apple.com> |
Don't do SRA for unions with long double fields. Fixes a SWB crash. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42422 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
b8f74793b9d161bc666fe27fc92fe112b6ec169b |
|
04-Sep-2007 |
David Greene <greened@obbligato.org> |
Update GEP constructors to use an iterator interface to fix GLIBCXX_DEBUG issues. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41697 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
b0e71edb6b33f822e001500dac90acf95faacea8 |
|
02-Aug-2007 |
Chris Lattner <sabre@nondot.org> |
Fix an accidental commit. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40758 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
684b22df79c51114a12289e10a4063d5f02259a9 |
|
02-Aug-2007 |
Chris Lattner <sabre@nondot.org> |
wrap some long lines. Major offenders that are left include gvn, gvnpre, dse, and predsimplify. To see these, use: make check-line-length git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40738 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
c2bbfc18e9adbbdcf5b3375d8d25e2452f7df7f1 |
|
01-Aug-2007 |
Dan Gohman <gohman@apple.com> |
More explicit keywords. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40673 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
52eec548206d0b135b55ba52dd0e82e978f15ae5 |
|
01-Aug-2007 |
David Greene <greened@obbligato.org> |
New CallInst interface to address GLIBCXX_DEBUG errors caused by indexing an empty std::vector. Updates to all clients. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40660 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
07a96765daedf180a7102d39fe56c499878312b7 |
|
16-Jul-2007 |
Dan Gohman <gohman@apple.com> |
Fix comments about vectors to use the current wording. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@39921 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
ff366850aa9956e167e78d4f5b57aae10d8c5779 |
|
09-Jul-2007 |
Devang Patel <dpatel@apple.com> |
Expose struct size threhold to allow users to tweak their own setting. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@38472 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
33b0b8d242de8d428f11e77ea734a08b47797216 |
|
06-Jul-2007 |
Zhou Sheng <zhousheng00@gmail.com> |
Correct a typo. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37936 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
326821ef12c911af1d785e305e81dc3c07e456a5 |
|
07-Jun-2007 |
Devang Patel <dpatel@apple.com> |
Use DominatorTree instead of ETForest. This allows faster immediate domiantor walk. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37500 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
39a1c04323a5993d6b2993e615ec44c16e19aeea |
|
30-May-2007 |
Chris Lattner <sabre@nondot.org> |
Fix Transforms/ScalarRepl/2007-05-29-MemcpyPreserve.ll and the second half of PR1421, by not decimating structs with holes that are the source and destination of a memcpy. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37358 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
7139406707eb3869183fd6a3329fe4a77d309692 |
|
24-May-2007 |
Chris Lattner <sabre@nondot.org> |
Fix PR1446 by not scalarrepl'ing giant structures. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37326 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
ecd94c804a563f2a86572dcf1d2e81f397e19daa |
|
06-May-2007 |
Nick Lewycky <nicholas@mxc.ca> |
Fix typo in comment. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36873 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
1997473cf72957d0e70322e2fe6fe2ab141c58a6 |
|
03-May-2007 |
Devang Patel <dpatel@apple.com> |
Drop 'const' git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36662 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
3e15bf33e024b9df9e89351a165acfdb1dde51ed |
|
02-May-2007 |
Devang Patel <dpatel@apple.com> |
Use 'static const char' instead of 'static const int'. Due to darwin gcc bug, one version of darwin linker coalesces static const int, which defauts PassID based pass identification. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36652 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
794fd75c67a2cdc128d67342c6d88a504d186896 |
|
01-May-2007 |
Devang Patel <dpatel@apple.com> |
Do not use typeinfo to identify pass in pass manager. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36632 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
68c01b3cf35bb7ed2d3a3f63053e304e092bcfdd |
|
25-Apr-2007 |
Devang Patel <dpatel@apple.com> |
Mem2Reg does not need TargetData. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36444 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
41968df51e11f581eb19c8f68a8cb2f4e8acc1c5 |
|
25-Apr-2007 |
Devang Patel <dpatel@apple.com> |
Remove unused function argument. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36441 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
79b3bd395dc3303cde65e18e0524ed2f70268c99 |
|
25-Apr-2007 |
Chris Lattner <sabre@nondot.org> |
If an alloca only has two types of uses: 1) reads 2) a memcpy/memmove that copies from a constant global, then we can change the reads to read from the global instead of from the alloca. This eliminates the alloca and the memcpy, and promotes secondary optimizations (because the loads are now loads from a constant global). This is important for a common C idiom: void foo() { int A[] = {1,2,3,4,5,6,7,8,9...}; ... only reads of A ... } For some reason, people forget to mark the array static or const. This triggers on these multisource benchmarks: JM/ldecode: block_pos, [3 x [4 x [4 x i32]]] FreeBench/mason: m, [18 x i32], inlined 4 times MiBench/office-stringsearch: search_strings, [1332 x i8*] MiBench/office-stringsearch: find_strings, [1333 x i8*] Prolangs-C++/city: dirs, [9 x i8*], inlined 4 places and these spec benchmarks: 177.mesa: message, [8 x [32 x i8]] 186.crafty: bias_rl45, [64 x i32] 186.crafty: diag_sq, [64 x i32] 186.crafty: empty, [9 x i8] 186.crafty: xlate, [15 x i8] 186.crafty: status, [13 x i8] 186.crafty: bdinfo, [25 x i8] 445.gobmk: routines, [16 x i8*] 458.sjeng: piece_rep, [14 x i8*] 458.sjeng: t, [13 x i32], inlined 4 places. 464.h264ref: block8x8_idx, [3 x [4 x [4 x i32]]] 464.h264ref: block_pos, [3 x [4 x [4 x i32]]] 464.h264ref: j_off_tab, [12 x i32] This implements Transforms/ScalarRepl/memcpy-from-global.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36429 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
a10b29b84b63c448b7cb423598d3a38b0f55cddb |
|
25-Apr-2007 |
Chris Lattner <sabre@nondot.org> |
refactor the SROA code out into its own method, no functionality change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36426 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
df07335b4648c4cc255343081fdf61319d90431d |
|
20-Apr-2007 |
Owen Anderson <resistor@mac.com> |
Move more passes to using ETForest instead of DominatorTree. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36271 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
843f0767acd05baed952d39e77ea89b438430a4f |
|
19-Apr-2007 |
Zhou Sheng <zhousheng00@gmail.com> |
Make use of ConstantInt::isZero instead of ConstantInt::isNullValue. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36261 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
ab46275683ef76957619623d3dc9adeb33f9c08e |
|
11-Apr-2007 |
Chris Lattner <sabre@nondot.org> |
Fix Transforms/ScalarRepl/union-pointer.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35906 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
ed4e51e58e021384cd6e7a281d13d25dbbee2eca |
|
11-Apr-2007 |
Chris Lattner <sabre@nondot.org> |
fix a regression introduced by my last patch. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35879 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
f4b1818728fb5cb0740cf5362faf72dd66ccf3ea |
|
11-Apr-2007 |
Chris Lattner <sabre@nondot.org> |
Simplify SROA conversion to integer in some ways, make it more general in others. We now tolerate small amounts of undefined behavior, better emulating what would happen if the transaction actually occurred in memory. This fixes SingleSource/UnitTests/2007-04-10-BitfieldTest.c on PPC, at least until Devang gets a chance to fix the CFE from doing undefined things with bitfields :) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35875 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
ecb7a77885b174cf4d001a9b48533b3979e7810d |
|
22-Mar-2007 |
Dan Gohman <gohman@apple.com> |
Change uses of Function::front to Function::getEntryBlock for readability. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35265 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
a9d1a843fc74a9d877e105744e710496863f7580 |
|
19-Mar-2007 |
Chris Lattner <sabre@nondot.org> |
fix ScalarRepl/2007-03-19-CanonicalizeMemcpy.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35169 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
8bf991193245bb8b7e497e8c16545a206fbe5eef |
|
19-Mar-2007 |
Chris Lattner <sabre@nondot.org> |
implement the next chunk of SROA with memset/memcpy's of aggregates. This implements Transforms/ScalarRepl/memset-aggregate-byte-leader.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35150 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
97f9df1cd12bcea2a952304853193bf833214318 |
|
08-Mar-2007 |
Chris Lattner <sabre@nondot.org> |
This appears correct, enable it so we can see perf changes on testers git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35024 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
c14d3cac4bb5c798fbcc4b9cad87841ca087b017 |
|
08-Mar-2007 |
Chris Lattner <sabre@nondot.org> |
Second half of PR1226. This is currently still disabled, until I have a chance to do the correctness/performance analysis testing. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35023 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
372dda8881c7a32a6f5ce0f76a713e3a9ef46ea1 |
|
05-Mar-2007 |
Chris Lattner <sabre@nondot.org> |
This is the first major step of implementing PR1226. We now successfully scalarrepl things down to elements, but mem2reg can't promote elements that are memset/memcpy'd. Until then, the code is disabled "0 &&". git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34924 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
ac9dcb94dde5f166ee29372385c0e3b695227ab4 |
|
15-Feb-2007 |
Reid Spencer <rspencer@reidspencer.com> |
For PR1195: Change use of "packed" term to "vector" in comments, strings, variable names, etc. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34300 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
9d6565a5b1fbc4286d6ee638d8f47a3171a9ed7e |
|
15-Feb-2007 |
Reid Spencer <rspencer@reidspencer.com> |
For PR1195: Rename PackedType -> VectorType, ConstantPacked -> ConstantVector, and PackedTyID -> VectorTyID. No functional changes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34293 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
1ccd185cb49d81465a2901622e58ceae046d1d83 |
|
12-Feb-2007 |
Chris Lattner <sabre@nondot.org> |
stop using methods that take vectors. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34205 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
6934a04a8c15e9971cd1ea4d5c8df2d7afdd5be5 |
|
11-Feb-2007 |
Chris Lattner <sabre@nondot.org> |
Simplify code by using value::takename git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34176 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
b1919e2f08ecb37140af676fd2916f8d5ed7df3d |
|
10-Feb-2007 |
Chris Lattner <sabre@nondot.org> |
Privatize StructLayout::MemberOffsets, adding an accessor git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34156 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
cc46cdb47cd0ba2ddbdfd20573a80084eefa9fba |
|
02-Feb-2007 |
Reid Spencer <rspencer@reidspencer.com> |
Use short form of binary operator create functions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33783 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
832254e1c2387c0cbeb0a820b8315fbe85cb003a |
|
02-Feb-2007 |
Reid Spencer <rspencer@reidspencer.com> |
Changes to support making the shift instructions be true BinaryOperators. This feature is needed in order to support shifts of more than 255 bits on large integer types. This changes the syntax for llvm assembly to make shl, ashr and lshr instructions look like a binary operator: shl i32 %X, 1 instead of shl i32 %X, i8 1 Additionally, this should help a few passes perform additional optimizations. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33776 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
24d6da5fedcf39891f7d8c5b031c01324b3db545 |
|
21-Jan-2007 |
Reid Spencer <rspencer@reidspencer.com> |
For PR970: Clean up handling of isFloatingPoint() and dealing with PackedType. Patch by Gordon Henriksen! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33415 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
c10305743c313558405079452138f03124e87581 |
|
19-Jan-2007 |
Reid Spencer <rspencer@reidspencer.com> |
For PR1043: This is the final patch for this PR. It implements some minor cleanup in the use of IntegerType, to wit: 1. Type::getIntegerTypeMask -> IntegerType::getBitMask 2. Type::Int*Ty changed to IntegerType* from Type* 3. ConstantInt::getType() returns IntegerType* now, not Type* This also fixes PR1120. Patch by Sheng Zhou. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33370 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
42a75517250017a52afb03a0ade03cbd49559fe5 |
|
15-Jan-2007 |
Chris Lattner <sabre@nondot.org> |
rename Type::isIntegral to Type::isInteger, eliminating the old Type::isInteger. rename Type::getIntegralTypeMask to Type::getIntegerTypeMask. This makes naming much more consistent. For example, there are now no longer any instances of IntegerType that are not considered isInteger! :) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33225 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
4d5f508318b2f666ed50a2ed5e49e4aa343a92d6 |
|
15-Jan-2007 |
Chris Lattner <sabre@nondot.org> |
Eliminate calls to isInteger, generalizing code and tightening checks as needed. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33218 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
a54b7cbd452b3adb2f51346140d996b29c2cdb30 |
|
12-Jan-2007 |
Reid Spencer <rspencer@reidspencer.com> |
For PR1064: Implement the arbitrary bit-width integer feature. The feature allows integers of any bitwidth (up to 64) to be defined instead of just 1, 8, 16, 32, and 64 bit integers. This change does several things: 1. Introduces a new Derived Type, IntegerType, to represent the number of bits in an integer. The Type classes SubclassData field is used to store the number of bits. This allows 2^23 bits in an integer type. 2. Removes the five integer Type::TypeID values for the 1, 8, 16, 32 and 64-bit integers. These are replaced with just IntegerType which is not a primitive any more. 3. Adjust the rest of LLVM to account for this change. Note that while this incremental change lays the foundation for arbitrary bit-width integers, LLVM has not yet been converted to actually deal with them in any significant way. Most optimization passes, for example, will still only deal with the byte-width integer types. Future increments will rectify this situation. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33113 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
abaa8ca433a52dc522f6137c01a9552ebec44bb5 |
|
08-Jan-2007 |
Reid Spencer <rspencer@reidspencer.com> |
Comparison of primitive type sizes should now be done in bits, not bytes. This patch converts getPrimitiveSize to getPrimitiveSizeInBits where it is appropriate to do so (comparison of integer primitive types). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33012 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
c5b206b6be61d0d933b98b6af5e22f42edd48ad1 |
|
31-Dec-2006 |
Reid Spencer <rspencer@reidspencer.com> |
For PR950: This patch replaces signed integer types with signless ones: 1. [US]Byte -> Int8 2. [U]Short -> Int16 3. [U]Int -> Int32 4. [U]Long -> Int64. 5. Removal of isSigned, isUnsigned, getSignedVersion, getUnsignedVersion and other methods related to signedness. In a few places this warranted identifying the signedness information from other sources. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32785 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
e4d87aa2de6e52952dca73716386db09aad5a8fd |
|
23-Dec-2006 |
Reid Spencer <rspencer@reidspencer.com> |
For PR950: This patch removes the SetCC instructions and replaces them with the ICmp and FCmp instructions. The SetCondInst instruction has been removed and been replaced with ICmpInst and FCmpInst. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32751 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
add2bd7f5941537a97a41e037ae2277fbeed0b4f |
|
23-Dec-2006 |
Chris Lattner <sabre@nondot.org> |
add a simple fast-path for dead allocas git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32750 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
0e5f499638c8d277b9dc4a4385712177c53b5681 |
|
19-Dec-2006 |
Chris Lattner <sabre@nondot.org> |
Switch over Transforms/Scalar to use the STATISTIC macro. For each statistic converted, we lose a static initializer. This also allows GCC to emit warnings about unused statistics. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32690 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
d22dbdf60652536d44dc4a380059368bea75b5cd |
|
15-Dec-2006 |
Chris Lattner <sabre@nondot.org> |
re-enable a temporarily-reverted patch git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32595 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
21c362d3240d0ba9ff98b7f36e54f25936d1a201 |
|
13-Dec-2006 |
Chris Lattner <sabre@nondot.org> |
revert my recent int<->fp and vector union promotion changes, they expose obscure bugs affecting the X86 code generator. I will reenable this when fixed. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32524 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
a30fc5ed0430081f6495b33e027b7655ca2a66e5 |
|
12-Dec-2006 |
Chris Lattner <sabre@nondot.org> |
Patch for PR1045 and Transforms/ScalarRepl/2006-12-11-SROA-Crash.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32468 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
509f85140ca777a028b87ccdb46bb19b8f052f8b |
|
11-Dec-2006 |
Chris Lattner <sabre@nondot.org> |
trunc to integer, not to FP. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32426 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
1dbea1598ca744084ae42c6c58155b52ab664e42 |
|
11-Dec-2006 |
Chris Lattner <sabre@nondot.org> |
implement promotion of unions containing two packed types of the same width. This implements Transforms/ScalarRepl/union-packed.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32422 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
ae6a30509463a82182d090d2b42623e02c118596 |
|
11-Dec-2006 |
Chris Lattner <sabre@nondot.org> |
* Eliminate calls to CastInst::createInferredCast. * Add support for promoting unions with fp values in them. This produces our new int<->fp bitcast instructions, implementing Transforms/ScalarRepl/union-fp-int.ll As an example, this allows us to compile this: union intfloat { int i; float f; }; float invsqrt(const float arg_x) { union intfloat x = { .f = arg_x }; const float xhalf = arg_x * 0.5f; x.i = 0x5f3759df - (x.i >> 1); return x.f * (1.5f - xhalf * x.f * x.f); } into: _invsqrt: movss 4(%esp), %xmm0 movd %xmm0, %eax sarl %eax movl $1597463007, %ecx subl %eax, %ecx movd %ecx, %xmm1 mulss LCPI1_0, %xmm0 mulss %xmm1, %xmm0 movss LCPI1_1, %xmm2 mulss %xmm1, %xmm0 subss %xmm0, %xmm2 movl 8(%esp), %eax mulss %xmm2, %xmm1 movss %xmm1, (%eax) ret instead of: _invsqrt: subl $4, %esp movss 8(%esp), %xmm0 movss %xmm0, (%esp) movl (%esp), %eax movl $1597463007, %ecx sarl %eax subl %eax, %ecx movl %ecx, (%esp) mulss LCPI1_0, %xmm0 movss (%esp), %xmm1 mulss %xmm1, %xmm0 mulss %xmm1, %xmm0 movss LCPI1_1, %xmm2 subss %xmm0, %xmm2 mulss %xmm2, %xmm1 movl 12(%esp), %eax movss %xmm1, (%eax) addl $4, %esp ret git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32418 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
ac0b6ae358944ae8b2b5a11dc08f52c3ed89f2da |
|
06-Dec-2006 |
Chris Lattner <sabre@nondot.org> |
Detemplatize the Statistic class. The only type it is instantiated with is 'unsigned'. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32279 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
3da59db637a887474c1b1346c1f3ccf53b6c4663 |
|
27-Nov-2006 |
Reid Spencer <rspencer@reidspencer.com> |
For PR950: The long awaited CAST patch. This introduces 12 new instructions into LLVM to replace the cast instruction. Corresponding changes throughout LLVM are provided. This passes llvm-test, llvm/test, and SPEC CPUINT2000 with the exception of 175.vpr which fails only on a slight floating point output difference. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31931 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
b7427031372337e6d67f9573ec6c722ab5ea913e |
|
26-Nov-2006 |
Bill Wendling <isanbard@gmail.com> |
Removed #include <iostream> and replaced with llvm_* streams. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31923 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
3822ff5c71478c7c90a50ca57045fb676fcb5005 |
|
08-Nov-2006 |
Reid Spencer <rspencer@reidspencer.com> |
For PR950: This patch converts the old SHR instruction into two instructions, AShr (Arithmetic) and LShr (Logical). The Shr instructions now are not dependent on the sign of their operands. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31542 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
d92515034fc4157850b981f696702cc2f35733f0 |
|
07-Nov-2006 |
Chris Lattner <sabre@nondot.org> |
scalarrepl should not split the two elements of the vsiidx array: int func(vFloat v0, vFloat v1) { int ii; vSInt32 vsiidx[2]; vsiidx[0] = _mm_cvttps_epi32(v0); vsiidx[1] = _mm_cvttps_epi32(v1); ii = ((int *) vsiidx)[4]; return ii; } This fixes Transforms/ScalarRepl/2006-11-07-InvalidArrayPromote.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31524 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
3ed469ccd7b028a030b550d84b7336d146f5d8fa |
|
02-Nov-2006 |
Reid Spencer <rspencer@reidspencer.com> |
For PR786: Turn on -Wunused and -Wno-unused-parameter. Clean up most of the resulting fall out by removing unused variables. Remaining warnings have to do with unused functions (I didn't want to delete code without review) and unused variables in generated code. Maintainers should clean up the remaining issues when they see them. All changes pass DejaGnu tests and Olden. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31380 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
ae5d51c9c915f93fbf9b3e644a165c96d6b0ddbd |
|
24-Oct-2006 |
Chris Lattner <sabre@nondot.org> |
Fix Transforms/ScalarRepl/2006-10-23-PointerUnionCrash.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31151 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
b83eb6447ba155342598f0fabe1f08f5baa9164a |
|
20-Oct-2006 |
Reid Spencer <rspencer@reidspencer.com> |
For PR950: This patch implements the first increment for the Signless Types feature. All changes pertain to removing the ConstantSInt and ConstantUInt classes in favor of just using ConstantInt. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31063 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
c836333c3b0a18c398436ae00667a8fb5e476129 |
|
09-Oct-2006 |
Chris Lattner <sabre@nondot.org> |
Implement SROA of unions with mixed pointers/integers in them. This implements PR892 and Transforms/ScalarRepl/union-pointer.ll:test2 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30825 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
5b121cc688eacf41b1b773244882d206199dc105 |
|
09-Oct-2006 |
Chris Lattner <sabre@nondot.org> |
Implement Transforms/ScalarRepl/union-pointer.ll:test git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30823 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
7f8897f22e88271cfa114998a4d6088e7c8e8e11 |
|
28-Aug-2006 |
Chris Lattner <sabre@nondot.org> |
eliminate RegisterOpt. It does the same thing as RegisterPass. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29925 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
a4f0b3a084d120cfc5b5bb06f64b222f5cb72740 |
|
27-Aug-2006 |
Chris Lattner <sabre@nondot.org> |
s|llvm/Support/Visibility.h|llvm/Support/Compiler.h| git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29911 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
9525528a7dc5462b6374d38c81ba5c07b11741fe |
|
29-Jun-2006 |
Chris Lattner <sabre@nondot.org> |
Use hidden visibility to make symbols in an anonymous namespace get dropped. This shrinks libllvmgcc.dylib another 67K git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28975 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
df4f226cdcbe853984ddda10aa0d53590d35b97e |
|
20-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
Fix Transforms/ScalarRepl/2006-04-20-PromoteCrash.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27912 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
de6df88529e20541dcfab7824af2eb0776194f01 |
|
14-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
Teach scalarrepl to promote unions of vectors and floats, producing insert/extractelement operations. This implements Transforms/ScalarRepl/vector_promote.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27710 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
25de486263abc1882498a8701e3eb29ee0804c4e |
|
08-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
Fix a miscompilation of 188.ammp with the new CFE. 188.ammp is accessing arrays out of range in a horrible way, but we shouldn't break it anyway. Details in the comments. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26606 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
15256cb14ef340235122750a8d7a6b18baf62ef0 |
|
24-Jan-2006 |
Chris Lattner <sabre@nondot.org> |
Fix Regression/Transforms/ScalarRepl/2006-01-24-IllegalUnionPromoteCrash.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25587 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
dac58ad983c62b49629e1f2969f4e0a621167d63 |
|
23-Jan-2006 |
Chris Lattner <sabre@nondot.org> |
Make iostream #inclusion explicit git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25514 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
6860f6a01ccc71d7cad61de506e0cf8ecb8ca146 |
|
14-Dec-2005 |
Chris Lattner <sabre@nondot.org> |
Fix Transforms/ScalarRepl/2005-12-14-UnionPromoteCrash.ll, a crash on undefined behavior in 126.gcc on big-endian systems. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24708 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
a188894d67a3cc2516b25aae9b3cbdbff4b0babe |
|
12-Dec-2005 |
Chris Lattner <sabre@nondot.org> |
Implement a little hack for parity with GCC on crafty. This speeds up 186.crafty by about 16% (from 15.109s to 13.045s) on my system. This turns allocas with unions/casts into scalars. For example crafty has something like this: union doub { unsigned short i[4]; long long d; }; int f(long long a) { return ((union doub){.d=a}).i[1]; } Instead of generating loads and stores to an alloca, we now promote the whole thing to a scalar long value. This implements: Transforms/ScalarRepl/AggregatePromote.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24667 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
14b0529532904b9e5a1e34526b4a3209f3e5bc62 |
|
05-Nov-2005 |
Nate Begeman <natebegeman@mac.com> |
Add support alignment of allocation instructions. Add support for specifying alignment and size of setjmp jmpbufs. No targets currently do anything with this information, nor is it presrved in the bytecode representation. That's coming up next. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24196 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
fd93908ae8b9684fe71c239e3c6cfe13ff6a2663 |
|
22-Apr-2005 |
Misha Brukman <brukman+llvm@gmail.com> |
Remove trailing whitespace git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21427 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
2cc34627bb870b6a304efe673736fed2f6a63800 |
|
08-Jan-2005 |
Chris Lattner <sabre@nondot.org> |
Silence warnings git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19379 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
96326f9d312585532c95dcc31626f45f16cd5dd8 |
|
15-Nov-2004 |
Reid Spencer <rspencer@reidspencer.com> |
Remove unused variable for compilation by VC++. Patch contributed by Morten Ofstad. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17830 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
d878ecd904e4469344a2274f9784422c2c68b81c |
|
14-Nov-2004 |
Chris Lattner <sabre@nondot.org> |
Teach SROA how to promote an array index that is variable, if the dimension of the array is just two. This occurs 8 times in gcc, 6 times in crafty, and 12 times in 099.go. This implements ScalarRepl/sroa_two.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17727 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
f5990edc877c4e63503c589928a00ec6ec751830 |
|
14-Nov-2004 |
Chris Lattner <sabre@nondot.org> |
Rearrange some code, no functionality changes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17724 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
4b5015604908e9296800991a7c538a255356428f |
|
20-Sep-2004 |
Chris Lattner <sabre@nondot.org> |
Prototype these functions more accurately git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16432 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
551ccae044b0ff658fe629dd67edd5ffe75d10e8 |
|
02-Sep-2004 |
Reid Spencer <rspencer@reidspencer.com> |
Changes For Bug 352 Move include/Config and include/Support into include/llvm/Config, include/llvm/ADT and include/llvm/Support. From here on out, all LLVM public header files must be under include/llvm/. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16137 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
d8e1eea678833cc2b15e4ea69a5a403ba9c3b013 |
|
29-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Fix #includes of i*.h => Instructions.h as per PR403. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15328 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
2fc1230dd68e3f67d36b295adc5168733c412009 |
|
15-Jul-2004 |
Chris Lattner <sabre@nondot.org> |
Fixes working towards PR341 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14839 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
8430a4545c2743568aee94c39e3912795ce463ec |
|
19-Jun-2004 |
Chris Lattner <sabre@nondot.org> |
Do not loop over uses as we delete them. This causes iterators to be invalidated out from under us. This bug goes back to revision 1.1: scary. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14242 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
28977af72a11fcad5d1b54d7a96b3df02828f6fc |
|
05-Apr-2004 |
Chris Lattner <sabre@nondot.org> |
Support getelementptr instructions which use uint's to index into structure types and can have arbitrary 32- and 64-bit integer types indexing into sequential types. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12653 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
d8664730942beb911327336d1f9db8e7efcd6813 |
|
02-Dec-2003 |
Chris Lattner <sabre@nondot.org> |
Finegrainify namespacification Fix regressions ScalarRepl/basictest.ll & arraytest.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10287 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
be883a23ed64b83235d509ad0befc1d6aa6b0cd8 |
|
25-Nov-2003 |
Chris Lattner <sabre@nondot.org> |
Do not use index type to determine what it is indexing into! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10226 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
d0fde30ce850b78371fd1386338350591f9ff494 |
|
11-Nov-2003 |
Brian Gaeke <gaeke@uiuc.edu> |
Put all LLVM code into the llvm namespace, as per bug 109. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9903 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
546fc40d69ce4051b48112aafedd1e41f4a13195 |
|
29-Oct-2003 |
Chris Lattner <sabre@nondot.org> |
Fix PR66 & ScalarRepl/2003-10-29-ArrayProblem.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9585 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
b576c94c15af9a440f69d9d03c2afead7971118c |
|
20-Oct-2003 |
John Criswell <criswell@uiuc.edu> |
Added LLVM project notice to the top of every C++ source file. Header files will be on the way. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9298 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
43f820d1f7638656be2158efac7dd8f5b08b8b77 |
|
05-Oct-2003 |
Chris Lattner <sabre@nondot.org> |
Change the interface to PromoteMemToReg to also take a DominatorTree git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8883 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
02a3be020a6b4eedb4b489959997d23a22cdf22e |
|
20-Sep-2003 |
Chris Lattner <sabre@nondot.org> |
Rename Function::getEntryNode -> getEntryBlock git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8625 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
8fce16ef1abd92c59ab2b02d59e6d16a1c0ba0b7 |
|
12-Sep-2003 |
Chris Lattner <sabre@nondot.org> |
Do not return success after checking only the FIRST USE of a gep instruction. Instead, check all uses. This fixes bug: ScalarRepl/2003-09-12-IncorrectPromote.ll This also fixes the miscompilation of Ptrdist/bc git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8493 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
fe7ea0da17a1b5150aabbc2e82c5f4a0750dc23e |
|
12-Sep-2003 |
Chris Lattner <sabre@nondot.org> |
Minor optimization efficiency improvement: - Run mem2reg promotion first - Only rerun passes if the previous thing changed something git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8490 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
3cfb6b13c0e1d9dee0e35449aa1ac6bd8a0ee906 |
|
11-Sep-2003 |
Misha Brukman <brukman+llvm@gmail.com> |
Apostrophes are only used for possession and quoting. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8473 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
38aec325604635380421a27e39ab06d55ed2458d |
|
11-Sep-2003 |
Chris Lattner <sabre@nondot.org> |
Integrate functionality of the mem2reg pass directly into this pass to make the combination more effective git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8471 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
a15854c9febcb60eb107048640b04abff8cc47e5 |
|
31-Aug-2003 |
Chris Lattner <sabre@nondot.org> |
ScalarRepl does not modify the CFG. Say so! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8243 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
6806f5614d2ec260fda954c951d33f58e77ed610 |
|
02-Aug-2003 |
Chris Lattner <sabre@nondot.org> |
DEBUG got moved to Support/Debug.h git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7492 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
c07736a397012499e337c994f7f952b07c709544 |
|
23-Jul-2003 |
Chris Lattner <sabre@nondot.org> |
Simplify code by using ConstantInt::getRawValue instead of checking to see whether the constant is signed or unsigned, then casting git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7252 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
b37923f9a116fe959de1ff93cca173013e35f3da |
|
30-May-2003 |
Chris Lattner <sabre@nondot.org> |
Okay totally give up on trying to optimize aggregates that cannot be completely broken up into their elements. Too many programs break because of this. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6440 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
26d2ca1d134a8deb91f0246b70024ac1032e544c |
|
30-May-2003 |
Chris Lattner <sabre@nondot.org> |
add a check that allows the SRoA pass to avoid breaking programs, even if their behavior is technically undefined git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6438 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
261d686737989a8d7eff0b0f405515a1565303d9 |
|
30-May-2003 |
Chris Lattner <sabre@nondot.org> |
Fix bug: ScalarRepl/2003-05-30-MultiLevel.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6428 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
5e062a1eda2c4adffd428a35e737a431fc37f4e0 |
|
30-May-2003 |
Chris Lattner <sabre@nondot.org> |
Fix bug: ScalarRepl/2003-05-29-ArrayFail.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6425 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
d10376bee5138d30a290f56ad84a0b26a9752bcc |
|
27-May-2003 |
Chris Lattner <sabre@nondot.org> |
* Actually USE the statistic that we made * Implement SRoA for arrays git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6349 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|
ed7b41ea90a17c826f195acbc456c4bb733113d6 |
|
27-May-2003 |
Chris Lattner <sabre@nondot.org> |
Implementation of the simple "scalar replacement of aggregates" transformation git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6346 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
|