[llvm] [DirectX] Legalize i8 allocas (PR #137399)

Farzon Lotfi via llvm-commits llvm-commits at lists.llvm.org
Tue Apr 29 11:05:27 PDT 2025


================
@@ -81,16 +108,29 @@ static void fixI8TruncUseChain(Instruction &I,
     Value *NewInst =
         Builder.CreateBinOp(BO->getOpcode(), NewOperands[0], NewOperands[1]);
     if (auto *OBO = dyn_cast<OverflowingBinaryOperator>(&I)) {
-      if (OBO->hasNoSignedWrap())
-        cast<BinaryOperator>(NewInst)->setHasNoSignedWrap();
-      if (OBO->hasNoUnsignedWrap())
-        cast<BinaryOperator>(NewInst)->setHasNoUnsignedWrap();
+      auto *NewBO = dyn_cast<BinaryOperator>(NewInst);
----------------
farzonl wrote:

if arg 0 and arg 1 are both constants Int/fp then you can't dyn_cast back to a BinaryOperator. The Value gets converted to a Constant. So we can't assert.

https://github.com/llvm/llvm-project/pull/137399


More information about the llvm-commits mailing list