From: Kushal Pal <[email protected]>
This commit adds location_t to BIR::Loan, this location will point to
location is source code where the borrow occured, this information will
be useful for reporting borrow-checking errors.
gcc/rust/ChangeLog:
* checks/errors/borrowck/rust-bir-builder-internal.h:
Fill location for loan.
* checks/errors/borrowck/rust-bir-place.h (struct Loan):
Add location field.
Signed-off-by: Kushal Pal <[email protected]>
---
gcc/rust/checks/errors/borrowck/rust-bir-builder-internal.h | 5 +++--
gcc/rust/checks/errors/borrowck/rust-bir-place.h | 1 +
2 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/gcc/rust/checks/errors/borrowck/rust-bir-builder-internal.h
b/gcc/rust/checks/errors/borrowck/rust-bir-builder-internal.h
index 46f811ea25a..16fcb6abca7 100644
--- a/gcc/rust/checks/errors/borrowck/rust-bir-builder-internal.h
+++ b/gcc/rust/checks/errors/borrowck/rust-bir-builder-internal.h
@@ -307,7 +307,7 @@ protected: // Helpers to add BIR statements
location_t location)
{
auto mutability = ty->as<const TyTy::ReferenceType> ()->mutability ();
- auto loan = ctx.place_db.add_loan ({mutability, place_id});
+ auto loan = ctx.place_db.add_loan ({mutability, place_id, location});
push_tmp_assignment (new BorrowExpr (place_id, loan,
ctx.place_db.get_next_free_region ()),
ty, location);
@@ -600,7 +600,8 @@ protected:
{
// TODO: deduplicate with borrow_place
auto loan = ctx.place_db.add_loan (
- {ty->as<const TyTy::ReferenceType> ()->mutability (), place_id});
+ {ty->as<const TyTy::ReferenceType> ()->mutability (), place_id,
+ location});
return_expr (new BorrowExpr (place_id, loan,
ctx.place_db.get_next_free_region ()),
ty, location);
diff --git a/gcc/rust/checks/errors/borrowck/rust-bir-place.h
b/gcc/rust/checks/errors/borrowck/rust-bir-place.h
index 8c38e8ed3cd..66da3dab380 100644
--- a/gcc/rust/checks/errors/borrowck/rust-bir-place.h
+++ b/gcc/rust/checks/errors/borrowck/rust-bir-place.h
@@ -162,6 +162,7 @@ struct Loan
{
Mutability mutability;
PlaceId place;
+ location_t location;
};
/** Allocated places and keeps track of paths. */
--
2.45.2