Changes in directory llvm/lib/Target/PowerPC:
PPCISelLowering.cpp updated: 1.269 -> 1.269.2.1 --- Log message: Merging from mainline. --- Diffs of the changes: (+17 -9) PPCISelLowering.cpp | 26 +++++++++++++++++--------- 1 files changed, 17 insertions(+), 9 deletions(-) Index: llvm/lib/Target/PowerPC/PPCISelLowering.cpp diff -u llvm/lib/Target/PowerPC/PPCISelLowering.cpp:1.269 llvm/lib/Target/PowerPC/PPCISelLowering.cpp:1.269.2.1 --- llvm/lib/Target/PowerPC/PPCISelLowering.cpp:1.269 Mon Apr 9 17:10:05 2007 +++ llvm/lib/Target/PowerPC/PPCISelLowering.cpp Fri May 18 00:57:28 2007 @@ -3326,31 +3326,39 @@ case 'N': case 'O': case 'P': { - if (!isa<ConstantSDNode>(Op)) return SDOperand(0,0);// Must be an immediate. - unsigned Value = cast<ConstantSDNode>(Op)->getValue(); + ConstantSDNode *CST = dyn_cast<ConstantSDNode>(Op); + if (!CST) return SDOperand(0, 0); // Must be an immediate to match. + unsigned Value = CST->getValue(); switch (Letter) { default: assert(0 && "Unknown constraint letter!"); case 'I': // "I" is a signed 16-bit constant. - if ((short)Value == (int)Value) return Op; + if ((short)Value == (int)Value) + return DAG.getTargetConstant(Value, Op.getValueType()); break; case 'J': // "J" is a constant with only the high-order 16 bits nonzero. case 'L': // "L" is a signed 16-bit constant shifted left 16 bits. - if ((short)Value == 0) return Op; + if ((short)Value == 0) + return DAG.getTargetConstant(Value, Op.getValueType()); break; case 'K': // "K" is a constant with only the low-order 16 bits nonzero. - if ((Value >> 16) == 0) return Op; + if ((Value >> 16) == 0) + return DAG.getTargetConstant(Value, Op.getValueType()); break; case 'M': // "M" is a constant that is greater than 31. - if (Value > 31) return Op; + if (Value > 31) + return DAG.getTargetConstant(Value, Op.getValueType()); break; case 'N': // "N" is a positive constant that is an exact power of two. - if ((int)Value > 0 && isPowerOf2_32(Value)) return Op; + if ((int)Value > 0 && isPowerOf2_32(Value)) + return DAG.getTargetConstant(Value, Op.getValueType()); break; case 'O': // "O" is the constant zero. - if (Value == 0) return Op; + if (Value == 0) + return DAG.getTargetConstant(Value, Op.getValueType()); break; case 'P': // "P" is a constant whose negation is a signed 16-bit constant. - if ((short)-Value == (int)-Value) return Op; + if ((short)-Value == (int)-Value) + return DAG.getTargetConstant(Value, Op.getValueType()); break; } break; _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits