3
0
Fork 0
mirror of https://github.com/YosysHQ/yosys synced 2025-08-10 21:20:53 +00:00

verilog_location: rename location to Location to avoid conflict with Pass::location

This commit is contained in:
Emil J. Tywoniak 2025-08-08 16:22:54 +02:00
parent 65b53e6473
commit 20b2e47b42
8 changed files with 28 additions and 32 deletions

View file

@ -164,7 +164,7 @@ namespace AST
AST_BIND AST_BIND
}; };
using AstSrcLocType = location; using AstSrcLocType = Location;
// convert an node type to a string (e.g. for debug output) // convert an node type to a string (e.g. for debug output)
std::string type2str(AstNodeType type); std::string type2str(AstNodeType type);

View file

@ -684,7 +684,7 @@ static bool contains_unbased_unsized(const AstNode *node)
// adds a wire to the current module with the given name that matches the // adds a wire to the current module with the given name that matches the
// dimensions of the given wire reference // dimensions of the given wire reference
void add_wire_for_ref(location loc, const RTLIL::Wire *ref, const std::string &str) void add_wire_for_ref(Location loc, const RTLIL::Wire *ref, const std::string &str)
{ {
auto left = AstNode::mkconst_int(loc, ref->width - 1 + ref->start_offset, true); auto left = AstNode::mkconst_int(loc, ref->width - 1 + ref->start_offset, true);
auto right = AstNode::mkconst_int(loc, ref->start_offset, true); auto right = AstNode::mkconst_int(loc, ref->start_offset, true);

View file

@ -43,7 +43,7 @@ static void verr_at(std::string filename, int begin_line, char const *fmt, va_li
} }
[[noreturn]] [[noreturn]]
void VERILOG_FRONTEND::err_at_loc(location loc, char const *fmt, ...) void VERILOG_FRONTEND::err_at_loc(Location loc, char const *fmt, ...)
{ {
va_list args; va_list args;
va_start(args, fmt); va_start(args, fmt);

View file

@ -10,7 +10,7 @@ YOSYS_NAMESPACE_BEGIN
namespace VERILOG_FRONTEND namespace VERILOG_FRONTEND
{ {
[[noreturn]] [[noreturn]]
void err_at_loc(location loc, char const *fmt, ...); void err_at_loc(Location loc, char const *fmt, ...);
}; };
YOSYS_NAMESPACE_END YOSYS_NAMESPACE_END

View file

@ -502,7 +502,7 @@ struct VerilogFrontend : public Frontend {
} }
auto filename_shared = std::make_shared<std::string>(filename); auto filename_shared = std::make_shared<std::string>(filename);
auto top_loc = location(); auto top_loc = Location();
top_loc.begin.filename = filename_shared; top_loc.begin.filename = filename_shared;
parse_state.current_ast = new AST::AstNode(top_loc, AST::AST_DESIGN); parse_state.current_ast = new AST::AstNode(top_loc, AST::AST_DESIGN);
VerilogLexer lexer(&parse_state, &parse_mode, filename_shared); VerilogLexer lexer(&parse_state, &parse_mode, filename_shared);

View file

@ -11,16 +11,16 @@
* but using shared_ptr for filename * but using shared_ptr for filename
*/ */
struct position { struct Position {
std::shared_ptr<std::string> filename; std::shared_ptr<std::string> filename;
int line; int line;
int column; int column;
position(std::shared_ptr<std::string> filename, int line = 1, int column = 1) Position(std::shared_ptr<std::string> filename, int line = 1, int column = 1)
: filename(filename), line(line), column(column) {} : filename(filename), line(line), column(column) {}
position() = default; Position() = default;
position(const position& other) = default; Position(const Position& other) = default;
position& operator=(const position& other) = default; Position& operator=(const Position& other) = default;
void advance() { ++column; } void advance() { ++column; }
void columns(int count = 1) { void columns(int count = 1) {
@ -41,15 +41,15 @@ struct position {
} }
}; };
struct location { struct Location {
position begin; Position begin;
position end; Position end;
location() = default; Location() = default;
location(const position& b, const position& e) Location(const Position& b, const Position& e)
: begin(b), end(e) {} : begin(b), end(e) {}
location(const location& other) = default; Location(const Location& other) = default;
location& operator=(const location& other) = default; Location& operator=(const Location& other) = default;
void step() { begin = end; } void step() { begin = end; }
@ -89,7 +89,7 @@ struct location {
} }
}; };
static inline std::ostream& operator<<(std::ostream& os, const location& loc) { static inline std::ostream& operator<<(std::ostream& os, const Location& loc) {
return os << loc.to_string(); return os << loc.to_string();
} }

View file

@ -38,7 +38,7 @@
%define api.value.type variant %define api.value.type variant
%define api.prefix {frontend_verilog_yy} %define api.prefix {frontend_verilog_yy}
%define api.token.constructor %define api.token.constructor
%define api.location.type {location} %define api.location.type {Location}
%param { YOSYS_NAMESPACE_PREFIX VERILOG_FRONTEND::VerilogLexer* lexer } %param { YOSYS_NAMESPACE_PREFIX VERILOG_FRONTEND::VerilogLexer* lexer }
%parse-param { YOSYS_NAMESPACE_PREFIX VERILOG_FRONTEND::ParseState* extra } %parse-param { YOSYS_NAMESPACE_PREFIX VERILOG_FRONTEND::ParseState* extra }
@ -146,14 +146,10 @@
YOSYS_NAMESPACE_BEGIN YOSYS_NAMESPACE_BEGIN
namespace VERILOG_FRONTEND { namespace VERILOG_FRONTEND {
static location location_range(location begin, location end) { static Location location_range(Location begin, Location end) {
return location(begin.begin, end.end); return Location(begin.begin, end.end);
} }
static ConstParser make_ConstParser_here(parser::location_type flex_loc) {
ConstParser p{flex_loc};
return p;
}
static void append_attr(AstNode *ast, dict<IdString, std::unique_ptr<AstNode>> *al) static void append_attr(AstNode *ast, dict<IdString, std::unique_ptr<AstNode>> *al)
{ {
for (auto &it : *al) { for (auto &it : *al) {
@ -370,7 +366,7 @@
const AstNode *ParseState::addIncOrDecStmt(dict<IdString, std::unique_ptr<AstNode>> *stmt_attr, const AstNode *ParseState::addIncOrDecStmt(dict<IdString, std::unique_ptr<AstNode>> *stmt_attr,
std::unique_ptr<AstNode> lhs, std::unique_ptr<AstNode> lhs,
dict<IdString, std::unique_ptr<AstNode>> *op_attr, AST::AstNodeType op, dict<IdString, std::unique_ptr<AstNode>> *op_attr, AST::AstNodeType op,
location loc) Location loc)
{ {
auto one = AstNode::mkconst_int(loc, 1, true); auto one = AstNode::mkconst_int(loc, 1, true);
auto rhs = std::make_unique<AstNode>(loc, op, lhs->clone(), std::move(one)); auto rhs = std::make_unique<AstNode>(loc, op, lhs->clone(), std::move(one));
@ -385,7 +381,7 @@
} }
// create a pre/post-increment/decrement expression, and add the corresponding statement // create a pre/post-increment/decrement expression, and add the corresponding statement
std::unique_ptr<AstNode> ParseState::addIncOrDecExpr(std::unique_ptr<AstNode> lhs, dict<IdString, std::unique_ptr<AstNode>> *attr, AST::AstNodeType op, location loc, bool undo, bool sv_mode) std::unique_ptr<AstNode> ParseState::addIncOrDecExpr(std::unique_ptr<AstNode> lhs, dict<IdString, std::unique_ptr<AstNode>> *attr, AST::AstNodeType op, Location loc, bool undo, bool sv_mode)
{ {
ensureAsgnExprAllowed(loc, sv_mode); ensureAsgnExprAllowed(loc, sv_mode);
const AstNode *stmt = addIncOrDecStmt(nullptr, std::move(lhs), attr, op, loc); const AstNode *stmt = addIncOrDecStmt(nullptr, std::move(lhs), attr, op, loc);
@ -402,7 +398,7 @@
// add a binary operator assignment statement, e.g., a += b // add a binary operator assignment statement, e.g., a += b
std::unique_ptr<AstNode> ParseState::addAsgnBinopStmt(dict<IdString, std::unique_ptr<AstNode>> *attr, std::unique_ptr<AstNode> eq_lhs, AST::AstNodeType op, std::unique_ptr<AstNode> rhs) std::unique_ptr<AstNode> ParseState::addAsgnBinopStmt(dict<IdString, std::unique_ptr<AstNode>> *attr, std::unique_ptr<AstNode> eq_lhs, AST::AstNodeType op, std::unique_ptr<AstNode> rhs)
{ {
location loc = location_range(eq_lhs->location, rhs->location); Location loc = location_range(eq_lhs->location, rhs->location);
if (op == AST_SHIFT_LEFT || op == AST_SHIFT_RIGHT || if (op == AST_SHIFT_LEFT || op == AST_SHIFT_RIGHT ||
op == AST_SHIFT_SLEFT || op == AST_SHIFT_SRIGHT) { op == AST_SHIFT_SLEFT || op == AST_SHIFT_SRIGHT) {
rhs = std::make_unique<AstNode>(rhs->location, AST_TO_UNSIGNED, std::move(rhs)); rhs = std::make_unique<AstNode>(rhs->location, AST_TO_UNSIGNED, std::move(rhs));
@ -3219,7 +3215,7 @@ basic_expr:
TOK_LPAREN expr TOK_RPAREN integral_number { TOK_LPAREN expr TOK_RPAREN integral_number {
if ($4->compare(0, 1, "'") != 0) if ($4->compare(0, 1, "'") != 0)
err_at_loc(@4, "Cast operation must be applied on sized constants e.g. (<expr>)<constval> , while %s is not a sized constant.", $4->c_str()); err_at_loc(@4, "Cast operation must be applied on sized constants e.g. (<expr>)<constval> , while %s is not a sized constant.", $4->c_str());
auto p = make_ConstParser_here(@4); ConstParser p{@4};
auto val = p.const2ast(*$4, extra->case_type_stack.size() == 0 ? 0 : extra->case_type_stack.back(), !mode->lib); auto val = p.const2ast(*$4, extra->case_type_stack.size() == 0 ? 0 : extra->case_type_stack.back(), !mode->lib);
if (val == nullptr) if (val == nullptr)
log_error("Value conversion failed: `%s'\n", $4->c_str()); log_error("Value conversion failed: `%s'\n", $4->c_str());
@ -3231,7 +3227,7 @@ basic_expr:
auto bits = std::make_unique<AstNode>(@$, AST_IDENTIFIER); auto bits = std::make_unique<AstNode>(@$, AST_IDENTIFIER);
bits->str = *$1; bits->str = *$1;
SET_AST_NODE_LOC(bits.get(), @1, @1); SET_AST_NODE_LOC(bits.get(), @1, @1);
auto p = make_ConstParser_here(@2); ConstParser p{@2};
auto val = p.const2ast(*$2, extra->case_type_stack.size() == 0 ? 0 : extra->case_type_stack.back(), !mode->lib); auto val = p.const2ast(*$2, extra->case_type_stack.size() == 0 ? 0 : extra->case_type_stack.back(), !mode->lib);
SET_AST_NODE_LOC(val.get(), @2, @2); SET_AST_NODE_LOC(val.get(), @2, @2);
if (val == nullptr) if (val == nullptr)
@ -3239,7 +3235,7 @@ basic_expr:
$$ = std::make_unique<AstNode>(@$, AST_TO_BITS, std::move(bits), std::move(val)); $$ = std::make_unique<AstNode>(@$, AST_TO_BITS, std::move(bits), std::move(val));
} | } |
integral_number { integral_number {
auto p = make_ConstParser_here(@1); ConstParser p{@1};
$$ = p.const2ast(*$1, extra->case_type_stack.size() == 0 ? 0 : extra->case_type_stack.back(), !mode->lib); $$ = p.const2ast(*$1, extra->case_type_stack.size() == 0 ? 0 : extra->case_type_stack.back(), !mode->lib);
SET_AST_NODE_LOC($$.get(), @1, @1); SET_AST_NODE_LOC($$.get(), @1, @1);
if ($$ == nullptr) if ($$ == nullptr)

View file

@ -5725,7 +5725,7 @@ bool RTLIL::SigSpec::parse(RTLIL::SigSpec &sig, RTLIL::Module *module, std::stri
if (('0' <= netname[0] && netname[0] <= '9') || netname[0] == '\'') { if (('0' <= netname[0] && netname[0] <= '9') || netname[0] == '\'') {
cover("kernel.rtlil.sigspec.parse.const"); cover("kernel.rtlil.sigspec.parse.const");
VERILOG_FRONTEND::ConstParser p{location()}; VERILOG_FRONTEND::ConstParser p{Location()};
auto ast = p.const2ast(netname); auto ast = p.const2ast(netname);
if (ast == nullptr) if (ast == nullptr)
return false; return false;