[llvm-commits] CVS: llvm/lib/VMCore/Instructions.cpp
Chris Lattner
sabre at nondot.org
Tue Dec 5 15:44:13 PST 2006
Changes in directory llvm/lib/VMCore:
Instructions.cpp updated: 1.52 -> 1.53
---
Log message:
Fix Transforms/InstCombine/2006-12-05-fp-to-int-ext.ll, fixing an out-of-
stack-space issue in the ppc bootstrap.
---
Diffs of the changes: (+10 -3)
Instructions.cpp | 13 ++++++++++---
1 files changed, 10 insertions(+), 3 deletions(-)
Index: llvm/lib/VMCore/Instructions.cpp
diff -u llvm/lib/VMCore/Instructions.cpp:1.52 llvm/lib/VMCore/Instructions.cpp:1.53
--- llvm/lib/VMCore/Instructions.cpp:1.52 Mon Dec 4 21:28:26 2006
+++ llvm/lib/VMCore/Instructions.cpp Tue Dec 5 17:43:59 2006
@@ -1337,7 +1337,14 @@
// PTRTOINT n/a Pointer n/a Integral Unsigned
// INTTOPTR n/a Integral Unsigned Pointer n/a
// BITCONVERT = FirstClass n/a FirstClass n/a
- //
+ //
+ // NOTE: some transforms are safe, but we consider them to be non-profitable.
+ // For example, we could merge "fptoui double to uint" + "zext uint to ulong",
+ // into "fptoui double to ulong", but this loses information about the range
+ // of the produced value (we no longer know the top-part is all zeros).
+ // Further this conversion is often much more expensive for typical hardware,
+ // and causes issues when building libgcc. We disallow fptosi+sext for the
+ // same reason.
const unsigned numCastOps =
Instruction::CastOpsEnd - Instruction::CastOpsBegin;
static const uint8_t CastResults[numCastOps][numCastOps] = {
@@ -1349,8 +1356,8 @@
{ 1, 0, 0,99,99, 0, 0,99,99,99, 0, 3 }, // Trunc -+
{ 8, 1, 9,99,99, 2, 0,99,99,99, 2, 3 }, // ZExt |
{ 8, 0, 1,99,99, 0, 2,99,99,99, 0, 3 }, // SExt |
- { 0, 1, 0,99,99, 0, 0,99,99,99, 0, 3 }, // FPToUI |
- { 0, 0, 1,99,99, 0, 0,99,99,99, 0, 3 }, // FPToSI |
+ { 0, 0, 0,99,99, 0, 0,99,99,99, 0, 3 }, // FPToUI |
+ { 0, 0, 0,99,99, 0, 0,99,99,99, 0, 3 }, // FPToSI |
{ 99,99,99, 0, 0,99,99, 0, 0,99,99, 4 }, // UIToFP +- firstOp
{ 99,99,99, 0, 0,99,99, 0, 0,99,99, 4 }, // SIToFP |
{ 99,99,99, 0, 0,99,99, 1, 0,99,99, 4 }, // FPTrunc |
More information about the llvm-commits
mailing list