search for: memoryssaupdater

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...