https://gcc.gnu.org/g:37941c99df7cd15022ec27260cb7bc5de34dee98
commit r15-8312-g37941c99df7cd15022ec27260cb7bc5de34dee98 Author: Kushal Pal <kushalpal...@gmail.com> Date: Tue Jul 9 10:37:27 2024 +0000 gccrs: 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 <kushalpal...@gmail.com> Diff: --- 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 46f811ea25a7..16fcb6abca73 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 8c38e8ed3cd8..66da3dab380c 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. */