Skip to content

Commit 82da1dd

Browse files
committed
Verilog: parse tree now uses verilog_module_sourcet
This will enable removing verilog_modulet in favour of verilog_module_sourcet.
1 parent 275b889 commit 82da1dd

File tree

6 files changed

+39
-10
lines changed

6 files changed

+39
-10
lines changed

src/verilog/verilog_expr.cpp

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,3 +30,29 @@ bool function_call_exprt::is_system_function_call() const
3030
has_prefix(
3131
id2string(to_symbol_expr(function()).get_identifier()), "$");
3232
}
33+
34+
void verilog_module_sourcet::show(std::ostream &out) const
35+
{
36+
out << "Module: " << base_name() << '\n';
37+
38+
out << " Parameters:\n";
39+
40+
for(auto &parameter : parameter_port_list())
41+
out << " " << parameter.pretty() << '\n';
42+
43+
out << '\n';
44+
45+
out << " Ports:\n";
46+
47+
for(auto &port : ports())
48+
out << " " << port.pretty() << '\n';
49+
50+
out << '\n';
51+
52+
out << " Module items:\n";
53+
54+
for(auto &item : module_items())
55+
out << " " << item.pretty() << '\n';
56+
57+
out << '\n';
58+
}

src/verilog/verilog_expr.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1944,6 +1944,8 @@ class verilog_module_sourcet : public irept
19441944
{
19451945
return static_cast<source_locationt &>(add(ID_C_source_location));
19461946
}
1947+
1948+
void show(std::ostream &) const;
19471949
};
19481950

19491951
inline const verilog_module_sourcet &to_verilog_module_source(const irept &irep)

src/verilog/verilog_language.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -134,10 +134,10 @@ void verilog_languaget::dependencies(
134134
if(it!=parse_tree.module_map.end())
135135
{
136136
// dependencies on other Verilog modules
137-
138-
const verilog_modulet &module=(it->second)->verilog_module;
139137

140-
for(auto &identifier : submodules(module.to_irep()))
138+
const auto &module = (it->second)->verilog_module;
139+
140+
for(auto &identifier : submodules(module))
141141
module_set.insert(id2string(identifier));
142142
}
143143
}

src/verilog/verilog_parse_tree.cpp

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,20 +30,21 @@ void verilog_parse_treet::create_module(
3030
exprt &module_items)
3131
{
3232
items.push_back(itemt(itemt::MODULE));
33-
itemt &item=items.back();
34-
35-
verilog_modulet &new_module=item.verilog_module;
3633

3734
if(ports.get_sub().size()==1 &&
3835
ports.get_sub().front().is_nil())
3936
ports.clear();
4037

38+
verilog_modulet new_module;
39+
4140
new_module.name=name.id();
4241
new_module.parameter_port_list.swap(parameter_port_list);
4342
new_module.ports.swap(ports);
4443
new_module.location=((const exprt &)module_keyword).source_location();
4544
new_module.module_items.swap(module_items);
4645

46+
items.back().verilog_module = new_module.to_irep();
47+
4748
// add to module map
4849
module_map[new_module.name]=--items.end();
4950
}
@@ -68,7 +69,7 @@ void verilog_parse_treet::modules_provided(
6869
it++)
6970
if(it->is_module())
7071
module_set.insert(
71-
id2string(verilog_module_symbol(it->verilog_module.name)));
72+
id2string(verilog_module_symbol(it->verilog_module.base_name())));
7273
}
7374

7475
/*******************************************************************\
@@ -91,7 +92,7 @@ void verilog_parse_treet::build_module_map()
9192
it!=items.end();
9293
it++)
9394
if(it->is_module())
94-
module_map[it->verilog_module.name]=it;
95+
module_map[it->verilog_module.base_name()] = it;
9596
}
9697

9798
/*******************************************************************\

src/verilog/verilog_parse_tree.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ class verilog_parse_treet
4141
{
4242
}
4343

44-
verilog_modulet verilog_module;
44+
verilog_module_sourcet verilog_module;
4545

4646
exprt verilog_package_item;
4747

src/verilog/verilog_typecheck.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1848,7 +1848,7 @@ bool verilog_typecheck(
18481848

18491849
return verilog_typecheck(
18501850
symbol_table,
1851-
it->second->verilog_module.to_irep(),
1851+
it->second->verilog_module,
18521852
parse_tree.standard,
18531853
message_handler);
18541854
}

0 commit comments

Comments
 (0)