[llvm-commits] [llvm] r63791 - /llvm/branches/release_25/lib/Analysis/ScalarEvolution.cpp
Tanya Lattner
tonic at nondot.org
Wed Feb 4 15:14:59 PST 2009
Author: tbrethou
Date: Wed Feb 4 17:14:59 2009
New Revision: 63791
URL: http://llvm.org/viewvc/llvm-project?rev=63791&view=rev
Log:
Back out r62958 from the release branch.
Modified:
llvm/branches/release_25/lib/Analysis/ScalarEvolution.cpp
Modified: llvm/branches/release_25/lib/Analysis/ScalarEvolution.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/release_25/lib/Analysis/ScalarEvolution.cpp?rev=63791&r1=63790&r2=63791&view=diff
==============================================================================
--- llvm/branches/release_25/lib/Analysis/ScalarEvolution.cpp (original)
+++ llvm/branches/release_25/lib/Analysis/ScalarEvolution.cpp Wed Feb 4 17:14:59 2009
@@ -585,7 +585,17 @@
}
// We need at least W + T bits for the multiplication step
- unsigned CalculationBits = W + T;
+ // FIXME: A temporary hack; we round up the bitwidths
+ // to the nearest power of 2 to be nice to the code generator.
+ unsigned CalculationBits = 1U << Log2_32_Ceil(W + T);
+ // FIXME: Temporary hack to avoid generating integers that are too wide.
+ // Although, it's not completely clear how to determine how much
+ // widening is safe; for example, on X86, we can't really widen
+ // beyond 64 because we need to be able to do multiplication
+ // that's CalculationBits wide, but on X86-64, we can safely widen up to
+ // 128 bits.
+ if (CalculationBits > 64)
+ return new SCEVCouldNotCompute();
// Calcuate 2^T, at width T+W.
APInt DivFactor = APInt(CalculationBits, 1).shl(T);
More information about the llvm-commits
mailing list