Change MaybeApplyTransformation to return a boolean (#3555)
Also refactor the code accordingly.
diff --git a/source/fuzz/fuzzer_pass.h b/source/fuzz/fuzzer_pass.h
index f8acff2..0603c94 100644
--- a/source/fuzz/fuzzer_pass.h
+++ b/source/fuzz/fuzzer_pass.h
@@ -105,13 +105,16 @@
// A generic helper for applying a transformation only if it is applicable.
// If it is applicable, the transformation is applied and then added to the
- // sequence of applied transformations. Otherwise, nothing happens.
- void MaybeApplyTransformation(const Transformation& transformation) {
+ // sequence of applied transformations and the function returns true.
+ // Otherwise, the function returns false.
+ bool MaybeApplyTransformation(const Transformation& transformation) {
if (transformation.IsApplicable(GetIRContext(),
*GetTransformationContext())) {
transformation.Apply(GetIRContext(), GetTransformationContext());
*GetTransformations()->add_transformation() = transformation.ToMessage();
+ return true;
}
+ return false;
}
// Returns the id of an OpTypeBool instruction. If such an instruction does
diff --git a/source/fuzz/fuzzer_pass_permute_blocks.cpp b/source/fuzz/fuzzer_pass_permute_blocks.cpp
index 27a2d67..24c16fb 100644
--- a/source/fuzz/fuzzer_pass_permute_blocks.cpp
+++ b/source/fuzz/fuzzer_pass_permute_blocks.cpp
@@ -67,12 +67,7 @@
// down indefinitely.
while (true) {
TransformationMoveBlockDown transformation(*id);
- if (transformation.IsApplicable(GetIRContext(),
- *GetTransformationContext())) {
- transformation.Apply(GetIRContext(), GetTransformationContext());
- *GetTransformations()->add_transformation() =
- transformation.ToMessage();
- } else {
+ if (!MaybeApplyTransformation(transformation)) {
break;
}
}