[clang] [clang] improve consistency with GCC vector comparison (PR #148954)
Erich Keane via cfe-commits
cfe-commits at lists.llvm.org
Mon Jul 21 06:36:39 PDT 2025
================
@@ -13206,6 +13206,30 @@ QualType ASTContext::getIntTypeForBitwidth(unsigned DestWidth,
return QualTy;
}
+/// getGCCCompatibleIntTypeForBitwidth -
+/// sets integer QualTy according to specified details:
+/// bitwidth, signed/unsigned.
+/// this function is compatible with GCC's preference:
+/// int > signed char > short > long > long long > int128_t
+/// Returns empty type if there is no appropriate target types.
+QualType ASTContext::getGCCCompatibleIntTypeForBitwidth(unsigned DestWidth,
+ unsigned Signed) const {
+ const TargetInfo &Target = getTargetInfo();
+ if (Target.getIntWidth() == DestWidth)
+ return Signed ? IntTy : UnsignedIntTy;
+ if (Target.getCharWidth() == DestWidth)
+ return Signed ? SignedCharTy : UnsignedCharTy;
+ if (Target.getShortWidth() == DestWidth)
+ return Signed ? ShortTy : UnsignedShortTy;
+ if (Target.getLongWidth() == DestWidth)
+ return Signed ? LongTy : UnsignedLongTy;
+ if (Target.getLongLongWidth() == DestWidth)
+ return Signed ? LongLongTy : UnsignedLongLongTy;
+ if (DestWidth == 128)
+ return Signed ? Int128Ty : UnsignedInt128Ty;
+ return {};
----------------
erichkeane wrote:
We should probably assert if we don't find one.
https://github.com/llvm/llvm-project/pull/148954
More information about the cfe-commits
mailing list