aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorKushal Pal <kushalpal109@gmail.com>2024-07-09 10:37:27 +0000
committerP-E-P <32375388+P-E-P@users.noreply.github.com>2024-08-01 10:38:50 +0000
commitbcd860f7f54a241ca8a2ce6fb4d61069fd7139d0 (patch)
tree27a1393e85de41d925deb87848b5cacf60eec0b2 /gcc
parentf2c807127b5c88ca0bd4993fe8315d865b8c5ba5 (diff)
downloadgcc-bcd860f7f54a241ca8a2ce6fb4d61069fd7139d0.zip
gcc-bcd860f7f54a241ca8a2ce6fb4d61069fd7139d0.tar.gz
gcc-bcd860f7f54a241ca8a2ce6fb4d61069fd7139d0.tar.bz2
Add location to BIR::Loan
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 <kushalpal109@gmail.com>
Diffstat (limited to 'gcc')
-rw-r--r--gcc/rust/checks/errors/borrowck/rust-bir-builder-internal.h5
-rw-r--r--gcc/rust/checks/errors/borrowck/rust-bir-place.h1
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 877c34b..e542c4e 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 752c8f4..06faa77 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. */