[llvm] [llvm] use 64-bit types for result of getDwarfRegNum (NFC) (PR #109494)

William G Hatch via llvm-commits llvm-commits at lists.llvm.org
Thu Sep 26 10:01:28 PDT 2024


================
@@ -151,24 +151,28 @@ int MCRegisterInfo::getDwarfRegNum(MCRegister RegNum, bool isEH) const {
   const DwarfLLVMRegPair *I = std::lower_bound(M, M+Size, Key);
   if (I == M+Size || I->FromReg != RegNum)
     return -1;
-  return I->ToReg;
+  // Consumers need to be able to detect -1 and -2, but at various points
+  // the numbers move between unsigned and signed representations, as well as
+  // between 32- and 64-bit representations. We need to convert first to int
+  // before int64_t for proper sign handling.
+  return int64_t(int(I->ToReg));
----------------
willghatch wrote:

All of the existing code dealing with these register numbers uses the types `int` and `unsigned`.  The `int64_t(int(I->ToReg))` conversion seems more consistent with other usage than `int64_t(int32_t(I->ToReg))`.

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


More information about the llvm-commits mailing list