diff options
author | Adrian Prantl <aprantl@apple.com> | 2017-08-28 23:07:43 +0000 |
---|---|---|
committer | Adrian Prantl <aprantl@apple.com> | 2017-08-28 23:07:43 +0000 |
commit | 4cae10856132f3f038f4f7361c847214e2149f42 (patch) | |
tree | eff382fc70cc610dd6701c6d3744e71fd41d9443 /llvm/lib/CodeGen/AsmPrinter/DwarfExpression.cpp | |
parent | 1d4e04976afe52a36bf8f7c4009682d53fd4fee8 (diff) | |
download | bcm5719-llvm-4cae10856132f3f038f4f7361c847214e2149f42.tar.gz bcm5719-llvm-4cae10856132f3f038f4f7361c847214e2149f42.zip |
Fix a logic error in DwarfExpression::addMachineReg()
This fixes PR34323 and thus splitting undescribable registers into
smaller, describable sub-registers.
https://bugs.llvm.org/show_bug.cgi?id=34323
llvm-svn: 311951
Diffstat (limited to 'llvm/lib/CodeGen/AsmPrinter/DwarfExpression.cpp')
-rw-r--r-- | llvm/lib/CodeGen/AsmPrinter/DwarfExpression.cpp | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfExpression.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfExpression.cpp index f8ffc438f73..4538bb3ff02 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DwarfExpression.cpp +++ b/llvm/lib/CodeGen/AsmPrinter/DwarfExpression.cpp @@ -133,13 +133,12 @@ bool DwarfExpression::addMachineReg(const TargetRegisterInfo &TRI, // Intersection between the bits we already emitted and the bits // covered by this subregister. - SmallBitVector Intersection(RegSize, false); - Intersection.set(Offset, Offset + Size); - Intersection ^= Coverage; + SmallBitVector CurSubReg(RegSize, false); + CurSubReg.set(Offset, Offset + Size); // If this sub-register has a DWARF number and we haven't covered // its range, emit a DWARF piece for it. - if (Reg >= 0 && Intersection.any()) { + if (Reg >= 0 && CurSubReg.test(Coverage)) { // Emit a piece for any gap in the coverage. if (Offset > CurPos) DwarfRegs.push_back({-1, Offset - CurPos, nullptr}); |