https://llvm.org/bugs/show_bug.cgi?id=25199
Bug ID: 25199 Summary: [BranchFolding][AArch64] AArch64LoadStoreOpt uses MMOs which are dropped during tail merge Product: libraries Version: trunk Hardware: PC OS: Windows NT Status: NEW Severity: normal Priority: P Component: Backend: AArch64 Assignee: unassignedb...@nondot.org Reporter: mcros...@codeaurora.org CC: llvm-bugs@lists.llvm.org Classification: Unclassified In r231799, MMOs were removed during tail merge to preserve dependencies. >From the commit message: "A more robust solution would be to add multiple MMOs from the duplicate MIs to the new MI. Currently ScheduleDAGInstrs.cpp ignores all MMOs on instructions with multiple MMOs, so this solution is equivalent for the time being." The final comment isn't quite true. This change doesn't effect ScheduleDAGInstrs, but it does prevent the load/store optimization pass from generating load/store pairs. Because the MMOs are dropped the pass conservatively assumes the memory instructions are volatile. >From MachineInstr::hasOrderedMemoryRef() // Otherwise, if the instruction has no memory reference information, // conservatively assume it wasn't preserved. if (memoperands_empty()) return true; This check causes the pass to bailout. -- You are receiving this mail because: You are on the CC list for the bug.
_______________________________________________ llvm-bugs mailing list llvm-bugs@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs