diff options
Diffstat (limited to 'llvm/lib/CodeGen')
| -rw-r--r-- | llvm/lib/CodeGen/RegUsageInfoCollector.cpp | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/llvm/lib/CodeGen/RegUsageInfoCollector.cpp b/llvm/lib/CodeGen/RegUsageInfoCollector.cpp index 01c8fcbc64c..3031195807d 100644 --- a/llvm/lib/CodeGen/RegUsageInfoCollector.cpp +++ b/llvm/lib/CodeGen/RegUsageInfoCollector.cpp @@ -179,12 +179,15 @@ computeCalleeSavedRegs(BitVector &SavedRegs, MachineFunction &MF) { // Add PReg to SavedRegs if all subregs are saved. bool AllSubRegsSaved = true; - for (MCSubRegIterator SR(PReg, &TRI, false); SR.isValid(); ++SR) + bool HasAtLeastOneSubreg = false; + for (MCSubRegIterator SR(PReg, &TRI, false); SR.isValid(); ++SR) { + HasAtLeastOneSubreg = true; if (!SavedRegs.test(*SR)) { AllSubRegsSaved = false; break; } - if (AllSubRegsSaved) + } + if (AllSubRegsSaved && HasAtLeastOneSubreg) SavedRegs.set(PReg); } } |

