[PATCH] D116941: [GlobalISel] Fix incorrect sign extension when combining G_INTTOPTR and G_PTR_ADD

Matt Arsenault via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Jan 12 16:10:01 PST 2022


arsenm added inline comments.


================
Comment at: llvm/lib/CodeGen/GlobalISel/CombinerHelper.cpp:2038
+      auto DstTy = MRI.getType(PtrAdd.getReg(0));
+      // Zero extend LHS constant as G_INTTOPTR has no sign extension semantics
+      NewCst = Cst.zextOrTrunc(DstTy.getSizeInBits());
----------------
This is a confusing way of stating that inttoptr uses zext


================
Comment at: llvm/lib/CodeGen/GlobalISel/CombinerHelper.cpp:2040
+      NewCst = Cst.zextOrTrunc(DstTy.getSizeInBits());
+      NewCst += RHSCst->sextOrTrunc(DstTy.getSizeInBits());
       return true;
----------------
Why sext here?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D116941/new/

https://reviews.llvm.org/D116941



More information about the llvm-commits mailing list