@@ -2043,109 +2043,85 @@ bool RISCVAsmParser::parseDirectiveOption() {
2043
2043
MCAsmParser &Parser = getParser ();
2044
2044
// Get the option token.
2045
2045
AsmToken Tok = Parser.getTok ();
2046
+
2046
2047
// 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 ;
2050
2050
2051
2051
StringRef Option = Tok.getIdentifier ();
2052
2052
2053
2053
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 ;
2060
2056
2057
+ getTargetStreamer ().emitDirectiveOptionPush ();
2061
2058
pushFeatureBits ();
2062
2059
return false ;
2063
2060
}
2064
2061
2065
2062
if (Option == " pop" ) {
2066
2063
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 ;
2073
2066
2067
+ getTargetStreamer ().emitDirectiveOptionPop ();
2074
2068
if (popFeatureBits ())
2075
2069
return Error (StartLoc, " .option pop with no .option push" );
2076
2070
2077
2071
return false ;
2078
2072
}
2079
2073
2080
2074
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 ;
2087
2077
2078
+ getTargetStreamer ().emitDirectiveOptionRVC ();
2088
2079
setFeatureBits (RISCV::FeatureStdExtC, " c" );
2089
2080
return false ;
2090
2081
}
2091
2082
2092
2083
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 ;
2099
2086
2087
+ getTargetStreamer ().emitDirectiveOptionNoRVC ();
2100
2088
clearFeatureBits (RISCV::FeatureStdExtC, " c" );
2101
2089
clearFeatureBits (RISCV::FeatureExtZca, " +experimental-zca" );
2102
2090
return false ;
2103
2091
}
2104
2092
2105
2093
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 ;
2112
2096
2097
+ getTargetStreamer ().emitDirectiveOptionPIC ();
2113
2098
ParserOptions.IsPicEnabled = true ;
2114
2099
return false ;
2115
2100
}
2116
2101
2117
2102
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 ;
2124
2105
2106
+ getTargetStreamer ().emitDirectiveOptionNoPIC ();
2125
2107
ParserOptions.IsPicEnabled = false ;
2126
2108
return false ;
2127
2109
}
2128
2110
2129
2111
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 ;
2136
2114
2115
+ getTargetStreamer ().emitDirectiveOptionRelax ();
2137
2116
setFeatureBits (RISCV::FeatureRelax, " relax" );
2138
2117
return false ;
2139
2118
}
2140
2119
2141
2120
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 ;
2148
2123
2124
+ getTargetStreamer ().emitDirectiveOptionNoRelax ();
2149
2125
clearFeatureBits (RISCV::FeatureRelax, " relax" );
2150
2126
return false ;
2151
2127
}
0 commit comments