[llvm] TargetLibraryInfo: Use pointer index size to determine getSizeTSize(). (PR #118747)
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Wed Dec 11 15:25:32 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);
----------------
arsenm wrote:
I really don't see the plus of using the variable here. If a future change happens, it is no additional effort
https://github.com/llvm/llvm-project/pull/118747
More information about the llvm-commits
mailing list