summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/AsmPrinter/DwarfExpression.cpp
diff options
context:
space:
mode:
authorAdrian Prantl <aprantl@apple.com>2017-04-20 20:42:33 +0000
committerAdrian Prantl <aprantl@apple.com>2017-04-20 20:42:33 +0000
commitada104888efce709181b5c82983b331e40015d36 (patch)
tree0f7f406cf0f7e35d909d02f600e985d7a94e27be /llvm/lib/CodeGen/AsmPrinter/DwarfExpression.cpp
parent9ed1371adb219b791ac446812182e643c1f727dc (diff)
downloadbcm5719-llvm-ada104888efce709181b5c82983b331e40015d36.tar.gz
bcm5719-llvm-ada104888efce709181b5c82983b331e40015d36.zip
Don't emit locations that need a DW_OP_stack_value in DWARF 2 & 3.
https://bugs.llvm.org/show_bug.cgi?id=32382 llvm-svn: 300883
Diffstat (limited to 'llvm/lib/CodeGen/AsmPrinter/DwarfExpression.cpp')
-rw-r--r--llvm/lib/CodeGen/AsmPrinter/DwarfExpression.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfExpression.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfExpression.cpp
index 55397c3ac09..f65dc151f30 100644
--- a/llvm/lib/CodeGen/AsmPrinter/DwarfExpression.cpp
+++ b/llvm/lib/CodeGen/AsmPrinter/DwarfExpression.cpp
@@ -226,8 +226,15 @@ bool DwarfExpression::addMachineRegExpression(const TargetRegisterInfo &TRI,
return true;
}
- // FIXME:
// Don't emit locations that cannot be expressed without DW_OP_stack_value.
+ if (DwarfVersion < 4)
+ if (std::any_of(ExprCursor.begin(), ExprCursor.end(),
+ [](DIExpression::ExprOperand Op) -> bool {
+ return Op.getOp() == dwarf::DW_OP_stack_value;
+ })) {
+ DwarfRegs.clear();
+ return false;
+ }
assert(DwarfRegs.size() == 1);
auto Reg = DwarfRegs[0];
OpenPOWER on IntegriCloud