User Details
- User Since
- Jul 14 2020, 5:33 AM (141 w, 2 d)
Yesterday
Sun, Mar 26
Fri, Mar 24
Thu, Mar 23
Update title.
Use most generic range if K don't have a !noundef
Wed, Mar 22
Rebase and add test for load with !noundef
Keep the metadata if J has !noundef
Tue, Mar 21
Rename some variables.
Grammar fixing.
Address comments and add back test file.
Mon, Mar 20
Sun, Mar 19
Move function into a variable and add sub test.
Sat, Mar 18
Mon, Mar 13
Sun, Mar 12
Support BinOp Identity.
This patch caused a code size regression in our ci tests https://github.com/dtcxzyw/llvm-ci/issues/8. And part of the extra codes it generates is as follows:
Fri, Mar 10
Address comments.
Wed, Mar 8
Sat, Mar 4
Match binutils and spec.
Fri, Mar 3
Change base commit.
Rebase and address comments
Thu, Mar 2
Rerun with --check-globals
Add back !range metadata
Wed, Mar 1
Replace with combinemetadataForCSE and make test more robust.
The getAddExpr() with NUW flag sets this flag globally, for all uses of this add. The icmp simplification itself doesn't make a difference, just the side effect that the (not globally correct) nuw flag is set.
Tue, Feb 28
Feb 28 2023
Feb 27 2023
Fix
Add test files.
Feb 25 2023
Feb 24 2023
Feb 23 2023
Feb 20 2023
Is it correct if we load with the same type as the const array but the load's pointer operand is with the i8* type?
define i32 @load_gep_const_alleq_array(i64 %idx) { %gep = getelementptr inbounds i8, ptr @constalleqarray, i64 %idx %load = load i32, ptr %gep ret i32 %load }
Feb 17 2023
It seems the change in patchReplacementInstruction is not tested. I think it's better to make it tested.
Feb 16 2023
I have a question what behavior the compiler raises if !invariant.group 's semantic is violated? For this case:
define i32 @foo(ptr nocapture %p, ptr nocapture %q) { entry: %0 = load i32, ptr %p, align 4, !invariant.load !0 store i8 2, ptr %p, align 1 %1 = load i32, ptr %p, align 4, !invariant.load !0 %add = add nsw i32 %1, %0 ret i32 %add }
Feb 15 2023
https://github.com/llvm/llvm-project/blob/main/llvm/lib/Transforms/Scalar/DeadStoreElimination.cpp#L1283 may also be a potential user if a new PointerStripKind added.
TBH, The test was constructed by hand. So it may not make sense in practice since as you said it always gets merged by InstCombine. But that reminds me if it makes sense to also check whether the index operands are invariant?
Feb 12 2023
Remove TODO.
Replace recursion as bounded iteration.
Feb 9 2023
Feb 8 2023
Feb 2 2023
Feb 1 2023
Jan 30 2023
Add test of K dominates J.
Jan 29 2023
Jan 28 2023
Jan 27 2023
Fix typo.
Jan 26 2023
Jan 17 2023
Jan 13 2023
Rebase and handle i1 vectors.
Jan 12 2023
Jan 9 2023
Replace attribute to noinline.
Add an assertion.