User Details
- User Since
- Feb 8 2023, 1:38 PM (17 w, 10 h)
Yesterday
update tests
rebase for enforced alignment
update alignment enforcing test
rebase
remove redundancy,
fix wrong comments
add cases
- dst modified
- enforced alignment
remove obsolete comment
replace unnecessary homogeneous scalable aggregate
Tue, Jun 6
apply feedback and inverse alignment vs memcpy length comparison.
add
- smaller alignment failure case
- address space failure case
- scalable vector failure case
@pcwalton Hi! I'm happy to take ownership of fixing this unless someone else is already working on it. I now plan to start with basic block local optimizations!
Mon, Jun 5
rebase
rebase
This looks more complicated than necessary, just this should be enough: https://alive2.llvm.org/ce/z/ZWmZLv
In this case, the original pointer (%val1) is dereferenceable to 4 bytes, but the new one (%val) is only known dereferenceable to 1 byte, so we are replacing dereferencable(bigger) with dereferenceable(smaller), no? That wouldn't be valid.
Sun, Jun 4
I think if the dest is unescaped alloca, allocasize and memcpy length corresponding is unnecessary, because
- If alloca length < memcpy length, memcpy is UB so we could transform it anyway?
- If memcpy length < alloca length, if the alloca is unescaped transformation will widen the dereferenceability for param, but dereferenceable(bigger) subsumes dereferenceable(smaller) so, some UB will non-UB, but inverse doesn't happens. This will be valid?
remove smaller memcpy length case temporary
fix styles and comments and postpone detailed case
apply feedbacks.
- fix styles
rebase for tests update
Add nuw case and non-splat vector cases
fix wrong diff upload
Add nuw case and non-splat vector cases
remove noise test
update tests
fix typo
add splat vector tests
Sat, Jun 3
Thank you for the review!
Apply feedback from @goldstein.w.n
Rebase for pre-commit test
apply feedback
Thank you for the review!
This doesn't seem working.
Res->setHasNoSignedWrap(I.hasNoSignedWrap() && OBO1->hasNoUnsignedWrap() && willNotOverflowSignedSub(C, C2, *Res));
rebase
rebase
add cases
- VLA alloca
- non-alloca destination
fix typo
@nikic
Thanks for the review! Too much obsolete comments!
revert wrong diff update
apply feedbacks
fix
- wrong tests
- bigger alignment assumption
- comments' initial cases
Thu, Jun 1
Wed, May 31
tweak
- add bigger align case
- reduce unnecessary branch on some tetst
change examples also
Tue, May 30
apply feedback on call with @nikic
- remove noalias argument or unescaped alloca checks
- add ModRefCheck for memcpy source
Mon, May 29
rebase
add test cases
- no noalias attributed arg src
- unescaped alloca src
- modified between memcpy and call
need to change test on https://reviews.llvm.org/D150967#4365466 and refine description
process alignment, handle unescaped alloca and arg with noalias, clobber check on Dest of MDep(MemCpy)
rebase