aboutsummaryrefslogtreecommitdiff
path: root/gcc/rust/backend/rust-compile-base.cc
diff options
context:
space:
mode:
authorPhilip Herron <philip.herron@embecosm.com>2022-08-03 11:54:54 +0100
committerPhilip Herron <philip.herron@embecosm.com>2022-08-04 15:48:37 +0100
commit94e53f8e55e93da8db3d948c3f16d23b7c4ba7a6 (patch)
tree6a7063460808979f86fa0e4f799bb3c915615a03 /gcc/rust/backend/rust-compile-base.cc
parent2dc902baa1388841096e16e660082a8e79fce17e (diff)
downloadgcc-94e53f8e55e93da8db3d948c3f16d23b7c4ba7a6.zip
gcc-94e53f8e55e93da8db3d948c3f16d23b7c4ba7a6.tar.gz
gcc-94e53f8e55e93da8db3d948c3f16d23b7c4ba7a6.tar.bz2
Refactor indirect_expression from the gcc-backend wrapper
This brings out the indirect expression out of our gcc wrapper, it also just simplifies down to the normal build_indirect_expr_loc calls. Which does not require specifiying the type since we can reuse TREE_TYPE. This also simplifies the address_expression to just address_expr_with_loc and grabs the type from TREE_TYPE as well.
Diffstat (limited to 'gcc/rust/backend/rust-compile-base.cc')
-rw-r--r--gcc/rust/backend/rust-compile-base.cc14
1 files changed, 11 insertions, 3 deletions
diff --git a/gcc/rust/backend/rust-compile-base.cc b/gcc/rust/backend/rust-compile-base.cc
index 28f3941..a640a48 100644
--- a/gcc/rust/backend/rust-compile-base.cc
+++ b/gcc/rust/backend/rust-compile-base.cc
@@ -411,7 +411,7 @@ HIRCompileBase::mark_addressable (tree exp, Location locus)
}
tree
-HIRCompileBase::address_expression (tree expr, tree ptrtype, Location location)
+HIRCompileBase::address_expression (tree expr, Location location)
{
if (expr == error_mark_node)
return error_mark_node;
@@ -419,8 +419,16 @@ HIRCompileBase::address_expression (tree expr, tree ptrtype, Location location)
if (!mark_addressable (expr, location))
return error_mark_node;
- return build_fold_addr_expr_with_type_loc (location.gcc_location (), expr,
- ptrtype);
+ return build_fold_addr_expr_loc (location.gcc_location (), expr);
+}
+
+tree
+HIRCompileBase::indirect_expression (tree expr, Location locus)
+{
+ if (expr == error_mark_node)
+ return error_mark_node;
+
+ return build_fold_indirect_ref_loc (locus.gcc_location (), expr);
}
std::vector<Bvariable *>