compiler: prune away gcc-specific linemap usage
Add an interface to the go Linemap class to allow clients to ask for the line number for a Location (for debugging dumps), so as to move some gcc-specific location code into the back end. Reviewed-on: https://go-review.googlesource.com/30699 * go-linemap.cc (Gcc_linemap::location_line): New method. From-SVN: r240942
This commit is contained in:
parent
5d8c099ede
commit
71543388ee
5 changed files with 28 additions and 2 deletions
|
@ -1,3 +1,7 @@
|
|||
2016-10-10 Than McIntosh <thanm@google.com>
|
||||
|
||||
* go-linemap.cc (Gcc_linemap::location_line): New method.
|
||||
|
||||
2016-10-10 Eric Botcazou <ebotcazou@adacore.com>
|
||||
|
||||
* config-lang.in (lang_requires_boot_languages): Delete.
|
||||
|
|
|
@ -32,6 +32,9 @@ class Gcc_linemap : public Linemap
|
|||
std::string
|
||||
to_string(Location);
|
||||
|
||||
int
|
||||
location_line(Location);
|
||||
|
||||
protected:
|
||||
Location
|
||||
get_predeclared_location();
|
||||
|
@ -88,6 +91,13 @@ Gcc_linemap::to_string(Location location)
|
|||
return ss.str();
|
||||
}
|
||||
|
||||
// Return the line number for a given location (for debugging dumps)
|
||||
int
|
||||
Gcc_linemap::location_line(Location loc)
|
||||
{
|
||||
return LOCATION_LINE(loc.gcc_location());
|
||||
}
|
||||
|
||||
// Stop getting locations.
|
||||
|
||||
void
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
9401e714d690e3907a64ac5c8cd5aed9e28f511b
|
||||
f3658aea2493c7f1c4a72502f9e7da562c7764c4
|
||||
|
||||
The first line of this file holds the git revision number of the last
|
||||
merge done from the gofrontend repository.
|
||||
|
|
|
@ -145,7 +145,7 @@ Node::details() const
|
|||
std::stringstream details;
|
||||
|
||||
if (!this->is_sink())
|
||||
details << " l(" << LOCATION_LINE(this->location().gcc_location()) << ")";
|
||||
details << " l(" << Linemap::location_to_line(this->location()) << ")";
|
||||
|
||||
bool is_varargs = false;
|
||||
bool is_address_taken = false;
|
||||
|
|
|
@ -63,6 +63,10 @@ class Linemap
|
|||
virtual std::string
|
||||
to_string(Location) = 0;
|
||||
|
||||
// Return the line number for a given location (for debugging dumps)
|
||||
virtual int
|
||||
location_line(Location) = 0;
|
||||
|
||||
protected:
|
||||
// Return a special Location used for predeclared identifiers. This
|
||||
// Location should be different from that for any actual source
|
||||
|
@ -135,6 +139,14 @@ class Linemap
|
|||
go_assert(Linemap::instance_ != NULL);
|
||||
return Linemap::instance_->to_string(loc);
|
||||
}
|
||||
|
||||
// Return line number for location
|
||||
static int
|
||||
location_to_line(Location loc)
|
||||
{
|
||||
go_assert(Linemap::instance_ != NULL);
|
||||
return Linemap::instance_->location_line(loc);
|
||||
}
|
||||
};
|
||||
|
||||
// The backend interface must define this function. It should return
|
||||
|
|
Loading…
Add table
Reference in a new issue