- Jan 29, 2005
-
-
Chris Lattner authored
memuse at the end, thus it is signed. llvm-svn: 19904
-
Jeff Cohen authored
llvm-svn: 19903
-
Chris Lattner authored
llvm-svn: 19902
-
Chris Lattner authored
llvm-svn: 19901
-
Chris Lattner authored
llvm-svn: 19900
-
Chris Lattner authored
llvm-svn: 19899
-
Chris Lattner authored
llvm-svn: 19898
-
Chris Lattner authored
llvm-svn: 19897
-
Chris Lattner authored
Adjust TmpInstruction to work with the new User model. llvm-svn: 19896
-
Chris Lattner authored
llvm-svn: 19895
-
Chris Lattner authored
llvm-svn: 19894
-
Chris Lattner authored
llvm-svn: 19893
-
Chris Lattner authored
llvm-svn: 19892
-
Chris Lattner authored
Adjust to changes in the User class, operand handling is very different. PHI node and switch statements must handle explicit resizing of operand lists. llvm-svn: 19891
-
Chris Lattner authored
manage their operands. llvm-svn: 19890
-
Chris Lattner authored
llvm-svn: 19889
-
Chris Lattner authored
llvm-svn: 19888
-
Chris Lattner authored
class. llvm-svn: 19887
-
Chris Lattner authored
llvm-svn: 19886
-
Chris Lattner authored
directly embed their operands. llvm-svn: 19885
-
Chris Lattner authored
llvm-svn: 19884
-
Chris Lattner authored
and num operands in the User class. this allows us to embed the operands directly in the subclasses if possible. For example, for binary operators we store the two operands in the derived class. The has several effects: 1. it improves locality because the operands and instruction are together 2. it makes accesses to operands faster (one less load) if you access them through the derived class pointer. For example this: Value *GetBinaryOperatorOp(BinaryOperator *I, int i) { return I->getOperand(i); } Was compiled to: _Z19GetBinaryOperatorOpPN4llvm14BinaryOperatorEi: movl 4(%esp), %edx movl 8(%esp), %eax sall $4, %eax movl 24(%edx), %ecx addl %ecx, %eax movl (%eax), %eax ret and is now compiled to: _Z19GetBinaryOperatorOpPN4llvm14BinaryOperatorEi: movl 8(%esp), %eax movl 4(%esp), %edx sall $4, %eax addl %edx, %eax movl 44(%eax), %eax ret Accesses through "Instruction*" are unmodified. 3. This reduces memory consumption (by about 3%) by eliminating 1 word of vector overhead and a malloc header on a seperate object. 4. This speeds up gccas about 10% (both debug and release builds) on large things (such as 176.gcc). For example, it takes a debug build from 172.9 -> 155.6s and a release gccas from 67.7 -> 61.8s llvm-svn: 19883
-
Andrew Lenharth authored
llvm-svn: 19882
-
Chris Lattner authored
llvm-svn: 19881
-
- Jan 28, 2005
-
-
Chris Lattner authored
llvm-svn: 19880
-
Chris Lattner authored
truncated, e.g. (truncate:i8 something:i16) on a 32 or 64-bit RISC. llvm-svn: 19879
-
Chris Lattner authored
llvm-svn: 19878
-
Reid Spencer authored
Patch contributed by Vladimer Merzliakov. llvm-svn: 19877
-
Chris Lattner authored
llvm-svn: 19876
-
Chris Lattner authored
* Properly compile this: struct a {}; int test() { struct a b[2]; if (&b[0] != &b[1]) abort (); return 0; } to 'return 0', not abort(). llvm-svn: 19875
-
Chris Lattner authored
not change the address. llvm-svn: 19874
-
Chris Lattner authored
llvm-svn: 19873
-
Chris Lattner authored
llvm-svn: 19872
-
Chris Lattner authored
closed the file. This unbreaks the build. llvm-svn: 19871
-
Andrew Lenharth authored
llvm-svn: 19870
-
Jeff Cohen authored
llvm-svn: 19869
-
Reid Spencer authored
llvm-svn: 19868
-
Andrew Lenharth authored
llvm-svn: 19867
-
Chris Lattner authored
legalized, and actually return the correct result when we legalize the chain first. llvm-svn: 19866
-
Chris Lattner authored
llvm-svn: 19865
-