summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/MIRParser/MIParser.cpp
diff options
context:
space:
mode:
authorAlex Lorenz <arphaman@gmail.com>2015-08-17 22:05:15 +0000
committerAlex Lorenz <arphaman@gmail.com>2015-08-17 22:05:15 +0000
commita617c9162dcc23e1b974c7e30509ef4e303fce33 (patch)
tree8092334818f2afc9894269449bf4138bb0324e7e /llvm/lib/CodeGen/MIRParser/MIParser.cpp
parent05ddbffbf3eba8ef2cac067b0cf8e9c53b78855e (diff)
downloadbcm5719-llvm-a617c9162dcc23e1b974c7e30509ef4e303fce33.tar.gz
bcm5719-llvm-a617c9162dcc23e1b974c7e30509ef4e303fce33.zip
MIR Serialization: Serialize the memory operand's TBAA metadata node.
llvm-svn: 245244
Diffstat (limited to 'llvm/lib/CodeGen/MIRParser/MIParser.cpp')
-rw-r--r--llvm/lib/CodeGen/MIRParser/MIParser.cpp28
1 files changed, 20 insertions, 8 deletions
diff --git a/llvm/lib/CodeGen/MIRParser/MIParser.cpp b/llvm/lib/CodeGen/MIRParser/MIParser.cpp
index c6383720e23..e076a2d5b5e 100644
--- a/llvm/lib/CodeGen/MIRParser/MIParser.cpp
+++ b/llvm/lib/CodeGen/MIRParser/MIParser.cpp
@@ -1526,17 +1526,29 @@ bool MIParser::parseMachineMemoryOperand(MachineMemOperand *&Dest) {
if (parseMachinePointerInfo(Ptr))
return true;
unsigned BaseAlignment = Size;
- if (Token.is(MIToken::comma)) {
- lex();
- if (Token.isNot(MIToken::kw_align))
- return error("expected 'align'");
- if (parseAlignment(BaseAlignment))
- return true;
+ AAMDNodes AAInfo;
+ while (consumeIfPresent(MIToken::comma)) {
+ switch (Token.kind()) {
+ case MIToken::kw_align:
+ if (parseAlignment(BaseAlignment))
+ return true;
+ break;
+ case MIToken::md_tbaa:
+ lex();
+ if (parseMDNode(AAInfo.TBAA))
+ return true;
+ break;
+ // TODO: Parse AA Scope metadata.
+ // TODO: Parse AA NoAlias metadata.
+ // TODO: Parse the ranges metadata.
+ // TODO: Report an error on duplicate metadata nodes.
+ default:
+ return error("expected 'align' or '!tbaa'");
+ }
}
- // TODO: Parse the attached metadata nodes.
if (expectAndConsume(MIToken::rparen))
return true;
- Dest = MF.getMachineMemOperand(Ptr, Flags, Size, BaseAlignment);
+ Dest = MF.getMachineMemOperand(Ptr, Flags, Size, BaseAlignment, AAInfo);
return false;
}
OpenPOWER on IntegriCloud