spirv-fuzz: Fix rvalue references (#3883)
Fixes #3659.
diff --git a/source/fuzz/data_descriptor.cpp b/source/fuzz/data_descriptor.cpp
index 86e5325..c467363 100644
--- a/source/fuzz/data_descriptor.cpp
+++ b/source/fuzz/data_descriptor.cpp
@@ -19,8 +19,8 @@
namespace spvtools {
namespace fuzz {
-protobufs::DataDescriptor MakeDataDescriptor(uint32_t object,
- std::vector<uint32_t>&& indices) {
+protobufs::DataDescriptor MakeDataDescriptor(
+ uint32_t object, const std::vector<uint32_t>& indices) {
protobufs::DataDescriptor result;
result.set_object(object);
for (auto index : indices) {
diff --git a/source/fuzz/data_descriptor.h b/source/fuzz/data_descriptor.h
index a87a0d9..f4b8e9c 100644
--- a/source/fuzz/data_descriptor.h
+++ b/source/fuzz/data_descriptor.h
@@ -25,8 +25,8 @@
// Factory method to create a data descriptor message from an object id and a
// list of indices.
-protobufs::DataDescriptor MakeDataDescriptor(uint32_t object,
- std::vector<uint32_t>&& indices);
+protobufs::DataDescriptor MakeDataDescriptor(
+ uint32_t object, const std::vector<uint32_t>& indices);
// Hash function for data descriptors.
struct DataDescriptorHash {
diff --git a/source/fuzz/fact_manager/data_synonym_and_id_equation_facts.cpp b/source/fuzz/fact_manager/data_synonym_and_id_equation_facts.cpp
index de16472..f8b9712 100644
--- a/source/fuzz/fact_manager/data_synonym_and_id_equation_facts.cpp
+++ b/source/fuzz/fact_manager/data_synonym_and_id_equation_facts.cpp
@@ -405,8 +405,8 @@
fuzzerutil::RepeatedFieldToVector(dd2.index());
extended_indices2.push_back(i);
AddDataSynonymFactRecursive(
- MakeDataDescriptor(dd1.object(), std::move(extended_indices1)),
- MakeDataDescriptor(dd2.object(), std::move(extended_indices2)));
+ MakeDataDescriptor(dd1.object(), extended_indices1),
+ MakeDataDescriptor(dd2.object(), extended_indices2));
if (i < kCompositeElementBound - 1 || i == num_composite_elements - 1) {
// We have not reached the bound yet, or have already skipped ahead to the
diff --git a/source/fuzz/fuzzer_pass_outline_functions.cpp b/source/fuzz/fuzzer_pass_outline_functions.cpp
index 3bd0a9f..4210125 100644
--- a/source/fuzz/fuzzer_pass_outline_functions.cpp
+++ b/source/fuzz/fuzzer_pass_outline_functions.cpp
@@ -107,8 +107,8 @@
GetFuzzerContext()->GetFreshId(),
/*new_caller_result_id*/ GetFuzzerContext()->GetFreshId(),
/*new_callee_result_id*/ GetFuzzerContext()->GetFreshId(),
- /*input_id_to_fresh_id*/ std::move(input_id_to_fresh_id),
- /*output_id_to_fresh_id*/ std::move(output_id_to_fresh_id));
+ /*input_id_to_fresh_id*/ input_id_to_fresh_id,
+ /*output_id_to_fresh_id*/ output_id_to_fresh_id);
MaybeApplyTransformation(transformation);
}
}
diff --git a/source/fuzz/transformation_composite_extract.cpp b/source/fuzz/transformation_composite_extract.cpp
index 641e6f0..bc8797d 100644
--- a/source/fuzz/transformation_composite_extract.cpp
+++ b/source/fuzz/transformation_composite_extract.cpp
@@ -29,7 +29,8 @@
TransformationCompositeExtract::TransformationCompositeExtract(
const protobufs::InstructionDescriptor& instruction_to_insert_before,
- uint32_t fresh_id, uint32_t composite_id, std::vector<uint32_t>&& index) {
+ uint32_t fresh_id, uint32_t composite_id,
+ const std::vector<uint32_t>& index) {
*message_.mutable_instruction_to_insert_before() =
instruction_to_insert_before;
message_.set_fresh_id(fresh_id);
@@ -121,7 +122,7 @@
indices.push_back(an_index);
}
protobufs::DataDescriptor data_descriptor_for_extracted_element =
- MakeDataDescriptor(message_.composite_id(), std::move(indices));
+ MakeDataDescriptor(message_.composite_id(), indices);
protobufs::DataDescriptor data_descriptor_for_result_id =
MakeDataDescriptor(message_.fresh_id(), {});
transformation_context->GetFactManager()->AddFactDataSynonym(
diff --git a/source/fuzz/transformation_composite_extract.h b/source/fuzz/transformation_composite_extract.h
index 99172a6..de59bed 100644
--- a/source/fuzz/transformation_composite_extract.h
+++ b/source/fuzz/transformation_composite_extract.h
@@ -30,7 +30,8 @@
TransformationCompositeExtract(
const protobufs::InstructionDescriptor& instruction_to_insert_before,
- uint32_t fresh_id, uint32_t composite_id, std::vector<uint32_t>&& index);
+ uint32_t fresh_id, uint32_t composite_id,
+ const std::vector<uint32_t>& index);
// - |message_.fresh_id| must be available
// - |message_.instruction_to_insert_before| must identify an instruction
diff --git a/source/fuzz/transformation_composite_insert.cpp b/source/fuzz/transformation_composite_insert.cpp
index 1d332ce..e08a09f 100644
--- a/source/fuzz/transformation_composite_insert.cpp
+++ b/source/fuzz/transformation_composite_insert.cpp
@@ -166,15 +166,9 @@
continue;
}
current_index.push_back(i);
- // TODO(https://github.com/KhronosGroup/SPIRV-Tools/issues/3659):
- // Google C++ guide restricts the use of r-value references.
- // https://google.github.io/styleguide/cppguide.html#Rvalue_references
- // Consider changing the signature of MakeDataDescriptor()
transformation_context->GetFactManager()->AddFactDataSynonym(
- MakeDataDescriptor(message_.fresh_id(),
- std::vector<uint32_t>(current_index)),
- MakeDataDescriptor(message_.composite_id(),
- std::vector<uint32_t>(current_index)));
+ MakeDataDescriptor(message_.fresh_id(), current_index),
+ MakeDataDescriptor(message_.composite_id(), current_index));
current_index.pop_back();
}
// Store the prefix of the |index|.
@@ -186,7 +180,7 @@
message_.object_id())) {
transformation_context->GetFactManager()->AddFactDataSynonym(
MakeDataDescriptor(message_.object_id(), {}),
- MakeDataDescriptor(message_.fresh_id(), std::vector<uint32_t>(index)));
+ MakeDataDescriptor(message_.fresh_id(), index));
}
}
diff --git a/source/fuzz/transformation_outline_function.cpp b/source/fuzz/transformation_outline_function.cpp
index a2cef7a..0eec50e 100644
--- a/source/fuzz/transformation_outline_function.cpp
+++ b/source/fuzz/transformation_outline_function.cpp
@@ -30,8 +30,8 @@
uint32_t new_function_struct_return_type_id, uint32_t new_function_type_id,
uint32_t new_function_id, uint32_t new_function_region_entry_block,
uint32_t new_caller_result_id, uint32_t new_callee_result_id,
- std::map<uint32_t, uint32_t>&& input_id_to_fresh_id,
- std::map<uint32_t, uint32_t>&& output_id_to_fresh_id) {
+ const std::map<uint32_t, uint32_t>& input_id_to_fresh_id,
+ const std::map<uint32_t, uint32_t>& output_id_to_fresh_id) {
message_.set_entry_block(entry_block);
message_.set_exit_block(exit_block);
message_.set_new_function_struct_return_type_id(
diff --git a/source/fuzz/transformation_outline_function.h b/source/fuzz/transformation_outline_function.h
index 6bc7d7e..be56695 100644
--- a/source/fuzz/transformation_outline_function.h
+++ b/source/fuzz/transformation_outline_function.h
@@ -38,8 +38,8 @@
uint32_t new_function_type_id, uint32_t new_function_id,
uint32_t new_function_region_entry_block, uint32_t new_caller_result_id,
uint32_t new_callee_result_id,
- std::map<uint32_t, uint32_t>&& input_id_to_fresh_id,
- std::map<uint32_t, uint32_t>&& output_id_to_fresh_id);
+ const std::map<uint32_t, uint32_t>& input_id_to_fresh_id,
+ const std::map<uint32_t, uint32_t>& output_id_to_fresh_id);
// - All the fresh ids occurring in the transformation must be distinct and
// fresh
diff --git a/test/fuzz/data_synonym_transformation_test.cpp b/test/fuzz/data_synonym_transformation_test.cpp
index 2345ff6..bbdc0de 100644
--- a/test/fuzz/data_synonym_transformation_test.cpp
+++ b/test/fuzz/data_synonym_transformation_test.cpp
@@ -28,14 +28,14 @@
// number of transformations that relate to data synonyms.
protobufs::Fact MakeSynonymFact(uint32_t first_id,
- std::vector<uint32_t> first_indices,
+ const std::vector<uint32_t>& first_indices,
uint32_t second_id,
- std::vector<uint32_t> second_indices) {
+ const std::vector<uint32_t>& second_indices) {
protobufs::FactDataSynonym data_synonym_fact;
*data_synonym_fact.mutable_data1() =
- MakeDataDescriptor(first_id, std::move(first_indices));
+ MakeDataDescriptor(first_id, first_indices);
*data_synonym_fact.mutable_data2() =
- MakeDataDescriptor(second_id, std::move(second_indices));
+ MakeDataDescriptor(second_id, second_indices);
protobufs::Fact result;
*result.mutable_data_synonym_fact() = data_synonym_fact;
return result;