@@ -2043,109 +2043,85 @@ bool RISCVAsmParser::parseDirectiveOption() {
20432043 MCAsmParser &Parser = getParser ();
20442044 // Get the option token.
20452045 AsmToken Tok = Parser.getTok ();
2046+
20462047 // At the moment only identifiers are supported.
2047- if (Tok.isNot (AsmToken::Identifier))
2048- return Error (Parser.getTok ().getLoc (),
2049- " unexpected token, expected identifier" );
2048+ if (parseToken (AsmToken::Identifier, " expected identifier" ))
2049+ return true ;
20502050
20512051 StringRef Option = Tok.getIdentifier ();
20522052
20532053 if (Option == " push" ) {
2054- getTargetStreamer ().emitDirectiveOptionPush ();
2055-
2056- Parser.Lex ();
2057- if (Parser.getTok ().isNot (AsmToken::EndOfStatement))
2058- return Error (Parser.getTok ().getLoc (),
2059- " unexpected token, expected end of statement" );
2054+ if (Parser.parseEOL ())
2055+ return true ;
20602056
2057+ getTargetStreamer ().emitDirectiveOptionPush ();
20612058 pushFeatureBits ();
20622059 return false ;
20632060 }
20642061
20652062 if (Option == " pop" ) {
20662063 SMLoc StartLoc = Parser.getTok ().getLoc ();
2067- getTargetStreamer ().emitDirectiveOptionPop ();
2068-
2069- Parser.Lex ();
2070- if (Parser.getTok ().isNot (AsmToken::EndOfStatement))
2071- return Error (Parser.getTok ().getLoc (),
2072- " unexpected token, expected end of statement" );
2064+ if (Parser.parseEOL ())
2065+ return true ;
20732066
2067+ getTargetStreamer ().emitDirectiveOptionPop ();
20742068 if (popFeatureBits ())
20752069 return Error (StartLoc, " .option pop with no .option push" );
20762070
20772071 return false ;
20782072 }
20792073
20802074 if (Option == " rvc" ) {
2081- getTargetStreamer ().emitDirectiveOptionRVC ();
2082-
2083- Parser.Lex ();
2084- if (Parser.getTok ().isNot (AsmToken::EndOfStatement))
2085- return Error (Parser.getTok ().getLoc (),
2086- " unexpected token, expected end of statement" );
2075+ if (Parser.parseEOL ())
2076+ return true ;
20872077
2078+ getTargetStreamer ().emitDirectiveOptionRVC ();
20882079 setFeatureBits (RISCV::FeatureStdExtC, " c" );
20892080 return false ;
20902081 }
20912082
20922083 if (Option == " norvc" ) {
2093- getTargetStreamer ().emitDirectiveOptionNoRVC ();
2094-
2095- Parser.Lex ();
2096- if (Parser.getTok ().isNot (AsmToken::EndOfStatement))
2097- return Error (Parser.getTok ().getLoc (),
2098- " unexpected token, expected end of statement" );
2084+ if (Parser.parseEOL ())
2085+ return true ;
20992086
2087+ getTargetStreamer ().emitDirectiveOptionNoRVC ();
21002088 clearFeatureBits (RISCV::FeatureStdExtC, " c" );
21012089 clearFeatureBits (RISCV::FeatureExtZca, " +experimental-zca" );
21022090 return false ;
21032091 }
21042092
21052093 if (Option == " pic" ) {
2106- getTargetStreamer ().emitDirectiveOptionPIC ();
2107-
2108- Parser.Lex ();
2109- if (Parser.getTok ().isNot (AsmToken::EndOfStatement))
2110- return Error (Parser.getTok ().getLoc (),
2111- " unexpected token, expected end of statement" );
2094+ if (Parser.parseEOL ())
2095+ return true ;
21122096
2097+ getTargetStreamer ().emitDirectiveOptionPIC ();
21132098 ParserOptions.IsPicEnabled = true ;
21142099 return false ;
21152100 }
21162101
21172102 if (Option == " nopic" ) {
2118- getTargetStreamer ().emitDirectiveOptionNoPIC ();
2119-
2120- Parser.Lex ();
2121- if (Parser.getTok ().isNot (AsmToken::EndOfStatement))
2122- return Error (Parser.getTok ().getLoc (),
2123- " unexpected token, expected end of statement" );
2103+ if (Parser.parseEOL ())
2104+ return true ;
21242105
2106+ getTargetStreamer ().emitDirectiveOptionNoPIC ();
21252107 ParserOptions.IsPicEnabled = false ;
21262108 return false ;
21272109 }
21282110
21292111 if (Option == " relax" ) {
2130- getTargetStreamer ().emitDirectiveOptionRelax ();
2131-
2132- Parser.Lex ();
2133- if (Parser.getTok ().isNot (AsmToken::EndOfStatement))
2134- return Error (Parser.getTok ().getLoc (),
2135- " unexpected token, expected end of statement" );
2112+ if (Parser.parseEOL ())
2113+ return true ;
21362114
2115+ getTargetStreamer ().emitDirectiveOptionRelax ();
21372116 setFeatureBits (RISCV::FeatureRelax, " relax" );
21382117 return false ;
21392118 }
21402119
21412120 if (Option == " norelax" ) {
2142- getTargetStreamer ().emitDirectiveOptionNoRelax ();
2143-
2144- Parser.Lex ();
2145- if (Parser.getTok ().isNot (AsmToken::EndOfStatement))
2146- return Error (Parser.getTok ().getLoc (),
2147- " unexpected token, expected end of statement" );
2121+ if (Parser.parseEOL ())
2122+ return true ;
21482123
2124+ getTargetStreamer ().emitDirectiveOptionNoRelax ();
21492125 clearFeatureBits (RISCV::FeatureRelax, " relax" );
21502126 return false ;
21512127 }
0 commit comments