| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
"Support/Debug.h".
llvm-svn: 15089
|
|
|
|
|
|
|
|
|
|
|
| |
* Test for whether bits are shifted out during the optzn.
If so, the fold is illegal, though it can be handled explicitly for setne/seteq
This fixes the miscompilation of 254.gap last night, which was a latent bug
exposed by other optimizer improvements.
llvm-svn: 15085
|
|
|
|
|
|
| |
"simplify" a bit of code for comparison/and folding
llvm-svn: 15082
|
|
|
|
|
|
| |
the appopriate size. This gives us the ability to eliminate int -> ptr -> int
llvm-svn: 15063
|
|
|
|
|
|
|
| |
return, clone the 'ret' BB code into the block AFTER the inlined call, not the
other way around.
llvm-svn: 15030
|
|
|
|
| |
llvm-svn: 15029
|
|
|
|
|
|
| |
to constify 14 globals instead of 4 in a trivial C++ testcase.
llvm-svn: 15027
|
|
|
|
| |
llvm-svn: 15024
|
|
|
|
| |
llvm-svn: 15022
|
|
|
|
|
|
|
|
| |
actually care about. Someday when the cast instruction is gone, we can do
better here, but this will do for now. This implements
instcombine/cast.ll:test17/18 as well.
llvm-svn: 15018
|
|
|
|
| |
llvm-svn: 14974
|
|
|
|
|
|
|
|
|
|
| |
night compiling cfrac. It did not realize that code like this:
int G; int *H = &G;
takes the address of G.
llvm-svn: 14973
|
|
|
|
| |
llvm-svn: 14972
|
|
|
|
| |
llvm-svn: 14968
|
|
|
|
| |
llvm-svn: 14967
|
|
|
|
| |
llvm-svn: 14966
|
|
|
|
| |
llvm-svn: 14965
|
|
|
|
|
|
| |
too.
llvm-svn: 14964
|
|
|
|
| |
llvm-svn: 14963
|
|
|
|
| |
llvm-svn: 14958
|
|
|
|
| |
llvm-svn: 14957
|
|
|
|
|
|
| |
- Replace ConstantPointerRef usage with GlobalValue usage
llvm-svn: 14953
|
|
|
|
|
|
|
|
| |
- Replace ConstantPointerRef usage with GlobalValue usage
- Minimize redundant isa<GlobalValue> usage
- Correct isa<Constant> for GlobalValue subclass
llvm-svn: 14950
|
|
|
|
|
|
| |
- Minimize redundant isa<GlobalValue> usage
llvm-svn: 14948
|
|
|
|
|
|
|
| |
- Replace ConstantPointerRef usage with GlobalValue usage
- Correct isa<Constant> for GlobalValue subclass
llvm-svn: 14947
|
|
|
|
|
|
|
| |
- Minimize redundant isa<GlobalValue> usage
- Correct isa<Constant> for GlobalValue subclass
llvm-svn: 14946
|
|
|
|
|
|
|
| |
- Replace ConstantPointerRef usage with GlobalValue usage
- Rename methods to get ride of ConstantPointerRef usage
llvm-svn: 14945
|
|
|
|
|
|
| |
- Excise dead CPR procesing.
llvm-svn: 14944
|
|
|
|
|
|
|
| |
- Replace ConstantPointerRef usage with GlobalValue usage
- Correct test ordering for GlobalValue subclass
llvm-svn: 14943
|
|
|
|
|
|
|
| |
Speed up SCCP substantially by processing overdefined values quickly. This
patch speeds up SCCP by about 30-40% on large testcases.
llvm-svn: 14861
|
|
|
|
|
|
|
| |
This version takes about 1s longer than the previous one (down to 2.35s),
but on the positive side, it actually works :)
llvm-svn: 14856
|
|
|
|
| |
llvm-svn: 14853
|
|
|
|
|
|
|
|
| |
This eliminates an N*N*logN algorithm from the loop simplify pass, replacing
it with a much simpler and faster alternative. In a debug build, this reduces
gccas time on eon from 85s to 42s.
llvm-svn: 14851
|
|
|
|
| |
llvm-svn: 14840
|
|
|
|
| |
llvm-svn: 14839
|
|
|
|
|
|
|
| |
malloc lowering. This means that lowerallocations doesn't need targetdata
anymore. yaay.
llvm-svn: 14835
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
"load (cast foo)". This allows us to compile C++ code like this:
class Bclass {
public: virtual int operator()() { return 666; }
};
class Dclass: public Bclass {
public: virtual int operator()() { return 667; }
} ;
int main(int argc, char** argv) {
Dclass x;
return x();
}
Into this:
int %main(int %argc, sbyte** %argv) {
entry:
call void %__main( )
ret int 667
}
Instead of this:
int %main(int %argc, sbyte** %argv) {
entry:
%x = alloca "struct.std::bad_typeid" ; <"struct.std::bad_typeid"*> [#uses=3]
call void %__main( )
%tmp.1.i.i = getelementptr "struct.std::bad_typeid"* %x, uint 0, uint 0, uint 0 ; <int (...)***> [#uses=1]
store int (...)** getelementptr ([3 x int (...)*]* %vtable for Bclass, int 0, long 2), int (...)*** %tmp.1.i.i
%tmp.3.i = getelementptr "struct.std::bad_typeid"* %x, int 0, uint 0, uint 0 ; <int (...)***> [#uses=1]
store int (...)** getelementptr ([3 x int (...)*]* %vtable for Dclass, int 0, long 2), int (...)*** %tmp.3.i
%tmp.5 = load int ("struct.std::bad_typeid"*)** cast (int (...)** getelementptr ([3 x int (...)*]* %vtable for Dclass, int 0, long 2) to int
("struct.std::bad_typeid"*)**) ; <int ("struct.std::bad_typeid"*)*> [#uses=1]
%tmp.6 = call int %tmp.5( "struct.std::bad_typeid"* %x ) ; <int> [#uses=1]
ret int %tmp.6
ret int 0
}
In order words, we now resolve the virtual function call.
llvm-svn: 14783
|
|
|
|
| |
llvm-svn: 14649
|
|
|
|
|
|
| |
the first is a zero, we should leave it alone.
llvm-svn: 14648
|
|
|
|
|
|
|
| |
Don't touch GEPs for which DecomposeArrayRef is not going to do anything
special (e.g., < 2 indices, or 2 indices and the last one is a constant.)
llvm-svn: 14647
|
|
|
|
| |
llvm-svn: 14640
|
|
|
|
| |
llvm-svn: 14638
|
|
|
|
|
|
|
| |
Also, remove X % -1 = 0, because it's not true for unsigneds, and the
signed case is superceeded by this new handling.
llvm-svn: 14637
|
|
|
|
| |
llvm-svn: 14622
|
|
|
|
| |
llvm-svn: 14587
|
|
|
|
| |
llvm-svn: 14584
|
|
|
|
| |
llvm-svn: 14560
|
|
|
|
| |
llvm-svn: 14541
|
|
|
|
| |
llvm-svn: 14478
|
|
|
|
| |
llvm-svn: 14460
|