================
@@ -1206,10 +1217,23 @@ struct DSEState {
return OW_None;
}
- bool isInvisibleToCallerAfterRet(const Value *V) {
+ bool isInvisibleToCallerAfterRet(const Value *V, const Value *Ptr,
+ const LocationSize StoreSize) {
if (isa<AllocaInst>(V))
return true;
+ if (InvisibleToCallerAfterRetBounded.contains(V)) {
+ int64_t ValueOffset;
+ const Value *BaseValue =
+ GetPointerBaseWithConstantOffset(Ptr, ValueOffset, DL);
+ assert(BaseValue == V);
+ // This store is only invisible after return if we are in bounds of the
+ // range marked dead.
+ if (ValueOffset + StoreSize.getValue() <=
----------------
nikic wrote:
This will crash for a store of scalable vector a variable-length memset.
https://github.com/llvm/llvm-project/pull/173694
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits