Andrew Lenharth
c3cff44880
move calltarget to dsa
...
llvm-svn: 28546
2006-05-29 23:39:48 +00:00
Andrew Lenharth
e465381401
Since there was interest on the mailing list, this is a utility pass that
...
uses DSA to make find targets of calls. It provides a very convinient
interface to DSA results to do things with indirect calls, such as
write a devirtualizer (which I have and may commit one of these days).
llvm-svn: 28545
2006-05-29 22:58:38 +00:00
Chris Lattner
aa2372562e
Patches to make the LLVM sources more -pedantic clean. Patch provided
...
by Anton Korobeynikov! This is a step towards closing PR786.
llvm-svn: 28447
2006-05-24 17:04:05 +00:00
Chris Lattner
ce9ac0cdab
Remove dead variable
...
llvm-svn: 28249
2006-05-12 17:41:45 +00:00
Chris Lattner
e8cbdbf314
Implement Transforms/IndVarsSimplify/complex-scev.ll, a case where we didn't
...
recognize some simple affine IV's.
llvm-svn: 27982
2006-04-26 18:34:07 +00:00
Andrew Lenharth
3c775bcd86
slightly more useful error message
...
llvm-svn: 27971
2006-04-25 19:33:41 +00:00
Andrew Lenharth
f5a713d273
better c99 struct handling
...
llvm-svn: 27970
2006-04-25 19:33:23 +00:00
Andrew Lenharth
02f9df3b7b
Another simple case type merge case to try
...
llvm-svn: 27831
2006-04-19 15:34:34 +00:00
Andrew Lenharth
edf349aba6
deal with memchr
...
llvm-svn: 27830
2006-04-19 15:34:02 +00:00
Andrew Lenharth
7f2cee3d3e
friendlier error message
...
llvm-svn: 27829
2006-04-19 15:33:35 +00:00
Andrew Lenharth
7c8be502e9
stupid stuff
...
llvm-svn: 27821
2006-04-19 03:45:25 +00:00
Andrew Lenharth
3e642d012a
I understand now. Shoot.
...
llvm-svn: 27819
2006-04-18 22:36:11 +00:00
Andrew Lenharth
f70cb84083
llvm.memc* improvements. helps PA a lot in some specmarks
...
llvm-svn: 27812
2006-04-18 20:59:52 +00:00
Andrew Lenharth
49e188d7f7
llvm.memc* improvements. helps PA a lot in some specmarks
...
llvm-svn: 27811
2006-04-18 19:54:11 +00:00
Chris Lattner
68c650ca45
Implement value #'ing for vector operations, implementing
...
Regression/Transforms/GCSE/vectorops.ll
llvm-svn: 27691
2006-04-14 05:10:20 +00:00
Andrew Lenharth
4aa3001625
Handle some kernel code than ends in [0 x sbyte]. I think this is safe
...
llvm-svn: 27672
2006-04-13 19:31:49 +00:00
Andrew Lenharth
477169e36a
Move this to lib/Analysis.
...
This reduces Core size, yay.
llvm-svn: 27468
2006-04-06 22:58:58 +00:00
Andrew Lenharth
8f321af723
revert this, this is safe, if conservative. leave a note to that effect
...
llvm-svn: 27428
2006-04-05 02:42:36 +00:00
Chris Lattner
6b2c9748c3
Signed shr by a constant is not the same as sdiv by 2^k
...
llvm-svn: 27395
2006-04-04 06:11:42 +00:00
Chris Lattner
98e9604d5d
Fix Transforms/IndVarsSimplify/2006-03-31-NegativeStride.ll and
...
PR726 by performing consistent signed division, not consistent unsigned
division when evaluating scev's. Do not touch udivs.
llvm-svn: 27326
2006-04-01 04:48:52 +00:00
Andrew Lenharth
d7e612bbc4
If adding a link to a collapsed, node, ignore offset.
...
Fixes 2006-03-27-LinkedCollapsed.ll
llvm-svn: 27194
2006-03-27 23:39:58 +00:00
Andrew Lenharth
b3dae7cfa9
no heap is happening here
...
llvm-svn: 26781
2006-03-15 19:03:16 +00:00
Andrew Lenharth
c0b65305f1
remove qsort for now
...
llvm-svn: 26779
2006-03-15 18:32:18 +00:00
Andrew Lenharth
fb4df2055f
allow field sensitivity to be a tunable parameter
...
llvm-svn: 26777
2006-03-15 05:43:41 +00:00
Andrew Lenharth
3196422df0
Handle one offset with growth case seen in povray. Namely, if we have an offset,
...
and the offset lands at a field boundary in the old type, construct a new type,
copying the fields masked by the offset from the old type, and unify with that.
llvm-svn: 26775
2006-03-15 04:04:21 +00:00
Andrew Lenharth
c254e5b180
improve mem intrinsics and add a few things povray uses
...
llvm-svn: 26774
2006-03-15 03:43:59 +00:00
Nate Begeman
d5811b965d
Fix PR681 by using the standard Lengauer and Tarjan algorithm for dominator
...
set construction, rather than intersecting various std::sets. This reduces
the memory usage for the testcase in PR681 from 496 to 26MB of ram on my
darwin system, and reduces the runtime from 32.8 to 0.8 seconds on a
2.5GHz G5. This also enables future code sharing between Dom and PostDom
now that they share near-identical implementations.
llvm-svn: 26707
2006-03-11 02:20:46 +00:00
Chris Lattner
bb40a9fa58
Use autogenerated mod/ref info for intrinsics.
...
llvm-svn: 26670
2006-03-09 22:31:29 +00:00
Chris Lattner
3e19c23765
Fix a crash compiling Obsequi
...
llvm-svn: 26529
2006-03-04 21:48:01 +00:00
Chris Lattner
071faf25e0
Be more conservative with our symbolic alias analysis. In particular,
...
don't assume that A[1][0] and A[0][i] can't alias. "i" might be out of
range, or even negative. This fixes a miscompilation of 188.ammp (which
does bad pointer tricks) with the new CFE.
Testcase here: Analysis/BasicAA/2006-03-03-BadArraySubscript.ll
llvm-svn: 26515
2006-03-04 02:06:34 +00:00
Chris Lattner
bce2626d8a
updates for recent changes
...
llvm-svn: 26481
2006-03-03 01:21:36 +00:00
Chris Lattner
093c159efb
Split memcpy/memset/memmove intrinsics into i32/i64 versions, resolving
...
PR709, and paving the way for future progress.
llvm-svn: 26476
2006-03-03 00:00:25 +00:00
Chris Lattner
94f936d8ef
add an assert
...
llvm-svn: 26178
2006-02-14 20:14:17 +00:00
Chris Lattner
a6da69cab0
Pull the InsertCastOfTo out of the header, implement CSE'ing of arguments.
...
llvm-svn: 25973
2006-02-04 09:51:53 +00:00
Chris Lattner
b6a1865bca
Value# select instructions, allowing -gcse to remove duplicates
...
llvm-svn: 25969
2006-02-04 09:15:29 +00:00
Chris Lattner
6806c02380
Add explicit iostream #includes
...
llvm-svn: 25513
2006-01-22 23:19:18 +00:00
Chris Lattner
469640e506
Add explicit #includes of <iostream>
...
llvm-svn: 25509
2006-01-22 22:53:01 +00:00
Reid Spencer
b4f9a6f110
For PR411:
...
This patch is an incremental step towards supporting a flat symbol table.
It de-overloads the intrinsic functions by providing type-specific intrinsics
and arranging for automatically upgrading from the old overloaded name to
the new non-overloaded name. Specifically:
llvm.isunordered -> llvm.isunordered.f32, llvm.isunordered.f64
llvm.sqrt -> llvm.sqrt.f32, llvm.sqrt.f64
llvm.ctpop -> llvm.ctpop.i8, llvm.ctpop.i16, llvm.ctpop.i32, llvm.ctpop.i64
llvm.ctlz -> llvm.ctlz.i8, llvm.ctlz.i16, llvm.ctlz.i32, llvm.ctlz.i64
llvm.cttz -> llvm.cttz.i8, llvm.cttz.i16, llvm.cttz.i32, llvm.cttz.i64
New code should not use the overloaded intrinsic names. Warnings will be
emitted if they are used.
llvm-svn: 25366
2006-01-16 21:12:35 +00:00
Chris Lattner
c020bcf850
Change ET-Forest to automatically recalculate its DFSnum's if too many slow
...
queries are made.
Patch by Daniel Berlin!
llvm-svn: 25323
2006-01-14 20:55:09 +00:00
Chris Lattner
00ca8d2de8
Add a new CallGraph::getOrInsertFunction for clients to use when updating
...
the callgraph.
llvm-svn: 25317
2006-01-14 20:03:00 +00:00
Chris Lattner
bc351e171f
add a dump method to CallGraph
...
llvm-svn: 25314
2006-01-14 19:17:02 +00:00
Nate Begeman
82049eba2c
Add bswap intrinsics as documented in the Language Reference
...
llvm-svn: 25309
2006-01-14 01:25:24 +00:00
Chris Lattner
9db9f8a902
Switch loopinfo to using ETForest instead of DominatorSet to compute itself.
...
Patch by Daniel Berlin!
llvm-svn: 25199
2006-01-11 05:08:29 +00:00
Reid Spencer
cfc60f3484
Remove unused inclusion of SymbolTable.h
...
llvm-svn: 25170
2006-01-10 03:48:34 +00:00
Chris Lattner
a60738316e
Fix a problem exposed by the et-forest work. Load-vn needs these passes live
...
whenever it is live, not just when load-vn is computed initially
llvm-svn: 25146
2006-01-08 09:10:04 +00:00
Chris Lattner
6c9cbdba1a
Initial implementation of the ET-Forest data structure for dominators and
...
post-dominators. This code was written/adapted by Daniel Berlin!
llvm-svn: 25144
2006-01-08 08:22:18 +00:00
Chris Lattner
44497859f9
Make the -print-alias-sets pass work for printing out something other than
...
the default aa impl results.
llvm-svn: 25062
2006-01-03 06:05:22 +00:00
Chris Lattner
be19877731
Separate the call graph implementation from its interface. This implements
...
the rough idea sketched out in http://nondot.org/sabre/LLVMNotes/CallGraphClass.txt ,
allowing new spiffy implementations of the callgraph interface to be built.
Many thanks to Saem Ghani for contributing this!
llvm-svn: 24944
2005-12-22 06:07:52 +00:00
John Criswell
757035ead9
Prefix DSA specific options with dsa.
...
Make the dsa-alloc-list and dsa-free-list options hidden.
llvm-svn: 24864
2005-12-19 20:14:38 +00:00
John Criswell
45bb70d8f9
Added an option to specify the names of heap freeing functions.
...
llvm-svn: 24863
2005-12-19 19:54:23 +00:00
John Criswell
aa0fed0148
Added a command line option that allows the user to specify a list of
...
functions that allocate memory.
llvm-svn: 24862
2005-12-19 17:38:39 +00:00
Sumant Kowshik
a69fcbdeb8
Collapsing node if variable length struct with final field of length zero
...
llvm-svn: 24621
2005-12-06 18:04:30 +00:00
Chris Lattner
b14c41378d
post-dom-frontiers requires proper post-dominance
...
llvm-svn: 24409
2005-11-18 07:28:26 +00:00
Andrew Lenharth
5278ca3fa2
prevent cse of readcyclecounter
...
llvm-svn: 24303
2005-11-11 19:02:54 +00:00
Andrew Lenharth
01aa56397d
continued readcyclecounter support
...
llvm-svn: 24300
2005-11-11 16:47:30 +00:00
Chris Lattner
f0b77f9acc
Fix a problem that Nate noticed with LSR:
...
When inserting code for an addrec expression with a non-unit stride, be
more careful where we insert the multiply. In particular, insert the multiply
in the outermost loop we can, instead of the requested insertion point.
This allows LSR to notice the mul in the right loop, reducing it when it gets
to it. This allows it to reduce the multiply, where before it missed it.
This happens quite a bit in the test suite, for example, eliminating 2
multiplies in art, 3 in ammp, 4 in apsi, reducing from 1050 multiplies to
910 muls in galgel (!), from 877 to 859 in applu, and 36 to 30 in bzip2.
This speeds up galgel from 16.45s to 16.01s, applu from 14.21 to 13.94s and
fourinarow from 66.67s to 63.48s.
This implements Transforms/LoopStrengthReduce/nested-reduce.ll
llvm-svn: 24102
2005-10-30 06:24:33 +00:00
Chris Lattner
21193ac3c0
remove a dead file
...
llvm-svn: 24085
2005-10-29 04:43:38 +00:00
John Criswell
970af11af8
Move some constant folding functions into LLVMAnalysis since they are used
...
by Analysis and Transformation passes.
llvm-svn: 24038
2005-10-27 16:00:10 +00:00
John Criswell
fe5f33b120
Move some constant folding code shared by Analysis and Transform passes
...
into the LLVMAnalysis library.
This allows LLVMTranform and LLVMTransformUtils to be archives and linked
with LLVMAnalysis.a, which provides any missing definitions.
llvm-svn: 24036
2005-10-27 15:54:34 +00:00
Chris Lattner
90b0c99066
Remove this pass, it is not useful
...
llvm-svn: 23949
2005-10-24 02:35:43 +00:00
Chris Lattner
bde3845548
DONT_BUILD_RELINKED is gone and implied by BUILD_ARCHIVE now
...
llvm-svn: 23940
2005-10-24 02:26:13 +00:00
Chris Lattner
8c087e962c
Only build .a file versions of these libraries, instead of .a and .o versions.
...
This should speed up build times.
llvm-svn: 23933
2005-10-24 01:59:48 +00:00
Chris Lattner
8df7c01299
don't bother building the archive version of this library
...
llvm-svn: 23927
2005-10-24 01:08:20 +00:00
Chris Lattner
ca014adf8e
expose a ctor
...
llvm-svn: 23924
2005-10-24 01:00:45 +00:00
Chris Lattner
75d4f6fbcb
implement some prototypes
...
llvm-svn: 23920
2005-10-24 00:38:38 +00:00
Chris Lattner
b45e57c2dd
move this to the analyze tool
...
llvm-svn: 23918
2005-10-24 00:27:36 +00:00
Chris Lattner
cd002b2461
wrap a long line
...
llvm-svn: 23507
2005-09-28 22:30:58 +00:00
Chris Lattner
b35df5f5bc
Add a new getLoopLatch() method.
...
llvm-svn: 23315
2005-09-12 17:03:55 +00:00
Chris Lattner
898e50ecb3
floor/ceil don't read/write memory. This allows gcse to eliminate 6 calls
...
in mesa.
llvm-svn: 23015
2005-08-24 16:58:56 +00:00
Chris Lattner
e515416396
Fix Transforms/LoopStrengthReduce/2005-08-15-AddRecIV.ll
...
llvm-svn: 22797
2005-08-16 00:37:01 +00:00
Chris Lattner
587a75b6e0
Teach LLVM to know how many times a loop executes when constructed with
...
a < expression, e.g.: for (i = m; i < n; ++i)
llvm-svn: 22793
2005-08-15 23:33:51 +00:00
Chris Lattner
35c0e2ee33
Fix an obvious oops
...
llvm-svn: 22742
2005-08-10 00:59:40 +00:00
Chris Lattner
b310ac4a86
implement two helper methods
...
llvm-svn: 22736
2005-08-09 23:36:33 +00:00
Misha Brukman
41acd5e08d
* Unbreak optimized build (noticed by Eric van Riet Paap)
...
* Comment #endif clauses for readability
llvm-svn: 22646
2005-08-04 14:16:48 +00:00
Chris Lattner
590642eb91
add support for Graphviz when viewing CFGs
...
llvm-svn: 22620
2005-08-03 17:55:05 +00:00
Nate Begeman
2bca4d9b7b
Break SCEVExpander out of IndVarSimplify into its own .h/.cpp file so that
...
other passes may use it.
llvm-svn: 22557
2005-07-30 00:12:19 +00:00
Jeff Cohen
5f4ef3c5a8
Eliminate all remaining tabs and trailing spaces.
...
llvm-svn: 22523
2005-07-27 06:12:32 +00:00
Andrew Lenharth
23167c3be9
Remove glibc specific functions, and mark a couple as C99
...
llvm-svn: 22384
2005-07-11 20:35:20 +00:00
Andrew Lenharth
c51a74cc02
because on alpha:
...
# define errno (*__errno_location ())
*shakes head
llvm-svn: 22383
2005-07-11 17:41:12 +00:00
Andrew Lenharth
5488847304
the correct fix was to fix AliasAnalysis.getModRefInfo
...
llvm-svn: 22268
2005-06-20 15:25:22 +00:00
Andrew Lenharth
805d84a077
prevent GCSE from forwarding stores to loads around vaarg. This is uggly, and I am trying to fix the AliasInfo, as it should catch the problem instead.
...
llvm-svn: 22266
2005-06-20 15:02:05 +00:00
Andrew Lenharth
9144ec4764
core changes for varargs
...
llvm-svn: 22254
2005-06-18 18:34:52 +00:00
Chris Lattner
bb0bfc4702
By definition, 'tail' calls cannot access the stack frame of their caller.
...
Expose this as a simple form of mod/ref information. This implements
BasicAA/tailcall-modref.ll
llvm-svn: 21796
2005-05-08 23:58:12 +00:00
Chris Lattner
b2d3ac8349
These intrinsics do not access memory
...
llvm-svn: 21718
2005-05-06 05:21:04 +00:00
Misha Brukman
c0aac8e858
Remove extra blank line
...
llvm-svn: 21706
2005-05-05 23:43:47 +00:00
Chris Lattner
1c636f1118
Add llvm.sqrt intrinsic, patch contributed by Morten Ofstad
...
llvm-svn: 21627
2005-04-30 03:44:07 +00:00
Chris Lattner
59ecb57e4a
These functions can set errno!
...
llvm-svn: 21609
2005-04-28 21:52:31 +00:00
Chris Lattner
eb2a461acf
Make interval partition print correctly, patch contributed by
...
Vladimir Prus!
llvm-svn: 21566
2005-04-26 14:48:28 +00:00
Chris Lattner
ecac782786
Correctly handle global-argument aliases induced in main
...
llvm-svn: 21537
2005-04-25 19:16:31 +00:00
Chris Lattner
5965359d8f
Don't mess up SCC traversal when a node has null edges out of it.
...
llvm-svn: 21536
2005-04-25 19:16:17 +00:00
Chris Lattner
4bbf66b7a2
Propagate eq sets through the bu graphs to the cbu and eq graphs, fixing
...
a crash of the sfv on 188.ammp
llvm-svn: 21478
2005-04-23 21:11:05 +00:00
Chris Lattner
e25cfaee55
Malloc/Free have mod/ref effects. Do not allow CSE of function calls that
...
call malloc/free. This fixes PR555.
llvm-svn: 21443
2005-04-22 05:36:59 +00:00
Misha Brukman
774511633d
Convert tabs to spaces
...
llvm-svn: 21439
2005-04-22 04:01:18 +00:00
Misha Brukman
01808caded
Remove trailing whitespace
...
llvm-svn: 21416
2005-04-21 21:13:18 +00:00
Chris Lattner
4c5c96f35f
add support for taking and resolving the address of free.
...
llvm-svn: 21396
2005-04-21 16:09:43 +00:00
Chris Lattner
6febe5ef40
Fix a crash analyzing MultiSource/Benchmarks/MallocBench/gs
...
llvm-svn: 21245
2005-04-12 03:59:27 +00:00
Chris Lattner
747eee2707
Don't make this require loopsimplify. It works BETTER with loop simplify
...
but should not require it.
llvm-svn: 21123
2005-04-06 21:45:00 +00:00
Chris Lattner
7e0a534cba
do not crash when using -debug
...
llvm-svn: 21092
2005-04-05 01:12:03 +00:00
Chris Lattner
b919b21777
do not dereference an extra layer of pointers to determine if an external
...
call can modify a memory location. This fixes
test/Regression/Analysis/Andersens/modreftest.ll
llvm-svn: 21088
2005-04-04 22:23:21 +00:00
Chris Lattner
d2df8ca403
fix some VC compilation problems, thanks to Jeff C for pointing this out!
...
llvm-svn: 21044
2005-04-02 20:17:09 +00:00
Chris Lattner
a7913e66e1
EquivClassGraphs is now in DataStructure.h
...
llvm-svn: 21042
2005-04-02 20:08:17 +00:00
Chris Lattner
526cc17b55
use a callee_iterator typedef.
...
llvm-svn: 21038
2005-04-02 20:02:41 +00:00
Chris Lattner
990ed1d201
Change the ActualCallees callgraph from hash_multimap<Instruction,Function>
...
to std::set<std::pair<Inst,Func>> to avoid duplicate entries.
This speeds up the CompleteBU pass from 1.99s to .15s on povray and the
eqgraph passes from 1.5s to .16s on the same.
llvm-svn: 21031
2005-04-02 19:17:18 +00:00
Chris Lattner
af4d93cd39
import all of the rest of the stubs that dsa uses for direct comparison
...
llvm-svn: 20932
2005-03-29 20:36:05 +00:00
Chris Lattner
4dba2ee974
learn about some more functions.
...
llvm-svn: 20929
2005-03-29 20:04:24 +00:00
Chris Lattner
2e1971c19d
Fix a problem where we not marking incoming arguments to functions with
...
external linkage as incomplete.
llvm-svn: 20927
2005-03-29 19:16:59 +00:00
Chris Lattner
8de8b7bf40
there is no point comparing against null pointer.
...
llvm-svn: 20925
2005-03-29 17:44:52 +00:00
Chris Lattner
ca85130b0a
Fix a major problem with global variable initializers. This could cause
...
us to have stuff pointing to the null pointer, which makes no sense
(the null ptr is an ssa value, not the null object)
llvm-svn: 20922
2005-03-29 17:21:53 +00:00
Chris Lattner
dd94b2d01e
add some more functions, ignore setcc for constraints!
...
llvm-svn: 20917
2005-03-29 06:52:20 +00:00
Chris Lattner
7617e886c1
Handle "known" external calls context sensitively, add support for realloc
...
and a couple of other functions that are important.
Handle aggregate undef values for gv initializers
llvm-svn: 20914
2005-03-29 06:09:07 +00:00
Chris Lattner
81b6d86a3a
Teach andersens that non-escaping memory cannot be mod/ref'd by external fn calls.
...
llvm-svn: 20891
2005-03-28 06:21:17 +00:00
Misha Brukman
009585d2ac
Fix grammar
...
llvm-svn: 20890
2005-03-28 04:32:12 +00:00
Chris Lattner
a8ad8b2826
Make anders-aa much more precise by not being completely pessimistic about
...
external functions. Teach it about a few important ones.
llvm-svn: 20889
2005-03-28 04:03:52 +00:00
Chris Lattner
147f8b789c
wrap some long lines
...
llvm-svn: 20884
2005-03-27 22:03:46 +00:00
Chris Lattner
2db10ba297
remove ...
...
llvm-svn: 20883
2005-03-27 21:57:09 +00:00
Chris Lattner
f290da862d
speed up steens by using spliceFrom, improve its precision by realizing that
...
an incomplete node cannot alias a complete node.
llvm-svn: 20882
2005-03-27 21:56:55 +00:00
Chris Lattner
ea69f1f9e8
teach andersens about undef
...
llvm-svn: 20881
2005-03-27 18:58:23 +00:00
Chris Lattner
82166467c3
Don't give up completely, maybe other AA can say something about this.
...
llvm-svn: 20873
2005-03-27 00:02:33 +00:00
Chris Lattner
3f08e7899f
Factor out percentage printing into its own function. Make two changes to
...
the function: print more precision XX.X% instead of XX%, and cast to ULL
before scaling by 100/1000 to avoid wrap around for large numbers of queries
(such as occur for 253.perlbmk and 176.gcc)
llvm-svn: 20872
2005-03-26 23:56:33 +00:00
Chris Lattner
2ba37389c9
Cache mapping information for a call site after computing it for a mod/ref
...
query. If the next mod/ref query happens to be for the same call site
(which is extremely likely), use the cache instead of recomputing the
callee/caller mapping. This makes -aa-eval ***MUCH*** faster with
ds-aa
llvm-svn: 20871
2005-03-26 23:29:03 +00:00
Chris Lattner
139f43b340
Remove more long dead code: dsa doesn't provide must alias info
...
llvm-svn: 20870
2005-03-26 22:54:46 +00:00
Chris Lattner
1a02d15dab
remove some unsafe code that has long been dead
...
llvm-svn: 20869
2005-03-26 22:48:42 +00:00
Chris Lattner
9cc932d3b3
slightly improve mod/ref for DSAA by checking the globals graph for fallback
...
llvm-svn: 20868
2005-03-26 22:47:03 +00:00
Chris Lattner
b3baff1830
Teach steens-aa two things about mod/ref information:
...
1. If memory never escapes the program, it cannot be mod/ref'd by external
functions.
2. If memory is global never mod/ref'd in the program, it cannot be mod/ref'd
by any call.
llvm-svn: 20867
2005-03-26 22:43:20 +00:00
Chris Lattner
68ee8f572c
Interchange this loop so that we test all pointers against one call site
...
before moving on to the next call site. This will be a more efficient way
to compute the mod/ref set for AA implementations like DSA.
llvm-svn: 20866
2005-03-26 22:16:44 +00:00
Chris Lattner
d21e220035
no really, don't double count these nodes either!
...
llvm-svn: 20837
2005-03-25 20:54:45 +00:00
Chris Lattner
b7ffd50537
Don't count all of the nodes in the SCC once for each function in the SCC.
...
llvm-svn: 20836
2005-03-25 20:37:32 +00:00
Chris Lattner
5ecec08ab5
Grow the EQ classes for globals at the end of the BU pass. This shrinks
...
memory usage in the TD pass for 254.gap from 31.3MB to 3.9MB.
llvm-svn: 20834
2005-03-25 16:45:43 +00:00
Chris Lattner
8d9f3735cd
Treat free operations as volatile, since they cannot be moved. This fixes
...
Transforms/LICM/2005-03-24-LICM-Aggregate-Crash.ll
llvm-svn: 20830
2005-03-25 05:49:37 +00:00
Chris Lattner
3322e28f75
remove a debugging timer.
...
llvm-svn: 20827
2005-03-25 00:06:09 +00:00
Chris Lattner
278bac843c
Two changes here:
...
1. Instead of copying Local graphs to the BU graphs to start with, use
spliceFrom to do the job (which is constant time in this case). On
176.gcc, this chops off .17s from the bu pass.
2. When building SCC graphs, simplify the logic and use spliceFrom to
do the heavy lifting, instead of cloneInto/delete. This slices
another .14s off 176.gcc.
llvm-svn: 20826
2005-03-25 00:05:04 +00:00
Chris Lattner
a396eb8ae9
Make the spliceFrom case where one graph is completely empty be constant time.
...
llvm-svn: 20825
2005-03-25 00:02:41 +00:00
Chris Lattner
127dd12427
add a new DSGraph::spliceFrom method, which violently takes the content of
...
one graph and plops it into another, without breaking a sweat.
llvm-svn: 20824
2005-03-24 23:46:04 +00:00
Chris Lattner
301764e28c
This replaces the correct but slow code with a more aggressive scc-finder
...
based approach to find globals and call sites that need to be copied. This
speeds up the BU pass on 176.gcc from 22s back up to 2.3s. Not as good
as 1.5s, but at least it's correct :)
llvm-svn: 20820
2005-03-24 23:06:02 +00:00
Chris Lattner
1b5b559011
only look at successors of globals. This gets us down to "only" 22s in the
...
bu pass for 176.gcc
llvm-svn: 20818
2005-03-24 21:17:27 +00:00
Chris Lattner
189d7bb9ee
Unfortunately, a previous patch was not safe. Revert it, reimplement
...
something correct. Unfortunately this takes 176.gcc's BU phase back
up to 29s from 1.5. This fixes DSGraph/2005-03-24-Global-Arg-Alias.ll
llvm-svn: 20817
2005-03-24 21:07:47 +00:00
Chris Lattner
923d925953
don't bother |'ing in 0's
...
llvm-svn: 20815
2005-03-24 18:42:51 +00:00
Chris Lattner
ba6006d84b
be more aggressive about incompleteness marking
...
llvm-svn: 20814
2005-03-24 18:42:28 +00:00
Chris Lattner
19d7f2883d
Fix a crash while promoting a value out of a loop from a global variable
...
when using ds-aa
llvm-svn: 20802
2005-03-24 04:22:04 +00:00
Chris Lattner
f0d919ece9
teach ds-aa about mod/ref for external function calls.
...
llvm-svn: 20801
2005-03-24 03:04:50 +00:00
Chris Lattner
aff85ac552
Simplify dead code into a fixme :)
...
llvm-svn: 20800
2005-03-24 02:41:19 +00:00
Chris Lattner
85a1d92323
fix a compiler crash in runtime/libprofile
...
llvm-svn: 20799
2005-03-24 01:22:52 +00:00
Chris Lattner
6a3f5fd623
wrap a long line
...
llvm-svn: 20797
2005-03-23 23:51:12 +00:00
Chris Lattner
2a7358064e
If we are calling an external function, chain to another AA to potentially
...
decide, don't just immediately give up.
This implements GlobalsModRef/chaining-analysis.ll
llvm-svn: 20796
2005-03-23 23:49:47 +00:00
Chris Lattner
8424b0f82e
Make this more efficient by only making one virtual method call.
...
llvm-svn: 20793
2005-03-23 23:26:58 +00:00
Chris Lattner
07eac1e698
Make this a bit more aggressive
...
llvm-svn: 20792
2005-03-23 22:06:41 +00:00
Chris Lattner
9f9da538d6
a hack to allow count-aa to work with ds-aa :(
...
llvm-svn: 20791
2005-03-23 21:59:34 +00:00
Chris Lattner
ccb6faad7e
Add two options to allow -count-aa to print queries either (1) all queries,
...
or (2) only queries that are not successful (e.g. return may alias)
llvm-svn: 20790
2005-03-23 21:59:07 +00:00
Chris Lattner
61130216ec
turn a dead conditional into an assert.
...
llvm-svn: 20787
2005-03-23 20:12:08 +00:00
Chris Lattner
01f0879c48
Totally gut mergeInGraph. There is absolutely no reason to be merging
...
global roots in from callees to callers. The BU graphs do not have accurate
globals information and all of the clients know it. Instead, just make sure
the GG is up-to-date, and they will be perfectly satiated.
This speeds up the BU pass on 176.gcc from 5.5s to 1.5s, and Loc+BU+TD
from 7s to 2.7s.
llvm-svn: 20786
2005-03-23 20:08:59 +00:00