|  | Commit message (Collapse) | Author | Age | Files | Lines | 
|---|
| | 
| 
| 
| | llvm-svn: 42048 | 
| | 
| 
| 
| 
| 
| 
| | Add a new DenseMapInfo::isEqual method to allow clients to redefine
the equality predicate used when probing the hash table.
llvm-svn: 42042 | 
| | 
| 
| 
| | llvm-svn: 41713 | 
| | 
| 
| 
| 
| 
| | GLIBCXX_DEBUG issues.
llvm-svn: 41697 | 
| | 
| 
| 
| | llvm-svn: 41676 | 
| | 
| 
| 
| | llvm-svn: 41506 | 
| | 
| 
| 
| 
| 
| 
| 
| | setjmp/longjmp properly.
This fixes PR1520.
llvm-svn: 41461 | 
| | 
| 
| 
| | llvm-svn: 41207 | 
| | 
| 
| 
| 
| 
| | branch is not necessary immediate dominators of merge blcok in all cases.
llvm-svn: 41144 | 
| | 
| 
| 
| | llvm-svn: 41091 | 
| | 
| 
| 
| | llvm-svn: 41051 | 
| | 
| 
| 
| | llvm-svn: 40997 | 
| | 
| 
| 
| | llvm-svn: 40859 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | In the old way, we computed and inserted phi nodes for the whole IDF of 
the definitions of the alloca, then computed which ones were dead and
removed them.
In the new method, we first compute the region where the value is live,
and use that information to only insert phi nodes that are live.  This
eliminates the need to compute liveness later, and stops the algorithm
from inserting a bunch of phis which it then later removes.
This speeds up the testcase in PR1432 from 2.00s to 0.15s (14x) in a
release build and 6.84s->0.50s (14x) in a debug build.
llvm-svn: 40825 | 
| | 
| 
| 
| | llvm-svn: 40824 | 
| | 
| 
| 
| 
| 
| | measurable speedup.
llvm-svn: 40823 | 
| | 
| 
| 
| 
| 
| 
| | to the worklist, and handling the last one with a 'tail call'.  This speeds
up PR1432 from 2.0578s to 2.0012s (2.8%)
llvm-svn: 40822 | 
| | 
| 
| 
| 
| 
| | mem2reg from 2.0742->2.0522s on PR1432.
llvm-svn: 40821 | 
| | 
| 
| 
| | llvm-svn: 40820 | 
| | 
| 
| 
| | llvm-svn: 40819 | 
| | 
| 
| 
| 
| 
| 
| | faster than with the 'local to a block' fastpath.  This speeds
up PR1432 from 2.1232 to 2.0686s (2.6%)
llvm-svn: 40818 | 
| | 
| 
| 
| 
| 
| 
| | to increment NumLocalPromoted, and didn't actually delete the
dead alloca, leading to an extra iteration of mem2reg.
llvm-svn: 40817 | 
| | 
| 
| 
| | llvm-svn: 40816 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| | stored value was a non-instruction value.  Doh.
This increase the # single store allocas from 8982 to 9026, and
speeds up mem2reg on the testcase in PR1432 from 2.17 to 2.13s.
llvm-svn: 40813 | 
| | 
| 
| 
| 
| 
| 
| 
| | and the alloca so they don't get reprocessed.
This speeds up PR1432 from 2.20s to 2.17s.
llvm-svn: 40812 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | 1. Check for revisiting a block before checking domination, which is faster.
  2. If the stored value isn't an instruction, we don't have to check for domination.
  3. If we have a value used in the same block more than once, make sure to remove the
     block from the UsingBlocks vector.  Not doing so forces us to go through the slow
     path for the alloca.
The combination of these improvements increases the number of allocas on the fastpath
from 8935 to 8982 on PR1432.  This speeds it up from 2.90s to 2.20s (31%)
llvm-svn: 40811 | 
| | 
| 
| 
| 
| 
| | testcase in PR1432 from 6.33s to 2.90s (2.22x)
llvm-svn: 40810 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| | a using block from the list if we handle it.  Not doing this caused us
to not be able to promote (with the fast path) allocas which have uses (whoops).
This increases the # allocas hitting this fastpath from 4042 to 8935 on the
testcase in PR1432, speeding up mem2reg by 2.6x
llvm-svn: 40809 | 
| | 
| 
| 
| 
| 
| | method.
llvm-svn: 40806 | 
| | 
| 
| 
| | llvm-svn: 40805 | 
| | 
| 
| 
| | llvm-svn: 40804 | 
| | 
| 
| 
| 
| 
| | in PR1432 by 6%
llvm-svn: 40803 | 
| | 
| 
| 
| | llvm-svn: 40802 | 
| | 
| 
| 
| | llvm-svn: 40673 | 
| | 
| 
| 
| 
| 
| 
| 
| | indexing an empty std::vector.
Updates to all clients.
llvm-svn: 40660 | 
| | 
| 
| 
| | llvm-svn: 40604 | 
| | 
| 
| 
| | llvm-svn: 40560 | 
| | 
| 
| 
| 
| 
| 
| | to Instruction::mayWriteToMemory, fixing a FIXME, and helping
various places that call mayWriteToMemory directly.
llvm-svn: 40533 | 
| | 
| 
| 
| 
| 
| 
| | This interface allows clients to inline bunch of functions with module
level call graph information.:wq
llvm-svn: 40486 | 
| | 
| 
| 
| | llvm-svn: 40062 | 
| | 
| 
| 
| 
| 
| 
| 
| | second part dominates all the blocks dominated
by original basic block. And first part dominates
second part.
llvm-svn: 40035 | 
| | 
| 
| 
| | llvm-svn: 40034 | 
| | 
| 
| 
| 
| 
| 
| 
| | llvm-gcc build to succeed. Without this change it fails in libstdc++
compilation. This causes no regressions in dejagnu tests. However, 
someone who knows this code better might want to review it.
llvm-svn: 39924 | 
| | 
| 
| 
| | llvm-svn: 39921 | 
| | 
| 
| 
| | llvm-svn: 39844 | 
| | 
| 
| 
| | llvm-svn: 39744 | 
| | 
| 
| 
| | llvm-svn: 38505 | 
| | 
| 
| 
| | llvm-svn: 37952 | 
| | 
| 
| 
| 
| 
| | by _GLIBCXX_DEBUG.
llvm-svn: 37796 | 
| | 
| 
| 
| 
| 
| | from LoopSimplify.cpp to Dominator.cpp
llvm-svn: 37689 |