[llvm] TargetLibraryInfo: Use pointer index size to determine getSizeTSize(). (PR #118747)
Jessica Clarke via llvm-commits
llvm-commits at lists.llvm.org
Wed Dec 11 15:42:46 PST 2024
================
@@ -1459,19 +1459,16 @@ unsigned TargetLibraryInfoImpl::getWCharSize(const Module &M) const {
}
unsigned TargetLibraryInfoImpl::getSizeTSize(const Module &M) const {
- // There is really no guarantee that sizeof(size_t) is equal to sizeof(int*).
- // If that isn't true then it should be possible to derive the SizeTTy from
- // the target triple here instead and do an early return.
-
- // Historically LLVM assume that size_t has same size as intptr_t (hence
- // deriving the size from sizeof(int*) in address space zero). This should
- // work for most targets. For future consideration: DataLayout also implement
- // getIndexSizeInBits which might map better to size_t compared to
- // getPointerSizeInBits. Hard coding address space zero here might be
- // unfortunate as well. Maybe getDefaultGlobalsAddressSpace() or
- // getAllocaAddrSpace() is better.
- unsigned AddressSpace = 0;
- return M.getDataLayout().getPointerSizeInBits(AddressSpace);
+ // There is really no guarantee that sizeof(size_t) is equal to the index
+ // size of the default address space. If that isn't true then it should be
+ // possible to derive the SizeTTy from the target triple here instead and do
+ // an early return.
+
+ // Hard coding address space zero may seem unfortunate, but a number of
+ // configurations of common targets (i386, x86-64 x32, aarch64 x32, possibly
+ // others) have larger-than-size_t index sizes on non-default address spaces,
+ // making this the best default.
+ return M.getDataLayout().getIndexSizeInBits(/*AddressSpace=*/0);
----------------
jrtc27 wrote:
I don't have a particularly strong opinion here, I'm just generally of the view that it's better not to delete code you're going to reintroduce, but one line isn't a big deal.
https://github.com/llvm/llvm-project/pull/118747
More information about the llvm-commits
mailing list