| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
llvm-svn: 5763
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
llvm-svn: 5759
|
|
|
|
|
|
|
|
| |
critical edges)
* Small modification to be more efficient
llvm-svn: 5757
|
|
|
|
| |
llvm-svn: 5755
|
|
|
|
| |
llvm-svn: 5754
|
|
|
|
| |
llvm-svn: 5753
|
|
|
|
|
|
| |
* Add support for implicit zero initializers
llvm-svn: 5750
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- 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.
llvm-svn: 5749
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- 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.
llvm-svn: 5748
|
|
|
|
|
|
|
|
| |
- 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
llvm-svn: 5743
|
|
|
|
| |
llvm-svn: 5740
|
|
|
|
| |
llvm-svn: 5738
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
}
llvm-svn: 5736
|
|
|
|
| |
llvm-svn: 5734
|
|
|
|
| |
llvm-svn: 5733
|
|
|
|
| |
llvm-svn: 5731
|
|
|
|
|
|
| |
Implement new shift optimizations for shifting the result of a shift.
llvm-svn: 5729
|
|
|
|
| |
llvm-svn: 5728
|
|
|
|
| |
llvm-svn: 5722
|
|
|
|
| |
llvm-svn: 5720
|
|
|
|
|
|
| |
Extend getNullValue to work with struct and array types
llvm-svn: 5718
|
|
|
|
| |
llvm-svn: 5716
|
|
|
|
| |
llvm-svn: 5715
|
|
|
|
| |
llvm-svn: 5714
|
|
|
|
| |
llvm-svn: 5713
|
|
|
|
| |
llvm-svn: 5712
|
|
|
|
| |
llvm-svn: 5710
|
|
|
|
| |
llvm-svn: 5708
|
|
|
|
| |
llvm-svn: 5704
|
|
|
|
| |
llvm-svn: 5702
|
|
|
|
| |
llvm-svn: 5700
|
|
|
|
| |
llvm-svn: 5699
|
|
|
|
| |
llvm-svn: 5695
|
|
|
|
|
|
|
|
| |
automatically
allows LICM to use access sizes to help alias analysis be more precise.
llvm-svn: 5693
|
|
|
|
| |
llvm-svn: 5692
|
|
|
|
| |
llvm-svn: 5691
|
|
|
|
| |
llvm-svn: 5686
|
|
|
|
| |
llvm-svn: 5685
|
|
|
|
| |
llvm-svn: 5684
|
|
|
|
| |
llvm-svn: 5681
|
|
|
|
| |
llvm-svn: 5675
|
|
|
|
| |
llvm-svn: 5671
|
|
|
|
| |
llvm-svn: 5669
|
|
|
|
| |
llvm-svn: 5667
|
|
|
|
| |
llvm-svn: 5664
|
|
|
|
| |
llvm-svn: 5662
|
|
|
|
|
|
| |
block
llvm-svn: 5661
|
|
|
|
|
|
|
| |
Ironically the exit block modification code wasn't updating the exit block
information itself. Fix this.
llvm-svn: 5659
|
|
|
|
| |
llvm-svn: 5658
|
|
|
|
|
|
|
|
| |
There may be a single outside predecessor and
still need a new loop-preheader if the predecessor has multiple
successors.
llvm-svn: 5656
|