Commit Graph

594 Commits

Author SHA1 Message Date
Chris Lattner 63aeacfe3d Revamp DSGraphs so that they can support multiple functions in the same
DSGraph at one time

llvm-svn: 6994
2003-06-30 03:15:25 +00:00
Chris Lattner 151576413e Adjust for new DSGraph API
llvm-svn: 6993
2003-06-30 03:14:54 +00:00
Chris Lattner 7e29f97d1d Abstract out the predicate which decides whether a function gets complete
arguments or not...

llvm-svn: 6987
2003-06-29 22:37:07 +00:00
Chris Lattner 205d1acfba Fix minor bug in previous checkin
llvm-svn: 6986
2003-06-29 22:36:31 +00:00
Chris Lattner 992abdae26 Add support for ensuring that nodes are not incomplete
llvm-svn: 6985
2003-06-29 22:36:15 +00:00
Chris Lattner 16e3c398c8 Add support for "physical subtyping", which fixes:
DSGraph/2003-06-29-NodeCollapsing2.ll & DSGraph/PhysicalSubtyping.ll

llvm-svn: 6982
2003-06-29 20:27:45 +00:00
Chris Lattner 0aca3e714f Add print method to not get silly warning from analyze
llvm-svn: 6981
2003-06-29 20:27:16 +00:00
Chris Lattner 5da440b239 New pass which is useful for writing regression tests
llvm-svn: 6979
2003-06-29 18:17:07 +00:00
Chris Lattner 0877def4f6 Expose must alias information for global variables, implementing: DSGraph/mustalias.ll
llvm-svn: 6973
2003-06-29 00:54:08 +00:00
Chris Lattner 426b890f0d If the alias analysis algorithm we are using can provide MUST alias information,
expose it directly as value numbering information

llvm-svn: 6972
2003-06-29 00:53:34 +00:00
Chris Lattner 83e21a0c93 Count operands to instructions as well as just results. This allows for global variables to be checked as well
llvm-svn: 6970
2003-06-29 00:07:11 +00:00
Chris Lattner fa578d0eb4 Propagate globals graph from the local to bu to td globals graphs. This
fixes bug: DSGraph/buglobals.ll

llvm-svn: 6947
2003-06-28 22:14:55 +00:00
Chris Lattner c7ba69d8b4 Drop references to globals who do exist in the globals graph, but are never
read or written to.  Keep track of how many times this happens.  This should
be good for deleting things like references to type information in C++ classes

llvm-svn: 6946
2003-06-28 22:10:58 +00:00
Chris Lattner 856a6cbb80 Avoid double negatives
llvm-svn: 6945
2003-06-28 21:58:28 +00:00
Chris Lattner 2890f428a9 New pass to perform DSA based optimizations. Initially we just support turning
globals into constants if we can prove it's safe

llvm-svn: 6941
2003-06-28 21:54:55 +00:00
Chris Lattner 81d75b7cfc Fix bug: LevelRaise/2003-06-25-ExprAnalysis.ll
llvm-svn: 6903
2003-06-25 17:09:03 +00:00
Chris Lattner d791d8e427 Remove support for the MultiObject flag, which was fundamentally broken
llvm-svn: 6840
2003-06-22 03:03:52 +00:00
Chris Lattner 4853d162af * Changes to make NodeType be private to DSNode.
* Add new MultiObject flag to DSNode which keeps track of whether or not
  multiple objects have been merged into the node, allowing must-alias info
  to be tracked.

llvm-svn: 6794
2003-06-19 21:15:11 +00:00
Chris Lattner 1bec75e730 Implement handling of constantexprs for disambiguation. This implements
BasicAA/featuretest.ll:constexpr_test

llvm-svn: 6740
2003-06-17 15:25:37 +00:00
Chris Lattner 702a42bb8a Avoid divide by zero errors
llvm-svn: 6738
2003-06-17 15:07:20 +00:00
Chris Lattner 3937726a5b Nodes get forwarded when they are collapsed currently.
llvm-svn: 6696
2003-06-16 12:08:18 +00:00
Chris Lattner 82f4f85f6d Remove bogus assertion: a node with no referrers could be collapsed if field-sensitivity was disabled
llvm-svn: 6695
2003-06-16 12:07:39 +00:00
Chris Lattner 98105944b3 Implement forwarding from stores to loads of must-aliased pointers.
This implements: GCSE/2003-06-13-LoadStoreEliminate.ll

llvm-svn: 6694
2003-06-16 12:06:41 +00:00
Chris Lattner 78dd43245d Be more robust in the face of undefined behavior.
Fixes bug: BasicAA/2003-06-01-AliasCrash.ll

llvm-svn: 6538
2003-06-02 05:42:39 +00:00
Chris Lattner 9ed31bc497 Fix bug: CBackend/2003-05-31-MissingStructName.ll
llvm-svn: 6495
2003-05-31 23:30:52 +00:00
Chris Lattner f789f29aaa Eliminate unnecessary ->get calls that are now automatically handled.
llvm-svn: 6397
2003-05-29 15:12:27 +00:00
Vikram S. Adve 6bbfe341dd Renamed MachienOperand::opIsDef to MachineOperand::opIsDefOnly()
and related functions and flags.  Fixed several bugs where only
"isDef" was being checked, not "isDefAndUse".

llvm-svn: 6342
2003-05-27 00:06:48 +00:00
Chris Lattner 060f38121e Fix Bug: BasicAA/2003-05-21-GEP-Problem.ll
llvm-svn: 6270
2003-05-21 20:23:26 +00:00
Misha Brukman 9392c3ca74 The word `operands' has an `r' in it.
llvm-svn: 6250
2003-05-20 20:36:39 +00:00
Misha Brukman 56f4fa10fd Sparc instruction opcodes now all live under the `V9' namespace.
llvm-svn: 6249
2003-05-20 20:32:24 +00:00
Misha Brukman e5838c4d72 s/convertable/convertible/g
llvm-svn: 6248
2003-05-20 18:45:36 +00:00
Chris Lattner 0e416df2b2 Fix bug: Analysis/LoopInfo/2003-05-15-NestingProblem.ll
llvm-svn: 6230
2003-05-15 18:03:51 +00:00
Chris Lattner d14c200425 Fix miscompilation in Fhourstones and bug: LICM/2003-05-02-LoadHoist.ll
llvm-svn: 5994
2003-05-03 03:42:08 +00:00
Chris Lattner d021c2d56b Fix bug: LoopPreheaders/2003-04-25-AssertFail.ll
llvm-svn: 5959
2003-04-26 19:34:18 +00:00
Chris Lattner be2d24e3b5 Fix BasicAA/2003-04-25-GEPCrash.ll
llvm-svn: 5940
2003-04-25 18:03:06 +00:00
Chris Lattner 6ee2cf5d89 Remove unneccesary &*
llvm-svn: 5871
2003-04-23 16:36:11 +00:00
Chris Lattner 4183b34d39 Fix bug: BasicAA/2003-04-22-GEPProblem.ll
llvm-svn: 5858
2003-04-22 22:00:27 +00:00
Chris Lattner dee5f75221 Fix bug: IndVarSimplify/2003-04-16-ExprAnalysis.ll
llvm-svn: 5795
2003-04-16 22:50:19 +00:00
Chris Lattner 1520eda3e3 Remove unneccesary forward decl
llvm-svn: 5710
2003-03-06 16:37:29 +00:00
Chris Lattner ce848a3397 Fix bug: BasicAA/2003-03-04-GEPCrash.ll
llvm-svn: 5695
2003-03-04 16:40:17 +00:00
Chris Lattner c048bb3add ADd two new 'add' methods
llvm-svn: 5691
2003-03-03 23:28:05 +00:00
Chris Lattner c12e5ccdb5 Don't apply type information to load instructions if it will cause collapsing
llvm-svn: 5684
2003-03-03 17:13:31 +00:00
Chris Lattner 96afad55b9 Fix a problem with negative indexes
llvm-svn: 5681
2003-03-02 23:43:34 +00:00
Chris Lattner a777f7a7ed Add dump method for Loops
llvm-svn: 5671
2003-02-28 16:54:45 +00:00
Chris Lattner 72f876223f Simplify a bit by using a new member function
llvm-svn: 5662
2003-02-27 22:48:08 +00:00
Chris Lattner 72a9854584 Change behavior of changeExitBlock function to replace all instances of exit block
llvm-svn: 5661
2003-02-27 22:37:44 +00:00
Chris Lattner 4f3b1d1808 Fix bug: LICM/2003-02-27-PreheaderProblem.ll
There may be a single outside predecessor and
still need a new loop-preheader if the predecessor has multiple
successors.

llvm-svn: 5656
2003-02-27 21:51:38 +00:00
Chris Lattner b7b58f65c6 - LoopInfo now calculates and tracks loop exit blocks
llvm-svn: 5650
2003-02-27 00:38:34 +00:00
Chris Lattner b5b0b7a934 Make the aliassettracker much more precise by actually tracking size
information for various accesses.  What a concept.

llvm-svn: 5647
2003-02-26 22:11:00 +00:00
Chris Lattner 053994f5a6 Fix bug: BasicAA/2003-02-26-AccessSizeTest.ll
llvm-svn: 5645
2003-02-26 21:57:23 +00:00
Chris Lattner d98ac881ca Fix several bugs in basic-aa
llvm-svn: 5643
2003-02-26 21:28:49 +00:00
Chris Lattner dca12c77df Add new -no-aa implementation
llvm-svn: 5641
2003-02-26 19:57:10 +00:00
Chris Lattner d6a2a99a1b Move BasicAA pass out to it's own header file
llvm-svn: 5640
2003-02-26 19:41:54 +00:00
Chris Lattner e79b8319a6 Adjust to implement new AA interface
llvm-svn: 5638
2003-02-26 19:29:36 +00:00
Chris Lattner 13082d63dd Adjust to new AA interface
llvm-svn: 5637
2003-02-26 19:29:16 +00:00
Chris Lattner 71b82bb494 Convert to work with new AliasAnalysis interface by conservatively assuming all pointers are arbitrarily large accesses
llvm-svn: 5636
2003-02-26 19:28:57 +00:00
Chris Lattner 0edc91ff2a Calculate and pass load sizes to the alias analysis infrastructure
llvm-svn: 5635
2003-02-26 19:27:35 +00:00
Chris Lattner d1e3208147 Adjust to new AA interface
Add tracking for Mod/Ref info

llvm-svn: 5634
2003-02-26 19:27:05 +00:00
Chris Lattner 3a3118394c - Checkin of the alias analysis work:
* Takes into account the size of the memory reference to determine aliasing.
    * Expose mod/ref information in a more consistent way
    * BasicAA can now disambiguate A[i][1] and A[j][2] for conservative request
      sizes

llvm-svn: 5633
2003-02-26 19:26:51 +00:00
Chris Lattner 7606fb65c0 This is a substantial rewrite of the AliasSetTracker class which now uses
a union-find based algorithm, is significantly faster, and is more general.
It will also scale to handle call instructions correctly, which is a nice
added bonus.

This includes a new pass -print-alias-sets which can be used to show how
alias sets are formed for a particular analysis.

llvm-svn: 5619
2003-02-24 20:37:56 +00:00
Chris Lattner ef6ea65807 Dramatically simplify building of natural loops and fix a bug where the BBMap
was not correctly computed.

llvm-svn: 5606
2003-02-22 21:33:11 +00:00
Chris Lattner 1cbe5116ff Fix the requisite bug that I introduced
llvm-svn: 5605
2003-02-20 00:28:00 +00:00
Chris Lattner 1dc4c29b6d Fix 80 character formatting
llvm-svn: 5604
2003-02-20 00:18:07 +00:00
Chris Lattner 0049419836 Fix bug: 2003-02-19-LoopInfoNestingBug.ll
llvm-svn: 5603
2003-02-20 00:17:17 +00:00
Chris Lattner b39d6355e1 Fix resolution of indirect function calls... whoops
llvm-svn: 5576
2003-02-14 23:27:18 +00:00
Chris Lattner b5cbfa0f15 Mark function edges
llvm-svn: 5571
2003-02-14 20:25:47 +00:00
Chris Lattner 8acdca64fd - Eliminate provably non-pointer nodes from graphs.
This helps a lot of testcases, for example:
            New Time  New #Nodes     Old Time    Old #Nodes
254.gap:    91.1024     21605        91.1397     22657
povray31:    2.7807      8613         3.0152     10338
255.vortex:  1.2034      8153         1.2172     8822
moria:        .6756      3150          .7054     3877
300.twolf:    .1652      2010          .1851     3270

Typically, testcases which use long and ulong integers a lot get better, f.e. povray above.

llvm-svn: 5566
2003-02-14 06:28:00 +00:00
Chris Lattner ddd3b7fa54 Don't put integer pointers (longs) into the scalar map.
This speeds stuff up by 10% on some tests, woot!

llvm-svn: 5564
2003-02-14 04:55:58 +00:00
Chris Lattner 3699ef409c Hax0r around a deficiency in the Pass infrastructure
llvm-svn: 5555
2003-02-13 21:44:18 +00:00
Chris Lattner 60ede774af Use the new tailclip property new added to graphviz CVS to make call nodes
actually intelligable

llvm-svn: 5554
2003-02-13 20:14:40 +00:00
Chris Lattner a17866894a Move node forwarding code from being inlined to being out-of-line.
This brings a 11.6% speedup to steens, and a 3.6 overall speedup to ds-aa

llvm-svn: 5552
2003-02-13 19:09:00 +00:00
Chris Lattner 3595c3387a Rename options
llvm-svn: 5537
2003-02-11 23:12:09 +00:00
Chris Lattner 7127d7db7a Implement a "union-findy" version of DS-Analysis, which eliminates the
Referrers list on DSNodes.

llvm-svn: 5536
2003-02-11 23:11:51 +00:00
Chris Lattner 763502671d Minor tweaks to printing. Close the file before viewing it in viewGraph
llvm-svn: 5535
2003-02-11 19:27:27 +00:00
Chris Lattner e715357909 Modest speedup which seems to help steens quite a bit on large graphs
llvm-svn: 5532
2003-02-10 18:47:23 +00:00
Chris Lattner f8292feb04 Fix problem breaking GAP, use hasNoReferrers more
llvm-svn: 5530
2003-02-10 18:18:18 +00:00
Chris Lattner 75007f16de Implement a new "viewGraph" method which can be used to instantly view a graph from gdb
llvm-svn: 5528
2003-02-10 18:17:07 +00:00
Chris Lattner b96f2123ab Rearrange code
llvm-svn: 5527
2003-02-10 18:16:36 +00:00
Chris Lattner 5153d44a91 Fix problem breaking Fhourstones
llvm-svn: 5526
2003-02-10 18:16:19 +00:00
Chris Lattner df2a78e833 Make steensgaards performance not shameful
llvm-svn: 5524
2003-02-10 00:14:57 +00:00
Chris Lattner 43df2886c5 Don't insert null entries into the scalar map for constexpr (cast null to Ty)
llvm-svn: 5523
2003-02-09 23:04:12 +00:00
Chris Lattner b0208e1ae3 Allow printing of various types of alias analysis results
llvm-svn: 5520
2003-02-09 20:40:13 +00:00
Chris Lattner 2393160bde Implement knowledge in BasicAA that &A->field != &A and (P+1) != P
llvm-svn: 5519
2003-02-09 19:38:11 +00:00
Chris Lattner 1fbac976b9 - Fix BasicAA to correctly detect the non-aliasness of A[1] & A[2]
llvm-svn: 5518
2003-02-09 19:27:21 +00:00
Chris Lattner 4e0457a027 Switch to using the right call vector
llvm-svn: 5517
2003-02-09 19:26:47 +00:00
Chris Lattner 93fdaf9cb9 Fix major bugs in incompleteness marking that were pessimizing results
llvm-svn: 5515
2003-02-09 18:42:43 +00:00
Chris Lattner e4059b4ed6 Print out the steens graph if -debug is specified
llvm-svn: 5514
2003-02-09 18:42:16 +00:00
Chris Lattner 0eee7eb390 * Fix a bug where global incompleteness marking would not mark the global
itself incomplete!
* Allow incompleteness callers to specify they don't want globals to be
  considered sources of incompleteness.

llvm-svn: 5513
2003-02-09 18:41:49 +00:00
Chris Lattner 26bd24cd81 Add a special case for main because we know it's incoming arguments don't alias
llvm-svn: 5511
2003-02-08 23:08:02 +00:00
Chris Lattner d73f9f55f2 Fix a bug where we would mark the callees arguments incomplete if the caller was external.
llvm-svn: 5510
2003-02-08 23:07:39 +00:00
Chris Lattner eadcadc54b Fix division by zero problem
llvm-svn: 5509
2003-02-08 23:04:50 +00:00
Chris Lattner 63ea85f089 Remove explicit result counters
llvm-svn: 5508
2003-02-08 23:03:17 +00:00
Chris Lattner cb7d6429fc Add a flag which effectively disables field sensitivity
llvm-svn: 5506
2003-02-08 20:18:39 +00:00
Chris Lattner fdc902e6f2 Don't bother counting alias results, allow the AliasAnalysisCounter to do that.
llvm-svn: 5505
2003-02-07 20:39:48 +00:00
Chris Lattner 9a734b6c24 Allow counting multiple passes, and print the pass name counted
llvm-svn: 5504
2003-02-07 20:39:17 +00:00
Chris Lattner e996681c1c New general purpose alias analysis result auditor
llvm-svn: 5503
2003-02-07 19:46:03 +00:00
Chris Lattner 371fd2c59b Add a summary
llvm-svn: 5500
2003-02-06 22:06:08 +00:00
Chris Lattner 4fdb75f223 Simple N^2 alias anlysis accuracy checker
llvm-svn: 5498
2003-02-06 21:29:49 +00:00
Chris Lattner f7979c2f2b Fix an assertion failure
llvm-svn: 5496
2003-02-06 00:15:08 +00:00
Chris Lattner 80614ee5ef Implement optimization for direct function call case. This dramatically
reduces the number of function nodes created and speeds up analysis by
about 10% overall.

llvm-svn: 5495
2003-02-05 21:59:58 +00:00