History log of /external/llvm/lib/Transforms/Scalar/EarlyCSE.cpp
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
dce4a407a24b04eebc6a376f8e62b41aaa7b071f 29-May-2014 Stephen Hines <srhines@google.com> Update LLVM for 3.5 rebase (r209712).

Change-Id: I149556c940fb7dc92d075273c87ff584f400941f
36b56886974eae4f9c5ebc96befd3e7bfe5de338 24-Apr-2014 Stephen Hines <srhines@google.com> Update to LLVM 3.5a.

Change-Id: Ifadecab779f128e62e430c2b4f6ddd84953ed617
22647a078301cd4e9533d6d12431c9a4ae7c29ac 11-Sep-2013 Eli Friedman <eli.friedman@gmail.com> Get rid of unused isPodLike definitions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190461 91177308-0d34-0410-b5e6-96231b3b80d8
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
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
39285ab6dd985ecd725a4533460e90048a5297ea 09-Oct-2012 Michael Ilseman <milseman@apple.com> Update EarlyCSE's SimpleValues to use Hashing.h for their hashes. Expanded the hashing and equality to allow for equality modulo commutativity for binary ops, and comparisons with swapping of predicates.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165509 91177308-0d34-0410-b5e6-96231b3b80d8
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
86a1c32e67b23c5e9e42dff9eb86e99ba15bb42f 15-Sep-2012 Craig Topper <craig.topper@gmail.com> Use LLVM_DELETED_FUNCTION in place of 'DO NOT IMPLEMENT' comments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163974 91177308-0d34-0410-b5e6-96231b3b80d8
8e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6 29-Aug-2012 Benjamin Kramer <benny.kra@googlemail.com> Make MemoryBuiltins aware of TargetLibraryInfo.

This disables malloc-specific optimization when -fno-builtin (or -ffreestanding)
is specified. This has been a problem for a long time but became more severe
with the recent memory builtin improvements.

Since the memory builtin functions are used everywhere, this required passing
TLI in many places. This means that functions that now have an optional TLI
argument, like RecursivelyDeleteTriviallyDeadFunctions, won't remove dead
mallocs anymore if the TLI argument is missing. I've updated most passes to do
the right thing.

Fixes PR13694 and probably others.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162841 91177308-0d34-0410-b5e6-96231b3b80d8
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
e0c7cfa7236341110ec20a17d5291a64f5f6b7df 01-Feb-2012 Lenny Maiorani <lenny@colorado.edu> bz11794 : EarlyCSE stack overflow on long functions.
Make the EarlyCSE optimizer not use recursion to do a depth first iteration.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149445 91177308-0d34-0410-b5e6-96231b3b80d8
618c1dbd293d15ee19f61b1156ab8086ad28311a 01-Dec-2011 Chad Rosier <mcrosier@apple.com> Propagate TargetLibraryInfo throughout ConstantFolding.cpp and
InstructionSimplify.cpp. Other fixups as needed.
Part of rdar://10500969

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145559 91177308-0d34-0410-b5e6-96231b3b80d8
18ead6b587159993b340ad4e2e2c5fed76e978c0 13-Oct-2011 Eli Friedman <eli.friedman@gmail.com> Fix a couple hash functions so that they do not depend on undefined shifts. Based on patch by Ahmed Charles.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141820 91177308-0d34-0410-b5e6-96231b3b80d8
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
e508dd4c75705f325764e1197854c0e83266a7ea 04-Jan-2011 Chris Lattner <sabre@nondot.org> Duncan deftly points out that readnone functions aren't
invalidated by stores, so they can be handled as 'simple'

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122785 91177308-0d34-0410-b5e6-96231b3b80d8
10b883b13ff3ad44892758c7a57a435cdb379b45 03-Jan-2011 Chris Lattner <sabre@nondot.org> stength reduce my previous patch a bit. The only instructions
that are allowed to have metadata operands are intrinsic calls,
and the only ones that take metadata currently return void.
Just reject all void instructions, which should not be value
numbered anyway. To future proof things, add an assert to the
getHashValue impl for calls to check that metadata operands
aren't present.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122759 91177308-0d34-0410-b5e6-96231b3b80d8
a12ba39a1d4d22c8c2d348f1397d52be58391177 03-Jan-2011 Chris Lattner <sabre@nondot.org> fix PR8895: metadata operands don't have a strong use of their
nested values, so they can change and drop to null, which can
change the hash and cause havok.

It turns out that it isn't a good idea to value number stuff
with metadata operands anyway, so... don't.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122758 91177308-0d34-0410-b5e6-96231b3b80d8
75637154c38da0243c51f4338137a78849808e50 03-Jan-2011 Chris Lattner <sabre@nondot.org> earlycse can do trivial with-a-block dead store
elimination as well. This deletes 60 stores in 176.gcc
that largely come from bitfield code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122736 91177308-0d34-0410-b5e6-96231b3b80d8
71230acbbe734678b9ced643fa024166413b8824 03-Jan-2011 Chris Lattner <sabre@nondot.org> switch the load table to use a recycling bump pointer allocator,
speeding earlycse up by 6%.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122733 91177308-0d34-0410-b5e6-96231b3b80d8
ef87fc2e0a19c3da55c596244e71e2ad03ae4b43 03-Jan-2011 Chris Lattner <sabre@nondot.org> now that loads are in their own table, we can implement
store->load forwarding. This allows EarlyCSE to zap 600 more
loads from 176.gcc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122732 91177308-0d34-0410-b5e6-96231b3b80d8
85db61066a370f5d6e2d3c667eb5fa02493593c7 03-Jan-2011 Chris Lattner <sabre@nondot.org> split loads and calls into separate tables. Loads are now just indexed
by their pointer instead of using MemoryValue to wrap it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122731 91177308-0d34-0410-b5e6-96231b3b80d8
a60a8b0eb773eabb3ad83e610e737efda525a0da 03-Jan-2011 Chris Lattner <sabre@nondot.org> various cleanups, no functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122729 91177308-0d34-0410-b5e6-96231b3b80d8
8e7f0d70c7dd3864126c746378a7b928d57f971f 03-Jan-2011 Chris Lattner <sabre@nondot.org> Teach EarlyCSE to do trivial CSE of loads and read-only calls.

On 176.gcc, this catches 13090 loads and calls, and increases the
number of simple instructions CSE'd from 29658 to 36208.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122727 91177308-0d34-0410-b5e6-96231b3b80d8
f19745947daafd81d0d3bbdcdc7854053e0231fc 03-Jan-2011 Chris Lattner <sabre@nondot.org> rename InstValue to SimpleValue, add some comments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122725 91177308-0d34-0410-b5e6-96231b3b80d8
82dcd5edd22f017b74ebe98acc07b3a7191e7ff1 03-Jan-2011 Chris Lattner <sabre@nondot.org> Allocate nodes for the scoped hash table from a recyling bump pointer
allocator. This speeds up early cse by about 20%

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122723 91177308-0d34-0410-b5e6-96231b3b80d8
d957c717918c412402157b85fc51b4c6d2631381 03-Jan-2011 Chris Lattner <sabre@nondot.org> reduce redundancy in the hashing code and other misc cleanups.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122720 91177308-0d34-0410-b5e6-96231b3b80d8
67678c8307bca7fa867059669ead579215cda732 03-Jan-2011 Chris Lattner <sabre@nondot.org> fix some pastos

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122718 91177308-0d34-0410-b5e6-96231b3b80d8
91139ccd995149dd0d5e4ab3604d9239e1f90a54 03-Jan-2011 Chris Lattner <sabre@nondot.org> add DEBUG and -stats output to earlycse.
Teach it to CSE the rest of the non-side-effecting instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122716 91177308-0d34-0410-b5e6-96231b3b80d8
cc9eab26b3867fa4a835deb518a6a606882e8f49 03-Jan-2011 Chris Lattner <sabre@nondot.org> Enhance earlycse to do CSE of casts, instsimplify and die.
Add a testcase.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122715 91177308-0d34-0410-b5e6-96231b3b80d8
12be936cc912b1ff4d1c73c7f2c805a3462da1ab 02-Jan-2011 Chris Lattner <sabre@nondot.org> sketch out a new early cse pass. No functionality yet.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122713 91177308-0d34-0410-b5e6-96231b3b80d8