Chris Lattner
fb242b6edc
Change the interface to constant expressions to allow automatic folding
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5793 91177308-0d34-0410-b5e6-96231b3b80d8
2003-04-16 22:40:51 +00:00
Chris Lattner
e3869c83e7
Add support to the bytecode reader/writer for the new linkage types
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5790 91177308-0d34-0410-b5e6-96231b3b80d8
2003-04-16 21:16:05 +00:00
Chris Lattner
5399741622
Add code to verify correctly linkages
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5788 91177308-0d34-0410-b5e6-96231b3b80d8
2003-04-16 20:42:40 +00:00
Chris Lattner
4ad02e726d
Add new linkage types to support a real frontend
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5786 91177308-0d34-0410-b5e6-96231b3b80d8
2003-04-16 20:28:45 +00:00
Chris Lattner
ffd9bf404c
Improve the efficiency and cleanup writing a bit
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5782 91177308-0d34-0410-b5e6-96231b3b80d8
2003-04-16 20:20:02 +00:00
Chris Lattner
1f862af473
Don't allow declaring an external internal variable
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5781 91177308-0d34-0410-b5e6-96231b3b80d8
2003-04-16 18:13:57 +00:00
Chris Lattner
af76d0ea0b
Fix bug: Assember2003-04-15-ConstantInitAssertion.llx
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5777 91177308-0d34-0410-b5e6-96231b3b80d8
2003-04-15 16:09:31 +00:00
Chris Lattner
af7ccd9bba
Make help message more clear
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5775 91177308-0d34-0410-b5e6-96231b3b80d8
2003-04-13 03:50:14 +00:00
Chris Lattner
d4bd3eba5d
* Fix bug: Mem2Reg/2003-04-10-DFNotFound.ll
...
* Make Mem2Reg assign version numbers now for renamed variables instead of
.mem2reg suffixes. This produces what people think of as SSA.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5771 91177308-0d34-0410-b5e6-96231b3b80d8
2003-04-10 19:41:13 +00:00
Misha Brukman
2c821cc06e
Fixed compilation errors, command-line argument declarations, cleaned up code to
...
look nicer and removed useless stuff.
Also renamed a few variables, moved them into namespaces, converted outputting
to a file into a print to std::cerr with a DEBUG() guard, as all passes should
do anyway.
No functional changes have been made. However, this code now compiles.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5769 91177308-0d34-0410-b5e6-96231b3b80d8
2003-04-10 19:19:23 +00:00
Misha Brukman
8baa01c1d7
Made the code readable:
...
* Lines must be wrapped at 80 chars. This is a hard limit.
* Consistent style on functions, braces, if, for, etc. Code must be readable.
No functional changes have been made, even though I added a new typedef.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5768 91177308-0d34-0410-b5e6-96231b3b80d8
2003-04-09 21:51:34 +00:00
Guochun Shi
6fbe5fbce1
change the include file names and some class names to make it compile
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5764 91177308-0d34-0410-b5e6-96231b3b80d8
2003-04-06 23:56:19 +00:00
Chris Lattner
f9a88b684d
Implement scanf and fix sscanf to actually endian swap the results correctly
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5763 91177308-0d34-0410-b5e6-96231b3b80d8
2003-03-31 22:12:37 +00:00
Chris Lattner
e941291a7a
Initial checkin of PRE on LLVM. This implementation is still lacking in
...
several ways:
* Load expressions are not PRE'd well. Alias Analysis should be used to
get accurate information when computing anticipatibility.
* The expression collection implementation does not handle PHI nodes properly,
thus the implementation misses many opportunities to PRE.
* This code could be sped up quite a bit
Despite these flaws, the code seems to work well, and handles PR's as one
would expect.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5759 91177308-0d34-0410-b5e6-96231b3b80d8
2003-03-31 19:55:43 +00:00
Chris Lattner
6c0e0496dc
* We now preserve the no-critical-edge pass (because we cannot insert critical edges)
...
* Small modification to be more efficient
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5757 91177308-0d34-0410-b5e6-96231b3b80d8
2003-03-31 17:30:25 +00:00
Guochun Shi
f1c154f5e6
*** empty log message ***
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5755 91177308-0d34-0410-b5e6-96231b3b80d8
2003-03-27 17:57:44 +00:00
Chris Lattner
c277eaa41e
Move BreakCriticalEdges pass to lib/Transforms/Utils
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5754 91177308-0d34-0410-b5e6-96231b3b80d8
2003-03-21 21:43:19 +00:00
Chris Lattner
f1ab454b71
Add helper method
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5753 91177308-0d34-0410-b5e6-96231b3b80d8
2003-03-21 21:41:02 +00:00
Chris Lattner
3413d150dc
* Change the order that globals and constants are processed in
...
* Add support for implicit zero initializers
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5750 91177308-0d34-0410-b5e6-96231b3b80d8
2003-03-19 20:57:22 +00:00
Chris Lattner
186a1f71e6
Changes to the V2 bytecode format:
...
- Null values are implicitly encoded instead of explicitly, this makes
things more compact!
- More compactly represent ConstantPointerRefs
- Bytecode files are represented as:
Header|GlobalTypes|GlobalVars/Function Protos|Constants|Functions|SymTab
instead of
Header|GlobalTypes|Constants|GlobalVars/Function Protos|Functions|SymTab
which makes a lot of things simpler.
Writer changes:
- We now explictly encode versioning information in the bytecode files.
- This allows new code to read bytecode files produced by old code, but
new bytecode files can have enhancements such as the above. Although this
makes the reader a bit more complex (having to deal with old formats), the
writer only needs to be able to produce the most recent version.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5749 91177308-0d34-0410-b5e6-96231b3b80d8
2003-03-19 20:56:46 +00:00
Chris Lattner
52e20b0977
* Bug fixes:
...
- Fix problems where the constant table would not get updated when
resolving constants causes other constants to change.
Changes to the V2 bytecode format
- Null values are implicitly encoded instead of explicitly, this makes
things more compact!
- More compactly represent ConstantPointerRefs
- Bytecode files are represented as:
Header|GlobalTypes|GlobalVars/Function Protos|Constants|Functions|SymTab
instead of
Header|GlobalTypes|Constants|GlobalVars/Function Protos|Functions|SymTab
which makes a lot of things simpler.
Changes to the reader:
- Function loading code is much simpler. We now no longer make function
PlaceHolderHelper objects to be replaced with real functions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5748 91177308-0d34-0410-b5e6-96231b3b80d8
2003-03-19 20:54:26 +00:00
Chris Lattner
c8802d2c16
Add the following instcombine xforms:
...
- Implement simple reassociation: (A|c1)|(B|c2) == (A|B)|(c1|c2)
- (A & C1)+(B & C2) -> (A & C1)|(B & C2) iff C1&C2 == 0
- (A & C1)^(B & C2) -> (A & C1)|(B & C2) iff C1&C2 == 0
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5743 91177308-0d34-0410-b5e6-96231b3b80d8
2003-03-11 00:12:48 +00:00
Chris Lattner
a4f445b28c
Implement: -A*-B == A*B
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5740 91177308-0d34-0410-b5e6-96231b3b80d8
2003-03-10 23:23:04 +00:00
Chris Lattner
a27231acc0
Add new transformation: // (~A | ~B) == (~(A & B))
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5738 91177308-0d34-0410-b5e6-96231b3b80d8
2003-03-10 23:13:59 +00:00
Chris Lattner
8d96964e29
Generalize not and neg comparison testers to allow constant to be considered not'able and neg'able. This
...
allows optimization of this:
int %test4(int %A, int %B) {
%a = xor int %A, -1
%c = and int %a, 5 ; 5 = ~c2
%d = xor int %c, -1
ret int %d
}
into this:
int %test4(int %A, int %B) { ; No predecessors!
%c.demorgan = or int %A, -6 ; <int> [#uses=1]
ret int %c.demorgan
}
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5736 91177308-0d34-0410-b5e6-96231b3b80d8
2003-03-10 23:06:50 +00:00
Chris Lattner
1680312867
Fix ConstantUInt::isAllOnesValue
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5734 91177308-0d34-0410-b5e6-96231b3b80d8
2003-03-10 22:39:02 +00:00
Chris Lattner
4f98c56936
Generalize (A+c1)+c2 optimization to work with all associative operators
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5733 91177308-0d34-0410-b5e6-96231b3b80d8
2003-03-10 21:43:22 +00:00
Chris Lattner
28ba1aad99
Minor change, no functionality diff
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5731 91177308-0d34-0410-b5e6-96231b3b80d8
2003-03-10 19:20:30 +00:00
Chris Lattner
ea34005404
Fix bug: (x << 100) wasn't folded to 0, but (x >> 100) was (when x is unsigned)
...
Implement new shift optimizations for shifting the result of a shift.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5729 91177308-0d34-0410-b5e6-96231b3b80d8
2003-03-10 19:16:08 +00:00
Chris Lattner
cb40a3749a
Implement: (A|B)^B == A & (~B)
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5728 91177308-0d34-0410-b5e6-96231b3b80d8
2003-03-10 18:24:17 +00:00
Chris Lattner
3a43837d85
Fix bug: SimplifyCFG/2003-03-07-DominateProblem.ll
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5722 91177308-0d34-0410-b5e6-96231b3b80d8
2003-03-07 18:13:41 +00:00
Chris Lattner
38d8773650
Clean up cruft
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5720 91177308-0d34-0410-b5e6-96231b3b80d8
2003-03-06 23:23:32 +00:00
Chris Lattner
27accf7692
Remove #include
...
Extend getNullValue to work with struct and array types
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5718 91177308-0d34-0410-b5e6-96231b3b80d8
2003-03-06 21:02:18 +00:00
Chris Lattner
036b8aa030
Infrastructure for more compact bytecode files and REAL support for versioning
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5716 91177308-0d34-0410-b5e6-96231b3b80d8
2003-03-06 17:55:45 +00:00
Chris Lattner
6e5a0e4e89
s/Method/Function in variable and method names
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5715 91177308-0d34-0410-b5e6-96231b3b80d8
2003-03-06 17:18:14 +00:00
Chris Lattner
2a7b6bab7a
Continue simplifying error handling, s/method/function
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5714 91177308-0d34-0410-b5e6-96231b3b80d8
2003-03-06 17:15:19 +00:00
Chris Lattner
b6c46959fd
Cleanup error handling constructs
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5713 91177308-0d34-0410-b5e6-96231b3b80d8
2003-03-06 17:03:28 +00:00
Chris Lattner
09abe6aba3
Pull common code out
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5712 91177308-0d34-0410-b5e6-96231b3b80d8
2003-03-06 16:50:32 +00:00
Chris Lattner
3e76157d5a
Remove unneccesary forward decl
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5710 91177308-0d34-0410-b5e6-96231b3b80d8
2003-03-06 16:37:29 +00:00
Chris Lattner
0d75d8d73e
Use the std namespace explicitly
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5708 91177308-0d34-0410-b5e6-96231b3b80d8
2003-03-06 16:32:25 +00:00
Chris Lattner
decd0812ec
Implement %test7 in InstCombine/getelementptr.ll
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5704 91177308-0d34-0410-b5e6-96231b3b80d8
2003-03-05 22:33:14 +00:00
Chris Lattner
46a5f1f6e4
Implement CFGSimplify/PhiBlockMerge*.ll
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5702 91177308-0d34-0410-b5e6-96231b3b80d8
2003-03-05 21:36:33 +00:00
Chris Lattner
05ddff9b98
Simplify some of the PHI node interfaces
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5700 91177308-0d34-0410-b5e6-96231b3b80d8
2003-03-05 21:15:12 +00:00
Chris Lattner
e2ca540e7c
Implement testcase CFGSimplify/EqualPHIEdgeBlockMerge.ll
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5699 91177308-0d34-0410-b5e6-96231b3b80d8
2003-03-05 21:01:52 +00:00
Chris Lattner
506b4e4368
Fix bug: BasicAA/2003-03-04-GEPCrash.ll
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5695 91177308-0d34-0410-b5e6-96231b3b80d8
2003-03-04 16:40:17 +00:00
Chris Lattner
0252e49f6d
Convert LICM over to use AliasSetTracker. Besides being nicer, this automatically
...
allows LICM to use access sizes to help alias analysis be more precise.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5693 91177308-0d34-0410-b5e6-96231b3b80d8
2003-03-03 23:32:45 +00:00
Chris Lattner
adf99700a7
Fix bug: Assembler/2003-03-03-DuplicateConstant.ll
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5692 91177308-0d34-0410-b5e6-96231b3b80d8
2003-03-03 23:28:55 +00:00
Chris Lattner
319d05bff4
ADd two new 'add' methods
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5691 91177308-0d34-0410-b5e6-96231b3b80d8
2003-03-03 23:28:05 +00:00
Chris Lattner
dde601d0eb
Eliminate tons of bogus warnings
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5686 91177308-0d34-0410-b5e6-96231b3b80d8
2003-03-03 19:57:46 +00:00
Chris Lattner
fb743a937f
Change the mem2reg interface to accept a TargetData argument
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5685 91177308-0d34-0410-b5e6-96231b3b80d8
2003-03-03 17:25:18 +00:00
Chris Lattner
088b639e3a
Don't apply type information to load instructions if it will cause collapsing
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5684 91177308-0d34-0410-b5e6-96231b3b80d8
2003-03-03 17:13:31 +00:00
Chris Lattner
ff2d556bab
Fix a problem with negative indexes
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5681 91177308-0d34-0410-b5e6-96231b3b80d8
2003-03-02 23:43:34 +00:00
Chris Lattner
caadc93f7b
Fix bug: LICM/2003-02-28-PromoteDifferentType.ll
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5675 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-28 19:21:40 +00:00
Chris Lattner
bb05f1ee93
Add dump method for Loops
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5671 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-28 16:54:45 +00:00
Chris Lattner
6315938d68
Fix bug I introduced yesterday :(
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5669 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-28 16:54:17 +00:00
Chris Lattner
74cd04ea01
Fix bug: LICM/2003-02-27-PreheaderExitNodeUpdate.ll
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5667 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-28 03:07:54 +00:00
Chris Lattner
9f879cfb0a
Fix bug: 2003-02-27-PreheaderExitNodeUpdate.ll by updating exit node info
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5664 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-27 22:48:57 +00:00
Chris Lattner
a94837a28f
Simplify a bit by using a new member function
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5662 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-27 22:48:08 +00:00
Chris Lattner
f2e2925f95
Change behavior of changeExitBlock function to replace all instances of exit block
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5661 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-27 22:37:44 +00:00
Chris Lattner
7e7ad49c23
Add a new assertion to check that stuff is happening right
...
Ironically the exit block modification code wasn't updating the exit block
information itself. Fix this.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5659 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-27 22:31:07 +00:00
Chris Lattner
8601a9bf54
Fix bug: 2003-02-27-StoreSinkPHIs.ll
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5658 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-27 21:59:36 +00:00
Chris Lattner
5a8a2912d5
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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5656 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-27 21:51:38 +00:00
Chris Lattner
69269ac203
* Don't forget to update Loop information!
...
* Remove bogus assertion: there may be a single outside predecessor and
still need a new loop-preheader if the predecessor has multiple
successors. See bug: LICM/2003-02-27-PreheaderProblem.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5655 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-27 21:50:19 +00:00
Chris Lattner
4e2fd7574a
Replace assertion with a handler.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5653 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-27 20:55:48 +00:00
Chris Lattner
dbf3cd7952
* Significant changes to the preheader insertion pass:
...
- Now we perform loop exit-block splitting to ensure exit blocks are
always dominated by the loop header.
- We now preserve dominance frontier information
- This fixes bug: LICM/2003-02-26-LoopExitNotDominated.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5652 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-27 20:27:08 +00:00
Chris Lattner
5f82b8a1ad
- LoopInfo now calculates and tracks loop exit blocks
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5650 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-27 00:38:34 +00:00
Chris Lattner
31a9d185bf
Make the aliassettracker much more precise by actually tracking size
...
information for various accesses. What a concept.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5647 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-26 22:11:00 +00:00
Chris Lattner
c330ee6f02
Fix bug: BasicAA/2003-02-26-AccessSizeTest.ll
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5645 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-26 21:57:23 +00:00
Chris Lattner
a36635aba7
Fix several bugs in basic-aa
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5643 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-26 21:28:49 +00:00
Chris Lattner
ddd5b417c6
Rename -no-* to -disable-*
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5642 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-26 20:00:41 +00:00
Chris Lattner
8dcd17c938
Add new -no-aa implementation
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5641 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-26 19:57:10 +00:00
Chris Lattner
d501c13b7d
Move BasicAA pass out to it's own header file
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5640 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-26 19:41:54 +00:00
Chris Lattner
a612afc54e
Adjust to implement new AA interface
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5638 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-26 19:29:36 +00:00
Chris Lattner
e4b3339b9c
Adjust to new AA interface
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5637 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-26 19:29:16 +00:00
Chris Lattner
2d0a4a4eb8
Convert to work with new AliasAnalysis interface by conservatively assuming all pointers are arbitrarily large accesses
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5636 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-26 19:28:57 +00:00
Chris Lattner
f98d8d8611
Calculate and pass load sizes to the alias analysis infrastructure
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5635 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-26 19:27:35 +00:00
Chris Lattner
d80651df46
Adjust to new AA interface
...
Add tracking for Mod/Ref info
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5634 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-26 19:27:05 +00:00
Chris Lattner
14ac877e0a
- 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
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5633 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-26 19:26:51 +00:00
Chris Lattner
bf22c73c9c
Allow ImmutablePass's to require other immutable passes and to be initialized
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5630 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-26 19:10:57 +00:00
Chris Lattner
006a4a5990
Fix typeo
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5624 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-25 21:14:59 +00:00
Chris Lattner
e45e32d924
Remove wierd case that can never happen
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5623 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-25 20:27:09 +00:00
Chris Lattner
f0a93ed9c5
Rename Instruction::hasSideEffects() -> mayWriteToMemory()
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5620 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-24 20:48:32 +00:00
Chris Lattner
9971ac4a36
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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5619 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-24 20:37:56 +00:00
Chris Lattner
2e6e741b73
Initial implementation of Loop invariant memory->scalar promotion
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5613 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-24 03:52:32 +00:00
Chris Lattner
d99bf49a53
Split mem2reg promotion into two parts: a function which does the work, and
...
a pass which wraps the function. This allows other passes to use the functionality
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5610 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-22 23:57:48 +00:00
Chris Lattner
cc139de15a
Clean up std namespace references
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5608 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-22 22:25:17 +00:00
Chris Lattner
420df9bc78
Dramatically simplify building of natural loops and fix a bug where the BBMap
...
was not correctly computed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5606 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-22 21:33:11 +00:00
Chris Lattner
3a9a56e7b2
Fix the requisite bug that I introduced
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5605 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-20 00:28:00 +00:00
Chris Lattner
ae5d39e1bb
Fix 80 character formatting
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5604 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-20 00:18:07 +00:00
Chris Lattner
e30c763189
Fix bug: 2003-02-19-LoopInfoNestingBug.ll
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5603 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-20 00:17:17 +00:00
Chris Lattner
ad3448c917
4 new transformations:
...
* X*C + X --> X * (C+1)
* X + X*C --> X * (C+1)
* X - X*C --> X * (1-C)
* X*C - X --> X * (C-1)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5592 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-18 19:57:07 +00:00
Chris Lattner
a2881961b9
Add a variety of new transformations:
...
* A & ~A == 0
* A / (2^c) == A >> c if unsigned
* 0 / A == 0
* 1.0 * A == A
* A * (2^c) == A << c
* A ^ ~A == -1
* A | ~A == -1
* 0 % X = 0
* A % (2^c) == A & (c-1) if unsigned
* A - (A & B) == A & ~B
* -1 - A == ~A
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5587 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-18 19:28:33 +00:00
Chris Lattner
98d6f0ad03
Fix resolution of indirect function calls... whoops
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5576 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-14 23:27:18 +00:00
Anand Shukla
92d5e30e76
Changes to runtime framework
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5572 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-14 20:41:53 +00:00
Chris Lattner
f1c283859b
Mark function edges
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5571 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-14 20:25:47 +00:00
Chris Lattner
fd595203bd
Fix a bug that cause a crash resolving questionable function calls
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5567 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-14 19:12:29 +00:00
Chris Lattner
5f07a8b312
- 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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5566 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-14 06:28:00 +00:00
Chris Lattner
a3183be835
Fix a misunderstanding of the standard associative containers
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5565 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-14 05:34:36 +00:00
Chris Lattner
1a1a85d514
Don't put integer pointers (longs) into the scalar map.
...
This speeds stuff up by 10% on some tests, woot!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5564 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-14 04:55:58 +00:00
Chris Lattner
6b403233f7
Fix bug: LevelRaise/2003-02-13-CallRaise.ll
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5562 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-14 03:07:17 +00:00
Chris Lattner
be1094ea35
Hax0r around a deficiency in the Pass infrastructure
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5555 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-13 21:44:18 +00:00
Chris Lattner
352a6fa36f
Use the new tailclip property new added to graphviz CVS to make call nodes
...
actually intelligable
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5554 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-13 20:14:40 +00:00
Chris Lattner
0779388ff8
This speeds up processing LLVM a _lot_, 17% in the case of loading and destroying "vortex"
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5553 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-13 19:46:22 +00:00
Chris Lattner
731b2d7df5
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
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5552 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-13 19:09:00 +00:00
Chris Lattner
8166b7cdb8
Make more compatible with GCC 2.96
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5550 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-13 16:25:28 +00:00
Chris Lattner
e040f97066
Remove gunk that was supposed to make space evaluation more precise, but never worked.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5549 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-13 05:07:53 +00:00
Joel Stanley
ecd78ac1cb
Fixed alloca declaration problem on sun.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5546 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-12 20:45:00 +00:00
Chris Lattner
98d829c22f
Don't output times in "scientific" notation
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5544 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-12 19:02:13 +00:00
Chris Lattner
02896c97ff
Rename options
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5537 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-11 23:12:09 +00:00
Chris Lattner
72d29a4b00
Implement a "union-findy" version of DS-Analysis, which eliminates the
...
Referrers list on DSNodes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5536 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-11 23:11:51 +00:00
Chris Lattner
2cec1d3867
Minor tweaks to printing. Close the file before viewing it in viewGraph
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5535 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-11 19:27:27 +00:00
Chris Lattner
a954b5eb3a
Modest speedup which seems to help steens quite a bit on large graphs
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5532 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-10 18:47:23 +00:00
Chris Lattner
2609c07df3
Fix problem breaking GAP, use hasNoReferrers more
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5530 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-10 18:18:18 +00:00
Chris Lattner
e79eaa9b49
Implement a new "viewGraph" method which can be used to instantly view a graph from gdb
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5528 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-10 18:17:07 +00:00
Chris Lattner
4f2cfc0d74
Rearrange code
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5527 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-10 18:16:36 +00:00
Chris Lattner
88c7294b80
Fix problem breaking Fhourstones
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5526 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-10 18:16:19 +00:00
Chris Lattner
dab73bef89
Revert Anand's patch which broke the build
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5525 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-10 15:55:50 +00:00
Chris Lattner
0f777ab96a
Make steensgaards performance not shameful
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5524 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-10 00:14:57 +00:00
Chris Lattner
1e56c54f41
Don't insert null entries into the scalar map for constexpr (cast null to Ty)
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5523 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-09 23:04:12 +00:00
Anand Shukla
f013d3d40b
*** empty log message ***
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5522 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-09 21:15:36 +00:00
Chris Lattner
0ad4c00c68
Remove the -debug option from release executables
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5521 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-09 21:13:57 +00:00
Chris Lattner
638b381713
Allow printing of various types of alias analysis results
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5520 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-09 20:40:13 +00:00
Chris Lattner
762d2f0897
Implement knowledge in BasicAA that &A->field != &A and (P+1) != P
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5519 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-09 19:38:11 +00:00
Chris Lattner
44f340250e
- Fix BasicAA to correctly detect the non-aliasness of A[1] & A[2]
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5518 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-09 19:27:21 +00:00
Chris Lattner
af28351773
Switch to using the right call vector
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5517 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-09 19:26:47 +00:00
Chris Lattner
e0fbd48e19
Fix major bugs in incompleteness marking that were pessimizing results
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5515 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-09 18:42:43 +00:00
Chris Lattner
47a307aef0
Print out the steens graph if -debug is specified
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5514 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-09 18:42:16 +00:00
Chris Lattner
93d7a212cc
* 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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5513 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-09 18:41:49 +00:00
Chris Lattner
e77f1456d7
Add a special case for main because we know it's incoming arguments don't alias
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5511 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-08 23:08:02 +00:00
Chris Lattner
1ef0da2e25
Fix a bug where we would mark the callees arguments incomplete if the caller was external.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5510 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-08 23:07:39 +00:00
Chris Lattner
2c1d7cf13b
Fix division by zero problem
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5509 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-08 23:04:50 +00:00
Chris Lattner
6022ef463f
Remove explicit result counters
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5508 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-08 23:03:17 +00:00
Chris Lattner
ca3f790f71
Add a flag which effectively disables field sensitivity
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5506 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-08 20:18:39 +00:00
Chris Lattner
1dbd1b820f
Don't bother counting alias results, allow the AliasAnalysisCounter to do that.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5505 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-07 20:39:48 +00:00
Chris Lattner
a89feb55e0
Allow counting multiple passes, and print the pass name counted
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5504 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-07 20:39:17 +00:00
Chris Lattner
70e332d34b
New general purpose alias analysis result auditor
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5503 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-07 19:46:03 +00:00
Chris Lattner
68963a47e7
Add a summary
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5500 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-06 22:06:08 +00:00
Chris Lattner
617d92c7d9
Fix a problem Sumant was running into
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5499 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-06 22:03:46 +00:00
Chris Lattner
9798ca55e1
Simple N^2 alias anlysis accuracy checker
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5498 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-06 21:29:49 +00:00
Chris Lattner
5d2745801c
Fix an assertion failure
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5496 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-06 00:15:08 +00:00
Chris Lattner
923fc05b3a
Implement optimization for direct function call case. This dramatically
...
reduces the number of function nodes created and speeds up analysis by
about 10% overall.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5495 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-05 21:59:58 +00:00
Chris Lattner
bbe5ac1458
Squelch warning
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5494 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-05 21:44:28 +00:00
Chris Lattner
b8925bce83
Remove bogus assertion
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5492 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-04 16:33:23 +00:00
Chris Lattner
878e521b1e
Fix a huge bug with handling non-pointer instructions
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5491 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-04 00:59:50 +00:00
Chris Lattner
24d80079a8
Make the TD pass not include all of the call nodes from the local pass,
...
eliminating incomplete markers from them
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5490 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-04 00:59:32 +00:00
Chris Lattner
f52ade928c
Add sanity check
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5489 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-04 00:03:57 +00:00
Chris Lattner
e6c0b5dba4
Fix steensgaard to work on a lot more cases...
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5488 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-04 00:03:37 +00:00
Chris Lattner
714752fa8e
Fix printing of nonfunction graphs
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5487 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-04 00:03:18 +00:00
Chris Lattner
0a91e63d92
Rename variable
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5486 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-03 22:51:53 +00:00
Chris Lattner
4923d1be91
Hack to work around deficiency in pass infrastructure
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5485 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-03 22:51:28 +00:00