diff options
author | Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com> | 2024-03-26 16:32:31 +0100 |
---|---|---|
committer | Arthur Cohen <arthur.cohen@embecosm.com> | 2024-08-01 16:52:28 +0200 |
commit | 957b4ff94ed91490f168cfabc5ee73cc6cd2191b (patch) | |
tree | 521b3f7c339999fef66c600f9bd210ac713d8be9 /gcc | |
parent | b8ab88d12dee281f25634d793387608e6eab5f68 (diff) | |
download | gcc-957b4ff94ed91490f168cfabc5ee73cc6cd2191b.zip gcc-957b4ff94ed91490f168cfabc5ee73cc6cd2191b.tar.gz gcc-957b4ff94ed91490f168cfabc5ee73cc6cd2191b.tar.bz2 |
gccrs: Change dfs function return type to support gcc 4.8
GCC 4.8 does not handle pair with references correctly. We need to use a
properly typed struct instead.
gcc/rust/ChangeLog:
* resolve/rust-forever-stack.h: Change dfs function prototype and
declare dfs return type structure.
* resolve/rust-forever-stack.hxx: Adapt dfs function to the new return
type.
Signed-off-by: Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/rust/resolve/rust-forever-stack.h | 8 | ||||
-rw-r--r-- | gcc/rust/resolve/rust-forever-stack.hxx | 4 |
2 files changed, 8 insertions, 4 deletions
diff --git a/gcc/rust/resolve/rust-forever-stack.h b/gcc/rust/resolve/rust-forever-stack.h index 3dab45e..72b96bf 100644 --- a/gcc/rust/resolve/rust-forever-stack.h +++ b/gcc/rust/resolve/rust-forever-stack.h @@ -596,10 +596,14 @@ private: SegIterator<S> iterator); /* Helper functions for forward resolution (to_canonical_path, to_rib...) */ + struct DfsResult + { + Node &first; + std::string second; + }; // FIXME: Documentation - tl::optional<std::pair<Node &, std::string>> dfs (Node &starting_point, - NodeId to_find); + tl::optional<DfsResult> dfs (Node &starting_point, NodeId to_find); // FIXME: Documentation tl::optional<Rib &> dfs_rib (Node &starting_point, NodeId to_find); }; diff --git a/gcc/rust/resolve/rust-forever-stack.hxx b/gcc/rust/resolve/rust-forever-stack.hxx index 6b622b8..2c3cba5 100644 --- a/gcc/rust/resolve/rust-forever-stack.hxx +++ b/gcc/rust/resolve/rust-forever-stack.hxx @@ -468,7 +468,7 @@ ForeverStack<N>::resolve_path (const std::vector<S> &segments) } template <Namespace N> -tl::optional<std::pair<typename ForeverStack<N>::Node &, std::string>> +tl::optional<typename ForeverStack<N>::DfsResult> ForeverStack<N>::dfs (ForeverStack<N>::Node &starting_point, NodeId to_find) { auto values = starting_point.rib.get_values (); @@ -498,7 +498,7 @@ ForeverStack<N>::to_canonical_path (NodeId id) // back up to the root (parent().parent().parent()...) accumulate link // segments reverse them that's your canonical path - return dfs (root, id).map ([this, id] (std::pair<Node &, std::string> tuple) { + return dfs (root, id).map ([this, id] (DfsResult tuple) { auto containing_node = tuple.first; auto name = tuple.second; |