diff options
author | Alex Lorenz <arphaman@gmail.com> | 2015-08-17 22:09:52 +0000 |
---|---|---|
committer | Alex Lorenz <arphaman@gmail.com> | 2015-08-17 22:09:52 +0000 |
commit | eb62568625981cb12c83784a99c54cdfcb4d5d81 (patch) | |
tree | 0db99f348f057a4606f03e43316b05b168525d4e /llvm/lib/CodeGen | |
parent | 03e940d1f8f263d27275e9a554639bc9b5f88050 (diff) | |
download | bcm5719-llvm-eb62568625981cb12c83784a99c54cdfcb4d5d81.tar.gz bcm5719-llvm-eb62568625981cb12c83784a99c54cdfcb4d5d81.zip |
MIR Serialization: Serialize the memory operand's range metadata node.
llvm-svn: 245247
Diffstat (limited to 'llvm/lib/CodeGen')
-rw-r--r-- | llvm/lib/CodeGen/MIRParser/MILexer.cpp | 1 | ||||
-rw-r--r-- | llvm/lib/CodeGen/MIRParser/MILexer.h | 1 | ||||
-rw-r--r-- | llvm/lib/CodeGen/MIRParser/MIParser.cpp | 14 | ||||
-rw-r--r-- | llvm/lib/CodeGen/MIRPrinter.cpp | 5 |
4 files changed, 16 insertions, 5 deletions
diff --git a/llvm/lib/CodeGen/MIRParser/MILexer.cpp b/llvm/lib/CodeGen/MIRParser/MILexer.cpp index 9d3329a7dbe..68c5e8af1a6 100644 --- a/llvm/lib/CodeGen/MIRParser/MILexer.cpp +++ b/llvm/lib/CodeGen/MIRParser/MILexer.cpp @@ -447,6 +447,7 @@ static MIToken::TokenKind getMetadataKeywordKind(StringRef Identifier) { .Case("!tbaa", MIToken::md_tbaa) .Case("!alias.scope", MIToken::md_alias_scope) .Case("!noalias", MIToken::md_noalias) + .Case("!range", MIToken::md_range) .Default(MIToken::Error); } diff --git a/llvm/lib/CodeGen/MIRParser/MILexer.h b/llvm/lib/CodeGen/MIRParser/MILexer.h index 4e24c05c7bd..fe8fc091b44 100644 --- a/llvm/lib/CodeGen/MIRParser/MILexer.h +++ b/llvm/lib/CodeGen/MIRParser/MILexer.h @@ -89,6 +89,7 @@ struct MIToken { md_tbaa, md_alias_scope, md_noalias, + md_range, // Identifier tokens Identifier, diff --git a/llvm/lib/CodeGen/MIRParser/MIParser.cpp b/llvm/lib/CodeGen/MIRParser/MIParser.cpp index 57765b5b0cb..c11117312c9 100644 --- a/llvm/lib/CodeGen/MIRParser/MIParser.cpp +++ b/llvm/lib/CodeGen/MIRParser/MIParser.cpp @@ -1527,6 +1527,7 @@ bool MIParser::parseMachineMemoryOperand(MachineMemOperand *&Dest) { return true; unsigned BaseAlignment = Size; AAMDNodes AAInfo; + MDNode *Range = nullptr; while (consumeIfPresent(MIToken::comma)) { switch (Token.kind()) { case MIToken::kw_align: @@ -1548,16 +1549,21 @@ bool MIParser::parseMachineMemoryOperand(MachineMemOperand *&Dest) { if (parseMDNode(AAInfo.NoAlias)) return true; break; - // TODO: Parse the ranges metadata. + case MIToken::md_range: + lex(); + if (parseMDNode(Range)) + return true; + break; // TODO: Report an error on duplicate metadata nodes. default: - return error( - "expected 'align' or '!tbaa' or '!alias.scope' or '!noalias'"); + return error("expected 'align' or '!tbaa' or '!alias.scope' or " + "'!noalias' or '!range'"); } } if (expectAndConsume(MIToken::rparen)) return true; - Dest = MF.getMachineMemOperand(Ptr, Flags, Size, BaseAlignment, AAInfo); + Dest = + MF.getMachineMemOperand(Ptr, Flags, Size, BaseAlignment, AAInfo, Range); return false; } diff --git a/llvm/lib/CodeGen/MIRPrinter.cpp b/llvm/lib/CodeGen/MIRPrinter.cpp index aa3031657cd..6c8acb531da 100644 --- a/llvm/lib/CodeGen/MIRPrinter.cpp +++ b/llvm/lib/CodeGen/MIRPrinter.cpp @@ -790,7 +790,10 @@ void MIPrinter::print(const MachineMemOperand &Op) { OS << ", !noalias "; AAInfo.NoAlias->printAsOperand(OS, MST); } - // TODO: Print the ranges metadata. + if (Op.getRanges()) { + OS << ", !range "; + Op.getRanges()->printAsOperand(OS, MST); + } OS << ')'; } |