summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/MIRParser
diff options
context:
space:
mode:
authorMarkus Lavin <markus.lavin@ericsson.com>2019-04-12 08:23:55 +0000
committerMarkus Lavin <markus.lavin@ericsson.com>2019-04-12 08:23:55 +0000
commit138c76129bbe983ac7e49f141c41ec9514c17c39 (patch)
treebd31b972def661c9fb14fd9903ae329f70759997 /llvm/lib/CodeGen/MIRParser
parent9b795b3c049c64447c3599ec2e28567fe8752ae6 (diff)
downloadbcm5719-llvm-138c76129bbe983ac7e49f141c41ec9514c17c39.tar.gz
bcm5719-llvm-138c76129bbe983ac7e49f141c41ec9514c17c39.zip
[DebugInfo] DW_OP_deref_size in PrologEpilogInserter.
The PrologEpilogInserter need to insert a DW_OP_deref_size before prepending a memory location expression to an already implicit expression to avoid having the existing expression act on the memory address instead of the value behind it. The reason for using DW_OP_deref_size and not plain DW_OP_deref is that big-endian targets need to read the right size as simply truncating a larger read would yield the wrong result (LSB bytes are not at the lower address). Differential Revision: https://reviews.llvm.org/D59687 llvm-svn: 358268
Diffstat (limited to 'llvm/lib/CodeGen/MIRParser')
-rw-r--r--llvm/lib/CodeGen/MIRParser/MIParser.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/llvm/lib/CodeGen/MIRParser/MIParser.cpp b/llvm/lib/CodeGen/MIRParser/MIParser.cpp
index 971944be2f9..d414b6a0b4b 100644
--- a/llvm/lib/CodeGen/MIRParser/MIParser.cpp
+++ b/llvm/lib/CodeGen/MIRParser/MIParser.cpp
@@ -1854,6 +1854,11 @@ bool MIParser::parseDIExpression(MDNode *&Expr) {
Elements.push_back(Op);
continue;
}
+ if (unsigned Enc = dwarf::getAttributeEncoding(Token.stringValue())) {
+ lex();
+ Elements.push_back(Enc);
+ continue;
+ }
return error(Twine("invalid DWARF op '") + Token.stringValue() + "'");
}
OpenPOWER on IntegriCloud