summaryrefslogtreecommitdiffstats
path: root/llvm/lib
Commit message (Collapse)AuthorAgeFilesLines
* make this const correctChris Lattner2005-03-211-2/+2
| | | | llvm-svn: 20741
* Fix a major problem where we didn't add call graph edges for call sites withChris Lattner2005-03-211-6/+10
| | | | | | more than 1 callee. This fixes Analysis/DSGraph/FunctionPointerTable-const.ll llvm-svn: 20740
* We may be adding functions to the Module during initialization, soMisha Brukman2005-03-211-2/+2
| | | | | | conservatively, it's modified llvm-svn: 20735
* Ugh, for some reason, I can't call this unless the reference is const!?!?!?Chris Lattner2005-03-211-2/+2
| | | | llvm-svn: 20732
* The reachability cloner should add arguments to merged calls when the RHS ofChris Lattner2005-03-211-1/+4
| | | | | | the merge has more operands than the LHS. llvm-svn: 20731
* 'note to self'Chris Lattner2005-03-211-2/+5
| | | | llvm-svn: 20727
* Remove a bunch of cruft and dead code for handling the case when types wereChris Lattner2005-03-211-48/+30
| | | | | | | | | | | | | | | | | defined in function constant pools. The assembler grammar has long disallowed functions from having constant pools, so all of this stuff is dead. This makes it an immediate error for functions to refer to nonexisting types, fixing Regression/Verifier/2005-03-21-UndefinedTypeReference.ll. Before, references to non-existing types in functions would only be detected when the subsequent function was parsed, due to the call to "ResolveTypes". "ResolveTypes" has not resolved any types for a long time, instead it emitted an error message if no resolved types are left. Since the only caller of this method is in the module code, just inline it. llvm-svn: 20726
* Make this method non-const. Making it const causes the const version ofTanya Lattner2005-03-211-1/+1
| | | | | | | getIGroup to be called instead of the non-const one. These two methods have (??) different behavior, so this change fixes bugs. llvm-svn: 20724
* Change the way that the TD pass inlines graphs. Instead of inlining eachChris Lattner2005-03-211-72/+87
| | | | | | | | | | | | | | | | | | | | graph into all of the functions it calls when we visit a graph, change it so that the graph visitor inlines all of the callers of a graph into the current graph when it visits it. While we're at it, inline global information from the GG instead of from each of the callers. The GG contains a superset of the info that the callers do anyway, and this way we only need to do it one time (not one for each caller). This speeds up the TD pass substantially on several programs, and there is still room for improvement. For example, the TD pass used to take 147s on perlbmk, it now takes 36s. On povray, we went from about 5s to 1.97s. 134.perl is down from ~1s for Loc+BU+TD to .6s. The TD pass needs a lot of improvement though, which will occur with later patches. llvm-svn: 20723
* Don't strip modref bits when inlining down the call graph. This fixesChris Lattner2005-03-201-1/+1
| | | | | | the DSGraph/2003-06-30-TopDownResolve.ll regression from last night. llvm-svn: 20717
* Remove the ability to keep track of inlined globals, which is always dead.Chris Lattner2005-03-201-36/+1
| | | | llvm-svn: 20716
* This call is always a noop, remove it.Chris Lattner2005-03-201-9/+0
| | | | llvm-svn: 20714
* remove some pointless assertsChris Lattner2005-03-203-3/+0
| | | | llvm-svn: 20713
* -steens doesn't use the inlined globals facility.Chris Lattner2005-03-201-2/+1
| | | | llvm-svn: 20712
* Build EC's for globals twice. The first is after constructing the initialChris Lattner2005-03-201-23/+99
| | | | | | | | | Globals Graph for the local pass, the second is after all of the locals graphs have been constructed. This allows for many additional global EC's to be recognized that weren't before. This speeds up analysis of programs like 177.mesa, where it changes DSA from taking 0.712s to 0.4018s. llvm-svn: 20711
* Add a new DSNode::removeGlobal method.Chris Lattner2005-03-201-0/+9
| | | | llvm-svn: 20710
* Transform BU pass to not use the horrible DSCallSiteIterator class.Chris Lattner2005-03-202-176/+54
| | | | llvm-svn: 20708
* Implement new methods for dealing with DSNode global lists, rename uses ofChris Lattner2005-03-201-16/+56
| | | | | | old methods. llvm-svn: 20707
* use simpler methods.Chris Lattner2005-03-201-4/+3
| | | | llvm-svn: 20706
* method was renamed.Chris Lattner2005-03-201-2/+3
| | | | llvm-svn: 20705
* print out equiv class info.Chris Lattner2005-03-201-2/+16
| | | | llvm-svn: 20704
* some methods got renamedChris Lattner2005-03-201-2/+2
| | | | llvm-svn: 20703
* Make use of simpler DSNode methods.Chris Lattner2005-03-202-14/+8
| | | | llvm-svn: 20702
* #ifdef out a function only used by #ifdef'd code.Chris Lattner2005-03-201-0/+2
| | | | llvm-svn: 20700
* comment cleanupChris Lattner2005-03-201-1/+1
| | | | llvm-svn: 20699
* Create an equivalence class of global variables that DSA will never be ableChris Lattner2005-03-197-48/+72
| | | | | | | | | | | | | | | | | | | | | | | | | | | | to tell apart anyway, and only track the leader for of these equivalence classes in our graphs. This dramatically reduces the number of GlobalValue*'s that appear in scalar maps, which A) reduces memory usage, by eliminating many many scalarmap entries and B) reduces time for operations that need to execute an operation for each global in the scalar map. As an example, this reduces the memory used to analyze 176.gcc from 1GB to 511MB, which (while it's still way too much) is better because it doesn't hit swap anymore. On eon, this shrinks the local graphs from 14MB to 6.8MB, shrinks the bu+td graphs of povray from 50M to 40M, shrinks the TD graphs of 130.li from 8.8M to 3.6M, etc. This change also speeds up DSA on large programs where this makes a big difference. For example, 130.li goes from 1.17s -> 0.56s, 134.perl goes from 2.14 -> 0.93s, povray goes from 15.63s->7.99s (!!!). This also apparently either fixes the problem that caused DSA to crash on perlbmk and gcc, or it hides it, because DSA now works on these. These both take entirely too much time in the TD pass (147s for perl, 538s for gcc, vs 7.67/5.9s in the bu pass for either one), but this is a known problem that I'll deal with later. llvm-svn: 20696
* Fix the 3 regressions last night, due to my buggy patch from yesterday.Chris Lattner2005-03-191-1/+1
| | | | llvm-svn: 20689
* Add new function getPtrPtrFromArrayPtr().Alkis Evlogimenos2005-03-191-0/+7
| | | | llvm-svn: 20684
* Stop using deprecated interface.Alkis Evlogimenos2005-03-192-2/+3
| | | | llvm-svn: 20679
* Switch to use the new interface for the EquivalenceClasses class, and fixChris Lattner2005-03-191-59/+63
| | | | | | a bug involving SCC's who have multiple members that are part of an EC. llvm-svn: 20678
* do not bother inlining nullary functions without return values. The onlyChris Lattner2005-03-183-1/+15
| | | | | | | | | effect these calls can have is due to global variables, and these passes all use the globals graph to capture their effect anyway. This speeds up the BU pass very slightly on perlbmk, reducing the number of dsnodes allocated from 98913 to 96423. llvm-svn: 20676
* fix a bogus assertionChris Lattner2005-03-181-1/+1
| | | | llvm-svn: 20675
* another fastpathChris Lattner2005-03-181-1/+2
| | | | llvm-svn: 20674
* remove use of getPrev() and getNext() on ilist nodes.Chris Lattner2005-03-181-5/+8
| | | | llvm-svn: 20673
* expose this pass to both opt and analyzeChris Lattner2005-03-181-2/+3
| | | | llvm-svn: 20672
* remove a bogus optimization. This only works if there are no globals in theChris Lattner2005-03-181-4/+0
| | | | | | | graph, and the combination of a function that does not reference globals, takes not arguments and returns no value is pretty rare. llvm-svn: 20670
* Rewrite DSAA::getModRefInfo to compute the mapping between caller and calleeChris Lattner2005-03-181-24/+47
| | | | | | | | | | to determine mod/ref behavior, instead of creating a *copy* of the caller graph and inlining the callee graph into the copy. This speeds up aa-eval on Ptrdist/yacr2 from 109.13s to 3.98s, and gives identical results. The speedup is similar on other programs. llvm-svn: 20669
* implement a new method.Chris Lattner2005-03-171-0/+36
| | | | llvm-svn: 20668
* add some possibly bogus assertions.Chris Lattner2005-03-171-0/+10
| | | | llvm-svn: 20665
* Do not include the Function* for direct call/invoke instructions in theChris Lattner2005-03-171-1/+6
| | | | | | alias evaluation. Clients really don't care. llvm-svn: 20664
* typo/denialDuraid Madina2005-03-171-1/+1
| | | | llvm-svn: 20663
* simplify this function a bit, allow DS-AA to build on/improve the mod/refChris Lattner2005-03-171-8/+11
| | | | | | results returned by AA, not just use one or the other. llvm-svn: 20662
* Clean up some code, handle null pointer specially to avoid an assertionChris Lattner2005-03-171-6/+10
| | | | llvm-svn: 20660
* Two changes:Chris Lattner2005-03-171-3/+3
| | | | | | | | | 1. Chain to the parent implementation of M/R analysis if we can't find any information. It has some heuristics that often do well. 2. Do not clear all flags, this can make invalid nodes by turning nodes that used to be collapsed into non-collapsed nodes (fixing crashes) llvm-svn: 20659
* clean up warnings when building in release modeDuraid Madina2005-03-171-0/+2
| | | | llvm-svn: 20658
* OK, IA64 is statically linked into llcDuraid Madina2005-03-171-2/+0
| | | | llvm-svn: 20655
* build the IA64 target as a .so for nowDuraid Madina2005-03-172-1/+3
| | | | llvm-svn: 20654
* and so it begins...Duraid Madina2005-03-1717-0/+3756
| | | | | | | | PHASE 1: write instruction selector PHASE 2: ??? PHASE 3: profit! llvm-svn: 20652
* Don't emit two comparisons when comparing a FP value against zero!Chris Lattner2005-03-171-0/+1
| | | | llvm-svn: 20651
* Fix the missing symbols problem Bill was hitting. Patch contributed byChris Lattner2005-03-1711-0/+11
| | | | | | Bill Wendling!! llvm-svn: 20649
OpenPOWER on IntegriCloud