[llvm-dev] Potential infinite loop in MemorySSAUpdater

Godala, Bhargav-reddy via llvm-dev llvm-dev at lists.llvm.org
Sat Sep 23 08:38:33 PDT 2017


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() - StartingPHISize, InsertedPHIs.end());
  }

With the latest code on trunk compilation of perlbench SPEC CPU 2017 INT benchmark with “-O3 -inline-threshold=1000 and -enable-gvn-hoist” options is looping infinitely on the above loop.

Above loop never terminates unless elements from InsertedPHIs are removed as and when they are processed. But, I don’t see any call to remove contents, delete or clear, from InsertedPHIs.

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



-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170923/18eae61e/attachment.html>


More information about the llvm-dev mailing list