diff options
author | Chris Lattner <sabre@nondot.org> | 2006-12-05 23:43:59 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2006-12-05 23:43:59 +0000 |
commit | 518f6fa310df08a8e205adda62b145d50971a38f (patch) | |
tree | e7e1536e0c85479f23eec4e494795bad5fe24bf3 | |
parent | 9faab9bd93ccca49e074cc86ad8e3e39c01f585c (diff) |
Fix Transforms/InstCombine/2006-12-05-fp-to-int-ext.ll, fixing an out-of-
stack-space issue in the ppc bootstrap.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32244 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/VMCore/Instructions.cpp | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/lib/VMCore/Instructions.cpp b/lib/VMCore/Instructions.cpp index 65a910b8e8..1cc04334cd 100644 --- a/lib/VMCore/Instructions.cpp +++ b/lib/VMCore/Instructions.cpp @@ -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 | |