vpr: pass t_placer_opts in binary_search_place_and_route by reference
diff --git a/vpr/src/base/place_and_route.cpp b/vpr/src/base/place_and_route.cpp
index d016375..0f47ebe 100644
--- a/vpr/src/base/place_and_route.cpp
+++ b/vpr/src/base/place_and_route.cpp
@@ -43,7 +43,7 @@
/************************* Subroutine Definitions ****************************/
-int binary_search_place_and_route(t_placer_opts placer_opts,
+int binary_search_place_and_route(const t_placer_opts& placer_opts_ref,
const t_annealing_sched& annealing_sched,
const t_router_opts& router_opts,
const t_analysis_opts& analysis_opts,
@@ -76,6 +76,12 @@
t_graph_type graph_type;
+ /* We have chosen to pass placer_opts_ref by reference because of its large size. *
+ * However, since the value is mutated later in the function, we declare a *
+ * mutable variable called placer_opts equal to placer_opts_ref. */
+
+ t_placer_opts placer_opts = placer_opts_ref;
+
/* Allocate the major routing structures. */
if (router_opts.route_type == GLOBAL) {
diff --git a/vpr/src/base/place_and_route.h b/vpr/src/base/place_and_route.h
index 40d9565..fe37dc0 100644
--- a/vpr/src/base/place_and_route.h
+++ b/vpr/src/base/place_and_route.h
@@ -21,7 +21,7 @@
t_fmap_cell* next;
};
-int binary_search_place_and_route(t_placer_opts placer_opts,
+int binary_search_place_and_route(const t_placer_opts& placer_opts_ref,
const t_annealing_sched& annealing_sched,
const t_router_opts& router_opts,
const t_analysis_opts& analysis_opts,