Reverts r311008 to reinstate r310825 with a fix.
Refine alias checking for pseudo vs value to be conservative.
This fixes the original failure in builtbot unittest SingleSource/UnitTests/2003-07-09-SignedArgs.
Paths
| Differential D36900
Re-land MachineInstr: Reason locally about some memory objects before going to AA. ClosedPublic Authored by bmakam on Aug 18 2017, 2:39 PM.
Details Summary Reverts r311008 to reinstate r310825 with a fix. Refine alias checking for pseudo vs value to be conservative.
Diff Detail Event TimelineHerald added subscribers: javed.absar, nhaehnle, mcrosier. · View Herald TranscriptAug 18 2017, 2:39 PM Comment Actions Trim the patch and avoid handling stack references for non-value MMOs to prevent LNT test failures. bmakam retitled this revision from [WIP] Re-land MachineInstr: Reason locally about some memory objects before going to AA. to Re-land MachineInstr: Reason locally about some memory objects before going to AA..
This revision is now accepted and ready to land.Aug 29 2017, 5:44 PM Closed by commit rL312126: Re-land MachineInstr: Reason locally about some memory objects before going to… (authored by bmakam). · Explain WhyAug 30 2017, 7:58 AM This revision was automatically updated to reflect the committed changes. bmakam marked an inline comment as not done.
Revision Contents
Diff 112608 lib/CodeGen/MachineInstr.cpp
test/CodeGen/AArch64/func-calls.ll
test/CodeGen/AArch64/ldst-opt.ll
test/CodeGen/AMDGPU/call-argument-types.ll
test/CodeGen/AMDGPU/load-global-i16.ll
test/CodeGen/AMDGPU/load-global-i8.ll
test/CodeGen/AMDGPU/load-local-i16.ll
test/CodeGen/ARM/2009-10-27-double-align.ll
test/CodeGen/ARM/illegal-bitfield-loadstore.ll
test/CodeGen/X86/illegal-bitfield-loadstore.ll
test/CodeGen/X86/memcpy-2.ll
test/CodeGen/X86/pr34088.ll
test/CodeGen/X86/widen_arith-3.ll
|
These asserts are related to the interface to AA, right? (I think it says so in the comments above)
Are they also important for the new new checks you have added, or could/should the asserts perhaps be moved closer to the AA->alias call?
Now it kind of looks like the asserts are guarding your new checks, but the comments are referring to assumptions made by the API to AA.
(Some more background to why I'm asking:)
Our out-of-tree target is actually creating StackPointer relative MachingMemOperands with negative offsets. In the past we never hit those asserts since the ealier (!MMOa->getValue() || !MMOb->getValue()) check would make us return before checking for negative operands.
I do not think that we need those negative offsets, so I'll probably try to get rid of them regardless of this patch. But as long as you put the asserts before the "if (!ValA || !ValB)", then we must stop using negative offsets in PseudoSourceValue kind of MachingMemOperands or we will hit the assert.