search for: removememoryaccess

Displaying 11 results from an estimated 11 matches for "removememoryaccess".

2016 Apr 11
2
[LICM][MemorySSA] Converting LICM pass to use MemorySSA to avoid AliasSet collapse issue
Hi All, I'm looking into converting LICM to use MemorySSA instead of AliasSets to determine when it is safe to hoist/sink/promote loads and stores to get around the issue of alias set collapse (see discussion [1]). I have a prototype implementation, but have run into two issues that I could use input from the designers of MemorySSA to resolve: 1) Is MemorySSA intended to be
2016 May 02
2
[MemorySSA] Potential CachingMemorySSAWalker bug
...> bit tricky to reproduce, so I'd like to start by trying to show you what is >> happening when running EarlyCSE with my local changes to use MemorySSA. >> I've attached a debug log that shows that the value returned by >> getClobberingMemoryAccess(Inst) after a call to removeMemoryAccess is >> wrong. The MemorySSA node in question is MemoryUse(7), and the corruption >> happens after a call to remove MemoryUse(2), at which point its clobber >> value changes to '1 = MemoryDef(liveOnEntry)'. The interesting thing is >> that is doesn't seem to be t...
2016 May 02
2
[MemorySSA] Potential CachingMemorySSAWalker bug
...start by trying to show you what is happening when running > EarlyCSE with my local changes to use MemorySSA. I've > attached a debug log that shows that the value returned by > getClobberingMemoryAccess(Inst) after a call to > removeMemoryAccess is wrong. The MemorySSA node in > question is MemoryUse(7), and the corruption happens after > a call to remove MemoryUse(2), at which point its clobber > value changes to '1 = MemoryDef(liveOnEntry)'. The > interesting thing is...
2016 Apr 20
2
[LICM][MemorySSA] Converting LICM pass to use MemorySSA to avoid AliasSet collapse issue
...cast<MemoryUseOrDef>(HoistCandAccess); // What is happening here is that we are creating the hoisted access // and destroying the old accesses. MSSA->createMemoryAccess(HoistedInst, MUD->getDefiningAccess(), BB, MemorySSA::End); MSSA->removeMemoryAccess(HoistCandAccess); MSSA->removeMemoryAccess(MSSA->getMemoryAccess(ElseInst)); } (this is "create a new access with this memorydef as it's definition, kill these two old loads"). A store sink is slightly harder, but it will be similar. Comments welcome!...
2017 Feb 17
2
[MemorySSA] inserting or removing memory instructions
In particular, if you want to add support, the right way to know what to rename is (off the top of my head) add a flag or something to have renamepass reset all uses it sees (you only have to change the uses, defs are all linked together and thus already fixed by the updater). Right now it only does that if they have no defining access. Make it skip blocks already in the visited set (the
2016 Apr 29
2
[MemorySSA] Potential CachingMemorySSAWalker bug
...ker cache bug. It's a bit tricky to reproduce, so I'd like to start by trying to show you what is happening when running EarlyCSE with my local changes to use MemorySSA. I've attached a debug log that shows that the value returned by getClobberingMemoryAccess(Inst) after a call to removeMemoryAccess is wrong. The MemorySSA node in question is MemoryUse(7), and the corruption happens after a call to remove MemoryUse(2), at which point its clobber value changes to '1 = MemoryDef(liveOnEntry)'. The interesting thing is that is doesn't seem to be the first call to getClobberingM...
2017 Sep 25
2
Potential infinite loop in MemorySSAUpdater
...n the phi since it's not eliminatable by us if (Same) return Phi; Same = cast<MemoryAccess>(Op); } // Never found a non-self reference, the phi is undef if (Same == nullptr) return MSSA->getLiveOnEntryDef(); if (Phi) { Phi->replaceAllUsesWith(Same); removeMemoryAccess(Phi); } // We should only end up recursing in case we replaced something, in which // case, we may have made other Phis trivial. return recursePhi(Same); } In above function what happens when Same is not null and Phi is null. I have one particular case where it retruns non null MemoryPhi...
2017 Sep 25
0
Potential infinite loop in MemorySSAUpdater
...> > Same = cast<MemoryAccess>(Op); > > } > > // Never found a non-self reference, the phi is undef > > if (Same == nullptr) > > return MSSA->getLiveOnEntryDef(); > > if (Phi) { > > Phi->replaceAllUsesWith(Same); > > removeMemoryAccess(Phi); > > } > > > > // We should only end up recursing in case we replaced something, in > which > > // case, we may have made other Phis trivial. > > return recursePhi(Same); > > } > > > > In above function what happens when Same is not nu...
2017 Sep 23
0
Potential infinite loop in MemorySSAUpdater
On Sat, Sep 23, 2017 at 9:55 AM, Godala, Bhargav-reddy < Bhargav-reddy.Godala at amd.com> wrote: > > With regards > Bhargav Reddy Godala > Software Engineer 2 > Bangalore, India > E-mail: Bhargav-reddy.Godala at amd.com Ext 30678 > > > > On 23-Sep-2017, at 9:27 PM, Daniel Berlin <dberlin at dberlin.org> wrote: > > > > On Sat, Sep 23, 2017 at
2017 Sep 23
2
Potential infinite loop in MemorySSAUpdater
With regards Bhargav Reddy Godala Software Engineer 2 Bangalore, India E-mail: Bhargav-reddy.Godala at amd.com<mailto:Bhargav-reddy.Godala at amd.com> Ext 30678 On 23-Sep-2017, at 9:27 PM, Daniel Berlin <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
2016 Apr 20
4
[LICM][MemorySSA] Converting LICM pass to use MemorySSA to avoid AliasSet collapse issue
1) Sounds good. This isn’t holding me up so I’ll just try to keep an eye out for these changes. 2) I’ve attached an example IR file and debug log of where the caching is going bad. It depends on my changes to EarlyCSE, but hopefully it is clear from the debug output what is going on. Let me know if there is a better way to get this repro case to you. Also, I’ll be on IRC for the