Fix Transforms/InstCombine/2006-12-05-fp-to-int-ext.ll, fixing an out-of-
authorChris Lattner <sabre@nondot.org>
Tue, 5 Dec 2006 23:43:59 +0000 (23:43 +0000)
committerChris Lattner <sabre@nondot.org>
Tue, 5 Dec 2006 23:43:59 +0000 (23:43 +0000)
stack-space issue in the ppc bootstrap.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32244 91177308-0d34-0410-b5e6-96231b3b80d8

lib/VMCore/Instructions.cpp

index 65a910b8e8ca5ed9793507dd040443cfa262c147..1cc04334cdbd2cac90c60e72d308b6c1439d3015 100644 (file)
@@ -1337,7 +1337,14 @@ unsigned CastInst::isEliminableCastPair(
   // 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 @@ unsigned CastInst::isEliminableCastPair(
     {  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     |