[llvm] SimplifyLibCalls: Use the correct address space when computing integer widths. (PR #118586)
Nikita Popov via llvm-commits
llvm-commits at lists.llvm.org
Thu Dec 5 00:43:42 PST 2024
================
@@ -590,26 +588,35 @@ Value *LibCallSimplifier::optimizeStrCmp(CallInst *CI, IRBuilderBase &B) {
if (Len1 && Len2) {
return copyFlags(
*CI, emitMemCmp(Str1P, Str2P,
- ConstantInt::get(DL.getIntPtrType(CI->getContext()),
- std::min(Len1, Len2)),
+ ConstantInt::get(
+ DL.getIntPtrType(
+ CI->getContext(),
+ Str1P->getType()->getPointerAddressSpace()),
+ std::min(Len1, Len2)),
----------------
nikic wrote:
I don't think getSizeTSize belongs on the data layout. It's a property related to the C library, rather than the target itself.
For CHERI's purposes, shouldn't it be sufficient to consistently make use of getSizeTSize() in this file and patch getSizeTSize() to return the correct value? Maybe just making the default value be the index type size instead of the pointer type size would be sufficient?
The BuildLibCalls code itself already uses the correct types, we're just not passing in matching types here.
https://github.com/llvm/llvm-project/pull/118586
More information about the llvm-commits
mailing list