Nick Lewycky
d0b10fefba
Remove warning about declaration does not declare anything. This class was
...
already declared in the other headers.
llvm-svn: 60261
2008-11-30 00:36:34 +00:00
Chris Lattner
adf33d42ed
Eliminate the dropInstruction method, which is not needed any more.
...
Fix a subtle iterator invalidation bug I introduced in the last commit.
llvm-svn: 60258
2008-11-29 23:30:39 +00:00
Nick Lewycky
39e055d2a3
Add protected visibility to libLTO.
...
llvm-svn: 60257
2008-11-29 22:49:59 +00:00
Chris Lattner
6d2b59a58f
implement some fixme's: when deleting an instruction with
...
an entry in the nonlocal deps map, don't reset entries
referencing that instruction to [dirty, null], instead, set
them to [dirty,next] where next is the instruction after the
deleted one. Use this information in the non-local deps
code to avoid rescanning entire blocks.
This speeds up GVN slightly by avoiding pointless work. On
403.gcc this makes GVN 1.5% faster.
llvm-svn: 60256
2008-11-29 22:02:15 +00:00
Chris Lattner
3e86ec7289
Change MemDep::getNonLocalDependency to return its results as
...
a smallvector instead of a DenseMap. This speeds up GVN by 5%
on 403.gcc.
llvm-svn: 60255
2008-11-29 21:33:22 +00:00
Chris Lattner
b19c015a87
move MemoryDependenceAnalysis::verifyRemoved to the end of the file,
...
no functionality/code change.
llvm-svn: 60254
2008-11-29 21:25:10 +00:00
Chris Lattner
ffc1af1619
reimplement getNonLocalDependency with a simpler worklist
...
formulation that is faster and doesn't require nonLazyHelper.
Much less code.
llvm-svn: 60253
2008-11-29 21:22:42 +00:00
Chris Lattner
203a3299e9
don't require GVN to work on dead values, just make the
...
test return the loaded value.
llvm-svn: 60252
2008-11-29 21:21:48 +00:00
Chris Lattner
f3e49f038c
Fix a thinko that manifested as a crash on clamav last night.
...
llvm-svn: 60251
2008-11-29 20:29:04 +00:00
Nick Lewycky
d1de4fbcf0
Fix spelling mistake.
...
llvm-svn: 60250
2008-11-29 20:13:25 +00:00
Chris Lattner
0ac821f149
tidy up some variable names.
...
llvm-svn: 60243
2008-11-29 09:22:14 +00:00
Chris Lattner
5feffd1b9b
rename some maps.
...
llvm-svn: 60242
2008-11-29 09:20:15 +00:00
Chris Lattner
9427fbc5a2
rename some variables.
...
llvm-svn: 60241
2008-11-29 09:15:21 +00:00
Chris Lattner
a0265f808f
eliminate a bunch of code in favor of using AliasAnalysis::getModRefInfo.
...
Put a some code back to handle buggy behavior that GVN expects: it wants
loads to depend on each other, and accesses to depend on their allocations.
llvm-svn: 60240
2008-11-29 09:09:48 +00:00
Torok Edwin
7f54c665a2
protect against negative values that would exceed allowed bit width
...
llvm-svn: 60239
2008-11-29 08:52:45 +00:00
Chris Lattner
98eee41567
simplify some code and rename some variables. Reduce nesting.
...
Use getTypeStoreSize instead of ABITypeSize for in-memory size
in a couple places.
llvm-svn: 60238
2008-11-29 08:51:16 +00:00
Chris Lattner
ce03bccd7e
apparently GCC doesn't believe that I understand C
...
precedence rules. Pacify it.
llvm-svn: 60237
2008-11-29 08:36:39 +00:00
Duncan Sands
845f6467ba
Typo fix.
...
llvm-svn: 60236
2008-11-29 08:03:35 +00:00
Chris Lattner
96c72eef4b
Split getDependency into getDependency and getDependencyFrom, the
...
former does caching, the later doesn't. This dramatically simplifies
the logic in getDependency and getDependencyFrom.
llvm-svn: 60234
2008-11-29 03:47:00 +00:00
Bill Wendling
ed46ffe5c5
Temporarily revert r60195. It's causing an optimized bootstrap of llvm-gcc to fail.
...
llvm-svn: 60233
2008-11-29 03:43:04 +00:00
Chris Lattner
9e956ef129
Now that DepType is private, we can start cleaning up some of its uses:
...
Document the Dirty value more precisely, use it for the uninitialized
DepResultTy value. Change reverse mappings to be from an instruction*
instead of DepResultTy, and stop tracking other forms. This makes it more
clear that we only care about the instruction cases.
Eliminate a DepResultTy,bool pair by using Dirty in the local case as well,
shrinking the map and simplifying the code.
This speeds up GVN by ~3% on 403.gcc.
llvm-svn: 60232
2008-11-29 03:22:12 +00:00
Chris Lattner
6bf62f050c
Introduce and use a new MemDepResult class to hold the results of a memdep
...
query. This makes it crystal clear what cases can escape from MemDep that
the clients have to handle. This also gives the clients a nice simplified
interface to it that is easy to poke at.
This patch also makes DepResultTy and MemoryDependenceAnalysis::DepType
private, yay.
llvm-svn: 60231
2008-11-29 02:29:27 +00:00
Chris Lattner
e9295510b5
Reimplement the internal abstraction used by MemDep in terms
...
of a pointer/int pair instead of a manually bitmangled pointer.
This forces clients to think a little more about checking the
appropriate pieces and will be useful for internal
implementation improvements later.
I'm not particularly happy with this. After going through this
I don't think that the clients of memdep should be exposed to
the internal type at all. I'll fix this in a subsequent commit.
This has no functionality change.
llvm-svn: 60230
2008-11-29 01:43:36 +00:00
Chris Lattner
7ae87447ed
Fix sentinels to use correctly 'aligned' pointers.
...
llvm-svn: 60229
2008-11-29 01:36:16 +00:00
Chris Lattner
070df849e9
Fix spello, add DenseMapInfo specialization for PointerIntPair.
...
llvm-svn: 60228
2008-11-29 01:18:05 +00:00
Chris Lattner
b41c45dbdf
fix comment typo
...
llvm-svn: 60227
2008-11-28 23:57:26 +00:00
Chris Lattner
507e71fce3
fix a bug.
...
llvm-svn: 60225
2008-11-28 23:36:15 +00:00
Chris Lattner
d8b755ed95
add a generic "bitmangled pointer" class, which allows a parameterized
...
pointer and integer type to be used.
llvm-svn: 60224
2008-11-28 23:31:44 +00:00
Chris Lattner
494758e720
Fix PR3141 by ensuring that MemoryDependenceAnalysis::removeInstruction
...
properly updates the reverse dependency map when it installs updated
dependencies for instructions that depend on the removed instruction.
llvm-svn: 60222
2008-11-28 22:51:08 +00:00
Chris Lattner
aedb1385c2
don't revisit instructions off the beginning of the block.
...
llvm-svn: 60221
2008-11-28 22:50:08 +00:00
Chris Lattner
7376e32840
comment cleanups.
...
llvm-svn: 60220
2008-11-28 22:41:36 +00:00
Chris Lattner
219e9af693
more cleanups for MemoryDependenceAnalysis::removeInstruction,
...
no functionality change.
llvm-svn: 60219
2008-11-28 22:28:27 +00:00
Chris Lattner
7b984beb45
random cleanups, no functionality change.
...
llvm-svn: 60218
2008-11-28 22:04:47 +00:00
Chris Lattner
8fc7870ff1
forward declare CallSite instead of #includ'ing it.
...
llvm-svn: 60217
2008-11-28 21:47:19 +00:00
Chris Lattner
ef04ddf87c
Run verifyRemoved from removeInstruction when -debug is specified.
...
This shows the root problem behind PR3141.
llvm-svn: 60216
2008-11-28 21:45:17 +00:00
Chris Lattner
cc3a3c0c98
rename "ping" to "verifyRemoved". I don't know why 'ping' what chosen,
...
but it doesn't make any sense at all.
Also make the method const, private, and fit in 80 cols while we're at it.
llvm-svn: 60215
2008-11-28 21:42:09 +00:00
Chris Lattner
b9ef82dada
comment and indentation improvements.
...
llvm-svn: 60214
2008-11-28 21:36:43 +00:00
Chris Lattner
d7ea2954a7
simplify some code, remove escaped newline.
...
llvm-svn: 60213
2008-11-28 21:29:52 +00:00
Chris Lattner
ad6c575105
remove mysterious escaped newlines.
...
llvm-svn: 60211
2008-11-28 21:16:44 +00:00
Chris Lattner
a854ab3760
don't call MergeBasicBlockIntoOnlyPred on a block whose only
...
predecessor is itself. This doesn't make sense, and this is
a dead infinite loop anyway.
llvm-svn: 60210
2008-11-28 19:54:49 +00:00
Duncan Sands
850748f5de
Add include files needed when building with
...
gcc 4.4 (due to use of sprintf).
llvm-svn: 60209
2008-11-28 10:20:03 +00:00
Duncan Sands
7fd4ea5847
Fix build with gcc-4.4: it doesn't like PICStyle
...
being both a namespace and a variable name.
llvm-svn: 60208
2008-11-28 09:29:37 +00:00
Chris Lattner
1b70ed5140
rewrite RecursivelyDeleteTriviallyDeadInstructions to use a more efficient
...
formulation that doesn't require set lookups or scanning a set.
llvm-svn: 60203
2008-11-28 01:20:46 +00:00
Chris Lattner
b9af105cff
remove some weirdness that came from the LSR code that has
...
nothing to do with dead instruction elimination. No tests in
dejagnu depend on this, so I don't know what it was needed for.
llvm-svn: 60202
2008-11-28 00:58:15 +00:00
Chris Lattner
69e0a27f94
rewrite a big chunk of how DSE does recursive dead operand
...
elimination to use more modern infrastructure. Also do a bunch
of small cleanups.
llvm-svn: 60201
2008-11-28 00:27:14 +00:00
Mikhail Glushenkov
ee55a49632
Scrap some boilerplate.
...
llvm-svn: 60200
2008-11-28 00:14:11 +00:00
Mikhail Glushenkov
cd57fbc9c4
Support multiple compilation graph definitions. Not terribly useful, but makes the code more generic.
...
llvm-svn: 60199
2008-11-28 00:13:47 +00:00
Mikhail Glushenkov
187b171022
Add 'hidden' and 'really_hidden' option properties.
...
llvm-svn: 60198
2008-11-28 00:13:25 +00:00
Mikhail Glushenkov
45f83604cd
Documentation: clarify what is meant by 'multiple edges'.
...
llvm-svn: 60197
2008-11-28 00:12:09 +00:00
Chris Lattner
4486266c9d
delete ErasePossiblyDeadInstructionTree, replacing uses of it with
...
RecursivelyDeleteTriviallyDeadInstructions.
llvm-svn: 60196
2008-11-27 23:25:44 +00:00