================ @@ -1687,6 +1692,46 @@ static void WriteConstantInternal(raw_ostream &Out, const Constant *CV, return; } + // When in the mode where Constant{Int,FP} do not support vector types the + // "splat(Ty val)" syntax is interpreted as a ConstantDataVector. Maintaining + // this association when outputiing the IR will significantly reduce the + // output changes when in the mode where Constant{Int,FP} do support vector + // types. In turn this should make it easier to spot difference in output + // when switching between the modes. Once the transition is complete this + // code will be removed. + if (const ConstantDataVector *CDV = dyn_cast<ConstantDataVector>(CV)) { + if (auto *SplatVal = CDV->getSplatValue()) { + Type* EltTy = SplatVal->getType(); + + if (EltTy->isIntegerTy() && !UseConstantIntForFixedLengthSplat) { ---------------- paulwalker-arm wrote:
As predicted the conditions did not affect the behaviour and have been removed. The one place where constants are still printed as `<Ty V1, Ty V2...>` is shufflevector masks, which go down a dedicated path. I've kept this as is for now because figure non-zero splat masks are rare and `ShuffleVectorInst::isValidOperands` currently rejects `ConstantInt` anyway. https://github.com/llvm/llvm-project/pull/112548 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits