https://gcc.gnu.org/g:bcd860f7f54a241ca8a2ce6fb4d61069fd7139d0

commit bcd860f7f54a241ca8a2ce6fb4d61069fd7139d0
Author: Kushal Pal <kushalpal...@gmail.com>
Date:   Tue Jul 9 10:37:27 2024 +0000

    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 877c34ba450a..e542c4ebb18d 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 752c8f42c007..06faa77a6fa0 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. */

Reply via email to