[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