Commit Graph

50937 Commits

Author SHA1 Message Date
Chris Lattner a1bbdff933 enhance RecursivelyDeleteTriviallyDeadInstructions to make
PHIs dead if they are single-value.

llvm-svn: 60194
2008-11-27 23:18:11 +00:00
Chris Lattner 1cb4f72706 Enhance RecursivelyDeleteTriviallyDeadInstructions to optionally
return a list of deleted instructions.

llvm-svn: 60193
2008-11-27 23:14:34 +00:00
Chris Lattner 96e2dbe008 use continue to reduce indentation
llvm-svn: 60192
2008-11-27 23:00:20 +00:00
Chris Lattner c6c481cdfc remove doConstantPropagation and dceInstruction, they are just
wrappers around the interesting code and use an obscure iterator
abstraction that dates back many many years.

Move EraseDeadInstructions to Transforms/Utils and name it
RecursivelyDeleteTriviallyDeadInstructions.

llvm-svn: 60191
2008-11-27 22:57:53 +00:00
Chris Lattner 5ef9ebf787 simplify code.
llvm-svn: 60190
2008-11-27 22:56:14 +00:00
Chris Lattner c92fa42ddd simplify this logic.
llvm-svn: 60189
2008-11-27 22:46:09 +00:00
Nick Lewycky edd5d3e4e9 Also update the README.
llvm-svn: 60188
2008-11-27 22:41:45 +00:00
Nick Lewycky 4ab50b93c8 Chris prefers icmp/select over udiv!
llvm-svn: 60187
2008-11-27 22:41:10 +00:00
Nick Lewycky b3dc4ad5b4 Add a synthetic missed optimization.
llvm-svn: 60186
2008-11-27 22:12:22 +00:00
Nick Lewycky 69941fd0a0 Add a couple of missed optimizations on integer vectors. Multiply and divide
by 1, as well as multiply by -1.

llvm-svn: 60182
2008-11-27 20:21:08 +00:00
Chris Lattner e85cb38d5c remove dead diag
llvm-svn: 60181
2008-11-27 19:33:39 +00:00
Chris Lattner 4059f43b74 defensive patch: if CGP is merging a block with the entry block, make sure
it ends up being the entry block.

llvm-svn: 60180
2008-11-27 19:29:14 +00:00
Chris Lattner 5dfbfcd80d Fix PR3138: if we merge the entry block into another block, make sure to
move the other block back up into the entry position!

llvm-svn: 60179
2008-11-27 19:25:19 +00:00
Nick Lewycky 2c96bdd8d6 Silence a warning.
Despite changing the order of evaluation, this doesn't actually change the
meaning of the statement.

llvm-svn: 60177
2008-11-27 17:29:52 +00:00
Nuno Lopes 50343cd2fe fix build on some machines. thanks buildbot
llvm-svn: 60175
2008-11-27 16:42:44 +00:00
Nuno Lopes d5c2a144e1 fix my previous commit r60064: compare strings instead of pointers
llvm-svn: 60174
2008-11-27 16:37:02 +00:00
Chris Lattner e0d019def6 switch InstCombine::visitLoadInst to use
FindAvailableLoadedValue

llvm-svn: 60169
2008-11-27 08:56:30 +00:00
Chris Lattner 378b041f03 improve const correctness.
llvm-svn: 60168
2008-11-27 08:39:18 +00:00
Chris Lattner c6ae56d23f enhance FindAvailableLoadedValue to make use of AliasAnalysis
if it has it.

llvm-svn: 60167
2008-11-27 08:18:12 +00:00
Chris Lattner 72f16e70f0 move FindAvailableLoadedValue from JumpThreading to Transforms/Utils.
llvm-svn: 60166
2008-11-27 08:10:05 +00:00
Bill Wendling c6075401c2 Get rid of bogus "control may reach end of non-void function ‘...’ being
inlined" message.

llvm-svn: 60165
2008-11-27 08:00:12 +00:00
Chris Lattner d6204bed3d simplify this code a bit.
llvm-svn: 60164
2008-11-27 07:54:38 +00:00
Chris Lattner 206250284d Use the new MergeBasicBlockIntoOnlyPred function.
llvm-svn: 60163
2008-11-27 07:54:12 +00:00
Chris Lattner 99d6809ac1 move MergeBasicBlockIntoOnlyPred to Transforms/Utils.
llvm-svn: 60162
2008-11-27 07:43:12 +00:00
Bill Wendling 077eb6fcc2 XFAil test due to reverting of patch.
llvm-svn: 60161
2008-11-27 07:34:10 +00:00
Sebastian Redl 3ceaf62240 Fix order of evaluation.
llvm-svn: 60160
2008-11-27 07:28:14 +00:00
Chris Lattner 240051aace rename ThreadBlock to ProcessBlock, since it does other things than
just simple threading.

llvm-svn: 60157
2008-11-27 07:20:04 +00:00
Bill Wendling 128f032cc8 Comment out code that isn't entirely correct.
llvm-svn: 60156
2008-11-27 07:18:35 +00:00
Misha Brukman c9813bda47 Fixed HTML closing tag, cleaned up some spacing.
llvm-svn: 60153
2008-11-27 06:41:20 +00:00
Zhongxing Xu 7b3d3d3ee1 ImmutableList::getInternalPointer() returns a const ImmutableListImpl<T>* pointer, which must be converted to void* explicitly.
llvm-svn: 60152
2008-11-27 06:32:54 +00:00
Zhongxing Xu 59e2d41a8e Factory objects should not be temporary. It caches all objects in the set.
llvm-svn: 60151
2008-11-27 06:08:40 +00:00
Zhongxing Xu b670f294c9 RegionViewMap factory is actually not used. All GDMs should use factories from
GDMContext.

llvm-svn: 60150
2008-11-27 06:03:03 +00:00
Sanjiv Gupta 7ae1a84465 Removing redundant semicolons. No functionality change.
llvm-svn: 60149
2008-11-27 05:58:04 +00:00
Chris Lattner 98d89d1b1b Make jump threading substantially more powerful, in the following ways:
1. Make it fold blocks separated by an unconditional branch.  This enables
   jump threading to see a broader scope.
2. Make jump threading able to eliminate locally redundant loads when they
   feed the branch condition of a block.  This frequently occurs due to
   reg2mem running.
3. Make jump threading able to eliminate *partially redundant* loads when
   they feed the branch condition of a block.  This is common in code with
   lots of loads and stores like C++ code and 255.vortex.

This implements thread-loads.ll and rdar://6402033.

Per the fixme's, several pieces of this should be moved into Transforms/Utils.

llvm-svn: 60148
2008-11-27 05:07:53 +00:00
Daniel Dunbar e9095f55c7 Test commit.
llvm-svn: 60147
2008-11-27 03:47:29 +00:00
Zhongxing Xu b94f440754 Add comments.
llvm-svn: 60146
2008-11-27 02:39:34 +00:00
Evan Cheng b133907e61 Eliminate a compile time warning.
llvm-svn: 60145
2008-11-27 02:29:25 +00:00
Zhongxing Xu 2d311e8354 Add license comments.
llvm-svn: 60144
2008-11-27 02:19:10 +00:00
Zhongxing Xu 16e3f0e03f Add support for pluggable components of static analyzer.
- Creator function pointers are saved in ManagerRegistry.
 - The Register* class is used to notify ManagerRegistry new module is 
   available.
 - AnalysisManager queries ManagerRegistry for configurable module. Then it
   passes them to GRExprEngine, in turn to GRStateManager.

llvm-svn: 60143
2008-11-27 01:55:08 +00:00
Douglas Gregor a29dc05eaf Add implicit conversions for Objective-C qualified ids, e.g.,
id<P0>

The intended overloading behavior of these entities isn't entirely
clear, and GCC seems to have some strange limitations (e.g., the
inability to overload on id<P0> vs. id<P1>). We'll want to revisit
these semantics and determine just how Objective-C++ overloading
should really work.

llvm-svn: 60142
2008-11-27 01:19:21 +00:00
Evan Cheng 3761143755 Avoid inserting noop's in the middle of a loop.
llvm-svn: 60141
2008-11-27 01:16:00 +00:00
Douglas Gregor bb9bf88fa4 Cleanup formatting
llvm-svn: 60140
2008-11-27 00:52:49 +00:00
Evan Cheng 83bdb38965 On x86 favors folding short immediate into some arithmetic operations (e.g. add, and, xor, etc.) because materializing an immediate in a register is expensive in turns of code size.
e.g.
movl 4(%esp), %eax
addl $4, %eax

is 2 bytes shorter than

movl $4, %eax
addl 4(%esp), %eax

llvm-svn: 60139
2008-11-27 00:49:46 +00:00
Douglas Gregor e7dd145c02 Don't complain about block pointer to void* conversions
llvm-svn: 60138
2008-11-27 00:44:28 +00:00
Dale Johannesen 73bc0ba4c9 Add a missing case in visitADD.
llvm-svn: 60137
2008-11-27 00:43:21 +00:00
Ted Kremenek 1f50dc899f PTHLexer now owns the Token vector.
llvm-svn: 60136
2008-11-27 00:38:24 +00:00
Evan Cheng d1dda5339d Add -march=x86.
llvm-svn: 60135
2008-11-27 00:37:06 +00:00
Ted Kremenek 143b058a8e Add typedef to StringMapEntry.
llvm-svn: 60134
2008-11-27 00:17:25 +00:00
Douglas Gregor 231d1c6f8f Support block pointer conversions in C++. I'm storing the test case locally until we can enable blocks in C++
llvm-svn: 60133
2008-11-27 00:15:41 +00:00
Ted Kremenek b1ef37589c - Enhance PTH generation to write out IdentifierInfo table in two parts:
- a table including the IdentifierInfo data
  - an index from persistent IdentifierInfo IDs to indices within this file.
- Enhance PTH generation to write out file map information, mapping inodes to tokens.

llvm-svn: 60132
2008-11-26 23:58:26 +00:00