forked from OSchip/llvm-project
parent
95f48a5d87
commit
4a5a561a24
|
@ -0,0 +1,11 @@
|
||||||
|
# RUN: llvm-mc %s > %t
|
||||||
|
|
||||||
|
# RUN: grep -A 2 TEST0 %t > %t2
|
||||||
|
# RUN: grep ".org 1, 0" %t2 | count 1
|
||||||
|
TEST0:
|
||||||
|
.org 1
|
||||||
|
|
||||||
|
# RUN: grep -A 2 TEST1 %t > %t2
|
||||||
|
# RUN: grep ".org 1, 3" %t2 | count 1
|
||||||
|
TEST1:
|
||||||
|
.org 1, 3
|
|
@ -324,6 +324,8 @@ bool AsmParser::ParseStatement() {
|
||||||
return ParseDirectiveValue(8);
|
return ParseDirectiveValue(8);
|
||||||
if (!strcmp(IDVal, ".fill"))
|
if (!strcmp(IDVal, ".fill"))
|
||||||
return ParseDirectiveFill();
|
return ParseDirectiveFill();
|
||||||
|
if (!strcmp(IDVal, ".org"))
|
||||||
|
return ParseDirectiveOrg();
|
||||||
if (!strcmp(IDVal, ".space"))
|
if (!strcmp(IDVal, ".space"))
|
||||||
return ParseDirectiveSpace();
|
return ParseDirectiveSpace();
|
||||||
|
|
||||||
|
@ -332,7 +334,6 @@ bool AsmParser::ParseStatement() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
MCInst Inst;
|
MCInst Inst;
|
||||||
if (ParseX86InstOperands(Inst))
|
if (ParseX86InstOperands(Inst))
|
||||||
return true;
|
return true;
|
||||||
|
@ -558,3 +559,31 @@ bool AsmParser::ParseDirectiveFill() {
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// ParseDirectiveOrg
|
||||||
|
/// ::= .org expression [ , expression ]
|
||||||
|
bool AsmParser::ParseDirectiveOrg() {
|
||||||
|
int64_t Offset;
|
||||||
|
if (ParseExpression(Offset))
|
||||||
|
return true;
|
||||||
|
|
||||||
|
// Parse optional fill expression.
|
||||||
|
int64_t FillExpr = 0;
|
||||||
|
if (Lexer.isNot(asmtok::EndOfStatement)) {
|
||||||
|
if (Lexer.isNot(asmtok::Comma))
|
||||||
|
return TokError("unexpected token in '.org' directive");
|
||||||
|
Lexer.Lex();
|
||||||
|
|
||||||
|
if (ParseExpression(FillExpr))
|
||||||
|
return true;
|
||||||
|
|
||||||
|
if (Lexer.isNot(asmtok::EndOfStatement))
|
||||||
|
return TokError("unexpected token in '.org' directive");
|
||||||
|
}
|
||||||
|
|
||||||
|
Lexer.Lex();
|
||||||
|
|
||||||
|
Out.EmitValueToOffset(MCValue::get(Offset), FillExpr);
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
|
@ -63,6 +63,7 @@ private:
|
||||||
bool ParseDirectiveFill(); // ".fill"
|
bool ParseDirectiveFill(); // ".fill"
|
||||||
bool ParseDirectiveSpace(); // ".space"
|
bool ParseDirectiveSpace(); // ".space"
|
||||||
bool ParseDirectiveSet(); // ".set"
|
bool ParseDirectiveSet(); // ".set"
|
||||||
|
bool ParseDirectiveOrg(); // ".org"
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue