Fix for PR14824: "Optimization arm_ldst_opt inserts newly generated instruction vldmi...
authorStepan Dyatkovskiy <stpworld@narod.ru>
Fri, 5 Apr 2013 05:52:14 +0000 (05:52 +0000)
committerStepan Dyatkovskiy <stpworld@narod.ru>
Fri, 5 Apr 2013 05:52:14 +0000 (05:52 +0000)
commit89becbb97423fb608a4dd85ec10c3fde4398d956
treee9329b5ebf6b5871c8cc2aa2ccf6479e7c7a4b51
parent1abaf907b6aff6e468cb838fa40e0ec6cc5ece24
Fix for PR14824: "Optimization arm_ldst_opt inserts newly generated instruction vldmia at incorrect position".
Patch introduces memory operands tracking in ARMLoadStoreOpt::LoadStoreMultipleOpti. For each register it keeps the order of load operations as it was before optimization pass.
It is kind of deep improvement of fix proposed by Hao: http://llvm.org/bugs/show_bug.cgi?id=14824#c4
But it also tracks conflicts between different register classes (e.g. D2 and S5).
For more details see:
Bug description: http://llvm.org/bugs/show_bug.cgi?id=14824
LLVM Commits discussion:
http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20130311/167936.html
http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20130318/168688.html
http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20130325/169376.html
http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20130401/170238.html

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178851 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/ARM/ARMLoadStoreOptimizer.cpp
test/CodeGen/ARM/2013-04-05-overridden-loads-PR14824.ll [new file with mode: 0644]