summaryrefslogtreecommitdiffstats
path: root/elaborate.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'elaborate.cxx')
-rw-r--r--elaborate.cxx20
1 files changed, 15 insertions, 5 deletions
diff --git a/elaborate.cxx b/elaborate.cxx
index 2446e4f8..c3f29603 100644
--- a/elaborate.cxx
+++ b/elaborate.cxx
@@ -1711,7 +1711,7 @@ symresolution_info::visit_foreach_loop (foreach_loop* e)
{
if (!array->referent)
{
- vardecl* d = find_var (array->name, e->indexes.size ());
+ vardecl* d = find_var (array->name, e->indexes.size (), array->tok);
if (d)
array->referent = d;
else
@@ -1760,7 +1760,7 @@ delete_statement_symresolution_info:
if (e->referent)
return;
- vardecl* d = parent->find_var (e->name, -1);
+ vardecl* d = parent->find_var (e->name, -1, e->tok);
if (d)
e->referent = d;
else
@@ -1782,7 +1782,7 @@ symresolution_info::visit_symbol (symbol* e)
if (e->referent)
return;
- vardecl* d = find_var (e->name, 0);
+ vardecl* d = find_var (e->name, 0, e->tok);
if (d)
e->referent = d;
else
@@ -1818,7 +1818,7 @@ symresolution_info::visit_arrayindex (arrayindex* e)
if (array->referent)
return;
- vardecl* d = find_var (array->name, e->indexes.size ());
+ vardecl* d = find_var (array->name, e->indexes.size (), array->tok);
if (d)
array->referent = d;
else
@@ -1877,7 +1877,7 @@ symresolution_info::visit_functioncall (functioncall* e)
vardecl*
-symresolution_info::find_var (const string& name, int arity)
+symresolution_info::find_var (const string& name, int arity, const token* tok)
{
if (current_function || current_probe)
{
@@ -1912,6 +1912,16 @@ symresolution_info::find_var (const string& name, int arity)
&& session.globals[i]->compatible_arity(arity))
{
session.globals[i]->set_arity (arity);
+ if (! session.suppress_warnings)
+ {
+ vardecl* v = session.globals[i];
+ // clog << "resolved " << *tok << " to global " << *v->tok << endl;
+ if (v->tok->location.file != tok->location.file)
+ {
+ session.print_warning ("cross-file global variable reference to " + lex_cast (*v->tok) + " from",
+ tok);
+ }
+ }
return session.globals[i];
}