Displaying 10 results from an estimated 10 matches for "memoryssaupdater".
2017 Sep 23
2
Potential infinite loop in MemorySSAUpdater
Hi,
Can some one explain the intended behaviour of following loop in void MemorySSAUpdater::insertDef(MemoryDef *MD, bool RenameUses) function.
while (!FixupList.empty()) {
unsigned StartingPHISize = InsertedPHIs.size();
fixupDefs(FixupList);
FixupList.clear();
// Put any new phis on the fixup list, and process them
FixupList.append(InsertedPHIs.end() - StartingPHI...
2017 Sep 23
0
Potential infinite loop in MemorySSAUpdater
On Sat, Sep 23, 2017 at 8:38 AM, Godala, Bhargav-reddy via llvm-dev <
llvm-dev at lists.llvm.org> wrote:
> Hi,
>
> Can some one explain the intended behaviour of following loop in void
> MemorySSAUpdater::insertDef(MemoryDef *MD, bool RenameUses) function.
>
> while (!FixupList.empty()) {
> unsigned StartingPHISize = InsertedPHIs.size();
> fixupDefs(FixupList);
> FixupList.clear();
> // Put any new phis on the fixup list, and process them
> FixupList.appen...
2017 Sep 25
0
Potential infinite loop in MemorySSAUpdater
...Is is
> finite.
>
>
>
> I have a case where one element(same element is appened to InsertedPHIs)
> is added to InsertedPHIs every time fixupDefs is invoked. I traced the
> issue why this was happening.
>
>
>
> template <class RangeType>
>
> MemoryAccess *MemorySSAUpdater::tryRemoveTrivialPhi(MemoryPhi *Phi,
>
> RangeType &Operands) {
>
> // Detect equal or self arguments
>
> MemoryAccess *Same = nullptr;
>
> for (auto &Op : Operands) {
>
> // If the same or self, goo...
2017 Sep 25
2
Potential infinite loop in MemorySSAUpdater
...) + StartingPHISize” it will be finite but given that InsrtedPHIs is finite.
I have a case where one element(same element is appened to InsertedPHIs) is added to InsertedPHIs every time fixupDefs is invoked. I traced the issue why this was happening.
template <class RangeType>
MemoryAccess *MemorySSAUpdater::tryRemoveTrivialPhi(MemoryPhi *Phi,
RangeType &Operands) {
// Detect equal or self arguments
MemoryAccess *Same = nullptr;
for (auto &Op : Operands) {
// If the same or self, good so far
if (Op == Phi || Op == Same)
co...
2017 Apr 28
2
[MemorySSA] A question about how to update the MemorySSA when we call RecursivelyDeleteTriviallyDeadInstructions
When we erase a memory access instruction, existing passes using
memory ssa like GVN, NewGVN, GVNHoist and EarlyCSE uses
MemorySSAUpdater to do the update before the instruction is erased.
However, if we call llvm::RecursivelyDeleteTriviallyDeadInstructions
to find out dead instruction recursively and memory access
instructions may be erased inside the recursive process, we need a way
to update MemorySSA for those instructions. Note...
2017 Sep 23
2
Potential infinite loop in MemorySSAUpdater
...dberlin at dberlin.org<mailto:dberlin at dberlin.org>> wrote:
On Sat, Sep 23, 2017 at 8:38 AM, Godala, Bhargav-reddy via llvm-dev <llvm-dev at lists.llvm.org<mailto:llvm-dev at lists.llvm.org>> wrote:
Hi,
Can some one explain the intended behaviour of following loop in void MemorySSAUpdater::insertDef(MemoryDef *MD, bool RenameUses) function.
while (!FixupList.empty()) {
unsigned StartingPHISize = InsertedPHIs.size();
fixupDefs(FixupList);
FixupList.clear();
// Put any new phis on the fixup list, and process them
FixupList.append(InsertedPHIs.end() - StartingPHI...
2017 Sep 23
0
Potential infinite loop in MemorySSAUpdater
...iel Berlin <dberlin at dberlin.org> wrote:
>
>
>
> On Sat, Sep 23, 2017 at 8:38 AM, Godala, Bhargav-reddy via llvm-dev <
> llvm-dev at lists.llvm.org> wrote:
>
>> Hi,
>>
>> Can some one explain the intended behaviour of following loop in void
>> MemorySSAUpdater::insertDef(MemoryDef *MD, bool RenameUses) function.
>>
>> while (!FixupList.empty()) {
>> unsigned StartingPHISize = InsertedPHIs.size();
>> fixupDefs(FixupList);
>> FixupList.clear();
>> // Put any new phis on the fixup list, and process them...
2017 Feb 17
2
[MemorySSA] inserting or removing memory instructions
...bel>:4: ; preds = %3, %2
; 3 = MemoryPhi({%3,4},{%2,2})
; MemoryUse(3)
%5 = load i8, i8* %0
; MemoryUse(1)
%6 = load i8, i8* %0
}
What is the general behavior that I can expect when I insert or remove
def/use?
Another general question: what is the use of MemorySSAUpdater? When should
I use updater and when the MemorySSA API is sufficient?
Piotr
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170217/1027a4b3/attachment.html>
2020 Jan 15
2
lld does not build
...x15c0750)
#2 0x00000000015c0870 SignalHandler(int)
(/opt/arm/arm-linux-compiler-20.0_Generic-AArch64_RHEL-7_aarch64-linux/llvm-bin/clang-9+0x15c0870)
#3 0x0000ffffad5f066c 0x66c sink(llvm::Instruction&, llvm::LoopInfo*,
llvm::DominatorTree*, llvm::Loop const*, llvm::ICFLoopSafetyInfo*,
llvm::MemorySSAUpdater*, llvm::OptimizationRemarkEmitter*)
#4 0x0000ffffad5f066c
#5 0x0000ffffad5f066c
llvm::sinkRegion(llvm::DomTreeNodeBase<llvm::BasicBlock>*,
llvm::AAResults*, llvm::LoopInfo*, llvm::DominatorTree*,
llvm::TargetLibraryInfo*, llvm::TargetTransformInfo*, llvm::Loop*,
llvm::AliasSetTracker*, llvm...
2017 Feb 17
2
[MemorySSA] inserting or removing memory instructions
...for all of those cases.
>
> For use insertion, it will always be correct.
> For stores, It will even work if you sink a store to a branch.
> It will produce wrong results if you insert new stores in the way of old
> stores.
>
>
> Another general question: what is the use of MemorySSAUpdater?
>>
>
> To replace hand-written broken updating.
>
>> When should I use updater and when the MemorySSA API is sufficient?
>>
>
> Unless you are just removing accesses, you should use the Updater.
>
> Due to the single-variable nature of memoryssa, there are tr...