- Feb 02, 2007
-
-
Reid Spencer authored
llvm-svn: 33785
-
Reid Spencer authored
llvm-svn: 33783
-
Chris Lattner authored
llvm-svn: 33779
-
Reid Spencer authored
This feature is needed in order to support shifts of more than 255 bits on large integer types. This changes the syntax for llvm assembly to make shl, ashr and lshr instructions look like a binary operator: shl i32 %X, 1 instead of shl i32 %X, i8 1 Additionally, this should help a few passes perform additional optimizations. llvm-svn: 33776
-
- Feb 01, 2007
-
-
Chris Lattner authored
pessimization where instcombine can sink a load (good for code size) that prevents an alloca from being promoted by mem2reg (bad for everything). llvm-svn: 33771
-
Reid Spencer authored
initializing the Res variable to 0 and asserting it is not zero after the result should have been created. llvm-svn: 33761
-
Chris Lattner authored
updating. These were exposed by Devang's recent passmgr changes (with non-default passorderings) because now the inliner can be interleved with the LCSSA pass. llvm-svn: 33760
-
- Jan 31, 2007
-
-
Chris Lattner authored
llvm-svn: 33715
-
Chris Lattner authored
llvm-svn: 33713
-
Chris Lattner authored
llvm-svn: 33712
-
Chris Lattner authored
llvm-svn: 33705
-
Chris Lattner authored
llvm-svn: 33693
-
Chris Lattner authored
llvm-svn: 33688
-
Chris Lattner authored
llvm-svn: 33680
-
Chris Lattner authored
libanalysis/ConstantFolding.cpp. llvm-svn: 33679
-
Chris Lattner authored
llvm-svn: 33678
-
Chris Lattner authored
llvm-svn: 33677
-
Chris Lattner authored
used by constant folding. llvm-svn: 33676
-
Chris Lattner authored
llvm-svn: 33674
-
Chris Lattner authored
llvm-svn: 33672
-
Chris Lattner authored
llvm-svn: 33671
-
Chris Lattner authored
ConstantFoldInstOperands/ConstantFoldCall to take a pointer to an array of operands + size, instead of an std::vector. In some cases, switch to using a SmallVector instead of a vector. This allows us to get rid of some special case gross code that was there to avoid the cost of constructing a vector. llvm-svn: 33670
-
- Jan 30, 2007
-
-
Chris Lattner authored
llvm-svn: 33666
-
Chris Lattner authored
This occurs in C++ code like: #include <iostream> #include <iterator> int a[] = { 1, 2, 3, 4, 5 }; int main() { using namespace std; copy(a, a + sizeof(a)/sizeof(a[0]), ostream_iterator<int>(cout, "\n")); return 0; } Before we would decide the loop trip count is: sdiv (i32 sub (i32 ptrtoint (i32* getelementptr ([5 x i32]* @a, i32 0, i32 5) to i32), i32 ptrtoint ([5 x i32]* @a to i32)), i32 4) Now we decide it is "5". Amazing. This code will need to be refactored, but I'm doing that as a separate commit. llvm-svn: 33665
-
Reid Spencer authored
confusion with external linkage types. llvm-svn: 33663
-
- Jan 29, 2007
-
-
Nick Lewycky authored
Fix initializeConstant, now initializeInt. Fixes major performance bottleneck. X == Y || X->DominatedBy(Y) is redundant. Remove the X == Y part. Fix crasher in makeEqual where getOrInsertNode would add a new constant, producing an NE relationship between the two members we're trying to make equal. This now allows us to mark more BBs as unreachable. llvm-svn: 33612
-
- Jan 28, 2007
-
-
Anton Korobeynikov authored
1. New parameter attribute called 'inreg'. It has meaning "place this parameter in registers, if possible". This is some generalization of gcc's regparm(n) attribute. It's currently used only in X86-32 backend. 2. Completely rewritten CC handling/lowering code inside X86 backend. Merged stdcall + c CCs and fastcall + fast CC. 3. Dropped CSRET CC. We cannot add struct return variant for each target-specific CC (e.g. stdcall + csretcc and so on). 4. Instead of CSRET CC introduced 'sret' parameter attribute. Setting in on first attribute has meaning 'This is hidden pointer to structure return. Handle it gently'. 5. Fixed small bug in llvm-extract + add new feature to FunctionExtraction pass, which relinks all internal-linkaged callees from deleted function to external linkage. This will allow further linking everything together. NOTEs: 1. Documentation will be updated soon. 2. llvm-upgrade should be improved to translate csret => sret. Before this, there will be some unexpected test fails. llvm-svn: 33597
-
Chris Lattner authored
Mozilla that Anton tracked down. llvm-svn: 33591
-
- Jan 26, 2007
-
-
Jim Laskey authored
for debugging and exception handling. llvm-svn: 33550
-
Reid Spencer authored
The Module::setEndianness and Module::setPointerSize methods have been removed. Instead you can get/set the DataLayout. Adjust thise accordingly. llvm-svn: 33530
-
Devang Patel authored
llvm-svn: 33514
-
Devang Patel authored
llvm-svn: 33511
-
- Jan 25, 2007
-
-
Chris Lattner authored
code. llvm-svn: 33500
-
- Jan 22, 2007
-
-
Reid Spencer authored
changes: (1) don't special case for i1 any more, (2) use the new TargetData::getTypeSizeInBits method to ensure source and dest are the same bit width. llvm-svn: 33427
-
- Jan 21, 2007
-
-
Reid Spencer authored
Clean up handling of isFloatingPoint() and dealing with PackedType. Patch by Gordon Henriksen! llvm-svn: 33415
-
Reid Spencer authored
We only want to do this if the src and destination types have the same bit width. This patch uses TargetData::getTypeSizeInBits() instead of making a special case for integer types and avoiding the transform if they don't match. llvm-svn: 33414
-
- Jan 20, 2007
-
-
Chris Lattner authored
these alignment amounts to align scalars when we can. Patch by Scott Michel! llvm-svn: 33409
-
Owen Anderson authored
llvm-svn: 33397
-
- Jan 19, 2007
-
-
Reid Spencer authored
don't allow the transform if V and the pointer's element type are different width integer types. llvm-svn: 33371
-
Reid Spencer authored
This is the final patch for this PR. It implements some minor cleanup in the use of IntegerType, to wit: 1. Type::getIntegerTypeMask -> IntegerType::getBitMask 2. Type::Int*Ty changed to IntegerType* from Type* 3. ConstantInt::getType() returns IntegerType* now, not Type* This also fixes PR1120. Patch by Sheng Zhou. llvm-svn: 33370
-