spirv-fuzz: Use unique_ptr<FactManager> in TransformationContext (#3844)
TransformationContext now holds a std::unique_ptr to a FactManager,
rather than a plain pointer. This makes it easier for clients of
TransformationContext to work with heap-allocated instances of
TransformationContext, which is needed in some upcoming work.
diff --git a/source/fuzz/force_render_red.cpp b/source/fuzz/force_render_red.cpp
index 919f8c9..f9ef36d 100644
--- a/source/fuzz/force_render_red.cpp
+++ b/source/fuzz/force_render_red.cpp
@@ -182,12 +182,11 @@
assert(ir_context);
// Set up a fact manager with any given initial facts.
- FactManager fact_manager(ir_context.get());
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(ir_context.get()), validator_options);
for (auto& fact : initial_facts.fact()) {
- fact_manager.AddFact(fact);
+ transformation_context.GetFactManager()->AddFact(fact);
}
- TransformationContext transformation_context(&fact_manager,
- validator_options);
auto entry_point_function =
FindFragmentShaderEntryPoint(ir_context.get(), message_consumer);
@@ -264,7 +263,8 @@
auto float_type_id = ir_context->get_type_mgr()->GetId(float_type);
auto types_for_which_uniforms_are_known =
- fact_manager.GetTypesForWhichUniformValuesAreKnown();
+ transformation_context.GetFactManager()
+ ->GetTypesForWhichUniformValuesAreKnown();
// Check whether we have any float uniforms.
if (std::find(types_for_which_uniforms_are_known.begin(),
@@ -273,7 +273,8 @@
// We have at least one float uniform; let's see whether we have at least
// two.
auto available_constants =
- fact_manager.GetConstantsAvailableFromUniformsForType(float_type_id);
+ transformation_context.GetFactManager()
+ ->GetConstantsAvailableFromUniformsForType(float_type_id);
if (available_constants.size() > 1) {
// Grab the float constants associated with the first two known float
// uniforms.
@@ -319,13 +320,13 @@
id_guaranteed_to_be_false, greater_than_operands));
first_greater_then_operand_replacement =
- MakeConstantUniformReplacement(ir_context.get(), fact_manager,
- smaller_constant,
- id_guaranteed_to_be_false, 0);
+ MakeConstantUniformReplacement(
+ ir_context.get(), *transformation_context.GetFactManager(),
+ smaller_constant, id_guaranteed_to_be_false, 0);
second_greater_then_operand_replacement =
- MakeConstantUniformReplacement(ir_context.get(), fact_manager,
- larger_constant,
- id_guaranteed_to_be_false, 1);
+ MakeConstantUniformReplacement(
+ ir_context.get(), *transformation_context.GetFactManager(),
+ larger_constant, id_guaranteed_to_be_false, 1);
}
}
}
diff --git a/source/fuzz/fuzzer.cpp b/source/fuzz/fuzzer.cpp
index cbaa17c..4bf7338 100644
--- a/source/fuzz/fuzzer.cpp
+++ b/source/fuzz/fuzzer.cpp
@@ -211,10 +211,10 @@
fuzzer_context_ =
MakeUnique<FuzzerContext>(random_generator_.get(), minimum_fresh_id);
- FactManager fact_manager(ir_context_.get());
- fact_manager.AddFacts(consumer_, initial_facts_);
- transformation_context_ =
- MakeUnique<TransformationContext>(&fact_manager, validator_options_);
+ transformation_context_ = MakeUnique<TransformationContext>(
+ MakeUnique<FactManager>(ir_context_.get()), validator_options_);
+ transformation_context_->GetFactManager()->AddFacts(consumer_,
+ initial_facts_);
RepeatedPassInstances pass_instances{};
do {
diff --git a/source/fuzz/replayer.cpp b/source/fuzz/replayer.cpp
index 74c14dc..380e58b 100644
--- a/source/fuzz/replayer.cpp
+++ b/source/fuzz/replayer.cpp
@@ -90,14 +90,14 @@
last_valid_binary = binary_in_;
}
- FactManager fact_manager(ir_context.get());
- fact_manager.AddFacts(consumer_, initial_facts_);
std::unique_ptr<TransformationContext> transformation_context =
first_overflow_id_ == 0
- ? MakeUnique<TransformationContext>(&fact_manager, validator_options_)
+ ? MakeUnique<TransformationContext>(
+ MakeUnique<FactManager>(ir_context.get()), validator_options_)
: MakeUnique<TransformationContext>(
- &fact_manager, validator_options_,
+ MakeUnique<FactManager>(ir_context.get()), validator_options_,
MakeUnique<CounterOverflowIdSource>(first_overflow_id_));
+ transformation_context->GetFactManager()->AddFacts(consumer_, initial_facts_);
// We track the largest id bound observed, to ensure that it only increases
// as transformations are applied.
diff --git a/source/fuzz/transformation_context.cpp b/source/fuzz/transformation_context.cpp
index bd0e406..d7ebba0 100644
--- a/source/fuzz/transformation_context.cpp
+++ b/source/fuzz/transformation_context.cpp
@@ -40,15 +40,17 @@
} // namespace
TransformationContext::TransformationContext(
- FactManager* fact_manager, spv_validator_options validator_options)
- : fact_manager_(fact_manager),
+ std::unique_ptr<FactManager> fact_manager,
+ spv_validator_options validator_options)
+ : fact_manager_(std::move(fact_manager)),
validator_options_(validator_options),
overflow_id_source_(MakeUnique<NullOverflowIdSource>()) {}
TransformationContext::TransformationContext(
- FactManager* fact_manager, spv_validator_options validator_options,
+ std::unique_ptr<FactManager> fact_manager,
+ spv_validator_options validator_options,
std::unique_ptr<OverflowIdSource> overflow_id_source)
- : fact_manager_(fact_manager),
+ : fact_manager_(std::move(fact_manager)),
validator_options_(validator_options),
overflow_id_source_(std::move(overflow_id_source)) {}
diff --git a/source/fuzz/transformation_context.h b/source/fuzz/transformation_context.h
index c76a7be..3edcb63 100644
--- a/source/fuzz/transformation_context.h
+++ b/source/fuzz/transformation_context.h
@@ -31,20 +31,20 @@
// Constructs a transformation context with a given fact manager and validator
// options. Overflow ids are not available from a transformation context
// constructed in this way.
- TransformationContext(FactManager* fact_manager,
+ TransformationContext(std::unique_ptr<FactManager>,
spv_validator_options validator_options);
// Constructs a transformation context with a given fact manager, validator
// options and overflow id source.
- TransformationContext(FactManager* fact_manager,
+ TransformationContext(std::unique_ptr<FactManager>,
spv_validator_options validator_options,
std::unique_ptr<OverflowIdSource> overflow_id_source);
~TransformationContext();
- FactManager* GetFactManager() { return fact_manager_; }
+ FactManager* GetFactManager() { return fact_manager_.get(); }
- const FactManager* GetFactManager() const { return fact_manager_; }
+ const FactManager* GetFactManager() const { return fact_manager_.get(); }
OverflowIdSource* GetOverflowIdSource() { return overflow_id_source_.get(); }
@@ -59,7 +59,7 @@
private:
// Manages facts that inform whether transformations can be applied, and that
// are produced by applying transformations.
- FactManager* fact_manager_;
+ std::unique_ptr<FactManager> fact_manager_;
// Options to control validation when deciding whether transformations can be
// applied.
diff --git a/test/fuzz/comparator_deep_blocks_first_test.cpp b/test/fuzz/comparator_deep_blocks_first_test.cpp
index 497a123..90ca6a7 100644
--- a/test/fuzz/comparator_deep_blocks_first_test.cpp
+++ b/test/fuzz/comparator_deep_blocks_first_test.cpp
@@ -75,11 +75,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
auto is_deeper = ComparatorDeepBlocksFirst(context.get());
// The block ids and the corresponding depths are:
@@ -109,11 +107,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Check that, sorting using the comparator, the blocks are ordered from more
// deeply nested to less deeply nested.
// 17 has depth 1, 20 has depth 2, 13 has depth 0.
diff --git a/test/fuzz/data_synonym_transformation_test.cpp b/test/fuzz/data_synonym_transformation_test.cpp
index 3bbe2c5..723eb4d 100644
--- a/test/fuzz/data_synonym_transformation_test.cpp
+++ b/test/fuzz/data_synonym_transformation_test.cpp
@@ -122,11 +122,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
transformation_context.GetFactManager()->AddFact(
MakeSynonymFact(12, {}, 100, {0}));
transformation_context.GetFactManager()->AddFact(
@@ -410,11 +408,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
transformation_context.GetFactManager()->AddFact(
MakeSynonymFact(23, {}, 100, {0}));
transformation_context.GetFactManager()->AddFact(
@@ -580,11 +576,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
transformation_context.GetFactManager()->AddFact(
MakeSynonymFact(16, {}, 100, {0}));
transformation_context.GetFactManager()->AddFact(
@@ -870,11 +864,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
transformation_context.GetFactManager()->AddFact(
MakeSynonymFact(20, {0}, 100, {0}));
transformation_context.GetFactManager()->AddFact(
@@ -923,7 +915,7 @@
100, 100, {0, 1, 2});
ASSERT_TRUE(shuffle_1.IsApplicable(context.get(), transformation_context));
shuffle_1.Apply(context.get(), &transformation_context);
- fact_manager.ComputeClosureOfFacts(100);
+ transformation_context.GetFactManager()->ComputeClosureOfFacts(100);
auto replacement_1 = TransformationReplaceIdWithSynonym(
MakeIdUseDescriptor(20, instruction_descriptor_1, 0), 200);
@@ -953,7 +945,7 @@
101, 101, {0, 1});
ASSERT_TRUE(shuffle_3.IsApplicable(context.get(), transformation_context));
shuffle_3.Apply(context.get(), &transformation_context);
- fact_manager.ComputeClosureOfFacts(100);
+ transformation_context.GetFactManager()->ComputeClosureOfFacts(100);
auto replacement_3 = TransformationReplaceIdWithSynonym(
MakeIdUseDescriptor(15, instruction_descriptor_3, 1), 202);
@@ -969,7 +961,7 @@
101, 101, {2, 3});
ASSERT_TRUE(shuffle_4.IsApplicable(context.get(), transformation_context));
shuffle_4.Apply(context.get(), &transformation_context);
- fact_manager.ComputeClosureOfFacts(100);
+ transformation_context.GetFactManager()->ComputeClosureOfFacts(100);
auto replacement_4 = TransformationReplaceIdWithSynonym(
MakeIdUseDescriptor(19, instruction_descriptor_4, 0), 203);
@@ -1001,7 +993,7 @@
102, 102, {1, 2});
ASSERT_TRUE(shuffle_6.IsApplicable(context.get(), transformation_context));
shuffle_6.Apply(context.get(), &transformation_context);
- fact_manager.ComputeClosureOfFacts(100);
+ transformation_context.GetFactManager()->ComputeClosureOfFacts(100);
auto replacement_6 = TransformationReplaceIdWithSynonym(
MakeIdUseDescriptor(15, instruction_descriptor_6, 0), 205);
@@ -1031,7 +1023,7 @@
103, 103, {1, 2, 3});
ASSERT_TRUE(shuffle_8.IsApplicable(context.get(), transformation_context));
shuffle_8.Apply(context.get(), &transformation_context);
- fact_manager.ComputeClosureOfFacts(100);
+ transformation_context.GetFactManager()->ComputeClosureOfFacts(100);
auto replacement_8 = TransformationReplaceIdWithSynonym(
MakeIdUseDescriptor(47, instruction_descriptor_8, 0), 207);
@@ -1074,7 +1066,7 @@
105, 105, {0, 1});
ASSERT_TRUE(shuffle_11.IsApplicable(context.get(), transformation_context));
shuffle_11.Apply(context.get(), &transformation_context);
- fact_manager.ComputeClosureOfFacts(100);
+ transformation_context.GetFactManager()->ComputeClosureOfFacts(100);
auto replacement_11 = TransformationReplaceIdWithSynonym(
MakeIdUseDescriptor(38, instruction_descriptor_11, 1), 210);
diff --git a/test/fuzz/fact_manager_test.cpp b/test/fuzz/fact_manager_test.cpp
index 38777ad..995b64c 100644
--- a/test/fuzz/fact_manager_test.cpp
+++ b/test/fuzz/fact_manager_test.cpp
@@ -887,17 +887,17 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
+ spvtools::ValidatorOptions validator_options;
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Add required facts.
- fact_manager.AddFactIdEquation(14, SpvOpConvertSToF, {9});
- fact_manager.AddFactDataSynonym(MakeDataDescriptor(14, {}),
- MakeDataDescriptor(17, {}));
+ transformation_context.GetFactManager()->AddFactIdEquation(
+ 14, SpvOpConvertSToF, {9});
+ transformation_context.GetFactManager()->AddFactDataSynonym(
+ MakeDataDescriptor(14, {}), MakeDataDescriptor(17, {}));
// Apply TransformationMergeBlocks which will remove %17 from the module.
- spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
TransformationMergeBlocks transformation(16);
ASSERT_TRUE(
transformation.IsApplicable(context.get(), transformation_context));
@@ -907,26 +907,28 @@
ASSERT_EQ(context->get_def_use_mgr()->GetDef(17), nullptr);
// Add another equation.
- fact_manager.AddFactIdEquation(15, SpvOpConvertSToF, {9});
+ transformation_context.GetFactManager()->AddFactIdEquation(
+ 15, SpvOpConvertSToF, {9});
// Check that two ids are synonymous even though one of them doesn't exist in
// the module (%17).
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(15, {}),
- MakeDataDescriptor(17, {})));
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(15, {}),
- MakeDataDescriptor(14, {})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(15, {}), MakeDataDescriptor(17, {})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(15, {}), MakeDataDescriptor(14, {})));
// Remove some instructions from the module. At this point, the equivalence
// class of %14 has no valid members.
ASSERT_TRUE(context->KillDef(14));
ASSERT_TRUE(context->KillDef(15));
- fact_manager.AddFactIdEquation(18, SpvOpConvertSToF, {9});
+ transformation_context.GetFactManager()->AddFactIdEquation(
+ 18, SpvOpConvertSToF, {9});
// We don't create synonyms if at least one of the equivalence classes has no
// valid members.
- ASSERT_FALSE(fact_manager.IsSynonymous(MakeDataDescriptor(14, {}),
- MakeDataDescriptor(18, {})));
+ ASSERT_FALSE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(14, {}), MakeDataDescriptor(18, {})));
}
TEST(FactManagerTest, LogicalNotEquationFacts) {
diff --git a/test/fuzz/fuzzer_pass_add_opphi_synonyms_test.cpp b/test/fuzz/fuzzer_pass_add_opphi_synonyms_test.cpp
index ca06b28..666180b 100644
--- a/test/fuzz/fuzzer_pass_add_opphi_synonyms_test.cpp
+++ b/test/fuzz/fuzzer_pass_add_opphi_synonyms_test.cpp
@@ -122,11 +122,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
PseudoRandomGenerator prng(0);
FuzzerContext fuzzer_context(&prng, 100);
protobufs::TransformationSequence transformation_sequence;
@@ -135,7 +133,7 @@
&fuzzer_context,
&transformation_sequence);
- SetUpIdSynonyms(&fact_manager);
+ SetUpIdSynonyms(transformation_context.GetFactManager());
std::vector<std::set<uint32_t>> expected_equivalence_classes = {
{9, 15, 21}, {11, 16, 22}, {10, 23}, {6}, {24, 26, 30}};
diff --git a/test/fuzz/fuzzer_pass_construct_composites_test.cpp b/test/fuzz/fuzzer_pass_construct_composites_test.cpp
index 80e8117..fa335e5 100644
--- a/test/fuzz/fuzzer_pass_construct_composites_test.cpp
+++ b/test/fuzz/fuzzer_pass_construct_composites_test.cpp
@@ -82,11 +82,9 @@
BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
FuzzerContext fuzzer_context(prng.get(), 100);
protobufs::TransformationSequence transformation_sequence;
@@ -164,11 +162,9 @@
BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
FuzzerContext fuzzer_context(prng.get(), 100);
protobufs::TransformationSequence transformation_sequence;
diff --git a/test/fuzz/fuzzer_pass_donate_modules_test.cpp b/test/fuzz/fuzzer_pass_donate_modules_test.cpp
index b6dbd96..09f62dd 100644
--- a/test/fuzz/fuzzer_pass_donate_modules_test.cpp
+++ b/test/fuzz/fuzzer_pass_donate_modules_test.cpp
@@ -196,10 +196,9 @@
BuildModule(env, consumer, donor_shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, donor_context.get()));
- FactManager fact_manager(recipient_context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(recipient_context.get()), validator_options);
PseudoRandomGenerator prng(0);
FuzzerContext fuzzer_context(&prng, 100);
@@ -274,10 +273,9 @@
env, consumer, recipient_and_donor_shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, donor_context.get()));
- FactManager fact_manager(recipient_context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(recipient_context.get()), validator_options);
PseudoRandomGenerator prng(0);
FuzzerContext fuzzer_context(&prng, 100);
@@ -402,10 +400,9 @@
env, consumer, recipient_and_donor_shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, donor_context.get()));
- FactManager fact_manager(recipient_context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(recipient_context.get()), validator_options);
PseudoRandomGenerator prng(0);
FuzzerContext fuzzer_context(&prng, 100);
@@ -494,10 +491,9 @@
env, consumer, recipient_and_donor_shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, donor_context.get()));
- FactManager fact_manager(recipient_context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(recipient_context.get()), validator_options);
PseudoRandomGenerator prng(0);
FuzzerContext fuzzer_context(&prng, 100);
@@ -561,10 +557,9 @@
BuildModule(env, consumer, donor_shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, donor_context.get()));
- FactManager fact_manager(recipient_context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(recipient_context.get()), validator_options);
PseudoRandomGenerator prng(0);
FuzzerContext fuzzer_context(&prng, 100);
@@ -686,10 +681,9 @@
BuildModule(env, consumer, donor_shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, donor_context.get()));
- FactManager fact_manager(recipient_context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(recipient_context.get()), validator_options);
PseudoRandomGenerator prng(0);
FuzzerContext fuzzer_context(&prng, 100);
@@ -779,10 +773,9 @@
BuildModule(env, consumer, donor_shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, donor_context.get()));
- FactManager fact_manager(recipient_context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(recipient_context.get()), validator_options);
PseudoRandomGenerator prng(0);
FuzzerContext fuzzer_context(&prng, 100);
@@ -908,10 +901,9 @@
BuildModule(env, consumer, donor_shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, donor_context.get()));
- FactManager fact_manager(recipient_context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(recipient_context.get()), validator_options);
PseudoRandomGenerator prng(0);
FuzzerContext fuzzer_context(&prng, 100);
@@ -1041,10 +1033,9 @@
BuildModule(env, consumer, donor_shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, donor_context.get()));
- FactManager fact_manager(recipient_context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(recipient_context.get()), validator_options);
PseudoRandomGenerator prng(0);
FuzzerContext fuzzer_context(&prng, 100);
@@ -1120,10 +1111,9 @@
BuildModule(env, consumer, donor_shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, donor_context.get()));
- FactManager fact_manager(recipient_context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(recipient_context.get()), validator_options);
PseudoRandomGenerator prng(0);
FuzzerContext fuzzer_context(&prng, 100);
@@ -1204,10 +1194,9 @@
BuildModule(env, consumer, donor_shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, donor_context.get()));
- FactManager fact_manager(recipient_context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(recipient_context.get()), validator_options);
PseudoRandomGenerator prng(0);
FuzzerContext fuzzer_context(&prng, 100);
@@ -1305,10 +1294,9 @@
BuildModule(env, consumer, donor_shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, donor_context.get()));
- FactManager fact_manager(recipient_context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(recipient_context.get()), validator_options);
PseudoRandomGenerator prng(0);
FuzzerContext fuzzer_context(&prng, 100);
@@ -1374,10 +1362,9 @@
BuildModule(env, consumer, donor_shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, donor_context.get()));
- FactManager fact_manager(recipient_context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(recipient_context.get()), validator_options);
PseudoRandomGenerator prng(0);
FuzzerContext fuzzer_context(&prng, 100);
@@ -1481,10 +1468,9 @@
BuildModule(env, consumer, donor_shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, donor_context.get()));
- FactManager fact_manager(recipient_context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(recipient_context.get()), validator_options);
PseudoRandomGenerator prng(0);
FuzzerContext fuzzer_context(&prng, 100);
@@ -1662,10 +1648,9 @@
BuildModule(env, consumer, donor_shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, donor_context.get()));
- FactManager fact_manager(recipient_context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(recipient_context.get()), validator_options);
PseudoRandomGenerator rng(0);
FuzzerContext fuzzer_context(&rng, 100);
@@ -1731,10 +1716,9 @@
BuildModule(env, consumer, donor_shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, donor_context.get()));
- FactManager fact_manager(recipient_context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(recipient_context.get()), validator_options);
PseudoRandomGenerator prng(0);
FuzzerContext fuzzer_context(&prng, 100);
@@ -1885,10 +1869,9 @@
BuildModule(env, consumer, donor_shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, donor_context.get()));
- FactManager fact_manager(recipient_context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(recipient_context.get()), validator_options);
PseudoRandomGenerator rng(0);
FuzzerContext fuzzer_context(&rng, 100);
@@ -1955,10 +1938,9 @@
BuildModule(env, consumer, donor_shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, donor_context.get()));
- FactManager fact_manager(recipient_context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(recipient_context.get()), validator_options);
PseudoRandomGenerator rng(0);
FuzzerContext fuzzer_context(&rng, 100);
@@ -2185,10 +2167,9 @@
BuildModule(env, consumer, donor_shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, donor_context.get()));
- FactManager fact_manager(recipient_context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(recipient_context.get()), validator_options);
PseudoRandomGenerator prng(0);
FuzzerContext fuzzer_context(&prng, 100);
diff --git a/test/fuzz/fuzzer_pass_outline_functions_test.cpp b/test/fuzz/fuzzer_pass_outline_functions_test.cpp
index 59f47e2..50d2412 100644
--- a/test/fuzz/fuzzer_pass_outline_functions_test.cpp
+++ b/test/fuzz/fuzzer_pass_outline_functions_test.cpp
@@ -119,11 +119,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
PseudoRandomGenerator prng(0);
FuzzerContext fuzzer_context(&prng, 100);
protobufs::TransformationSequence transformation_sequence;
@@ -164,11 +162,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
PseudoRandomGenerator prng(0);
FuzzerContext fuzzer_context(&prng, 100);
protobufs::TransformationSequence transformation_sequence;
@@ -290,11 +286,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
PseudoRandomGenerator prng(0);
FuzzerContext fuzzer_context(&prng, 100);
protobufs::TransformationSequence transformation_sequence;
@@ -459,11 +453,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
PseudoRandomGenerator prng(0);
FuzzerContext fuzzer_context(&prng, 100);
protobufs::TransformationSequence transformation_sequence;
diff --git a/test/fuzz/fuzzer_pass_test.cpp b/test/fuzz/fuzzer_pass_test.cpp
index ce48010..6691042 100644
--- a/test/fuzz/fuzzer_pass_test.cpp
+++ b/test/fuzz/fuzzer_pass_test.cpp
@@ -76,11 +76,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Check that %5 is reachable and %8 is unreachable as expected.
const auto* dominator_analysis =
context->GetDominatorAnalysis(context->GetFunction(4));
diff --git a/test/fuzz/transformation_access_chain_test.cpp b/test/fuzz/transformation_access_chain_test.cpp
index 5f1d25a..ccdb207 100644
--- a/test/fuzz/transformation_access_chain_test.cpp
+++ b/test/fuzz/transformation_access_chain_test.cpp
@@ -117,11 +117,9 @@
// Indices 0-5 are in ids 80-85
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
transformation_context.GetFactManager()->AddFactValueOfPointeeIsIrrelevant(
54);
@@ -403,11 +401,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
{
TransformationAccessChain transformation(
100, 11, {}, MakeInstructionDescriptor(5, SpvOpReturn, 0));
@@ -511,11 +507,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Bad: no ids given for clamping
ASSERT_FALSE(TransformationAccessChain(
100, 29, {17}, MakeInstructionDescriptor(36, SpvOpLoad, 0))
diff --git a/test/fuzz/transformation_add_bit_instruction_synonym_test.cpp b/test/fuzz/transformation_add_bit_instruction_synonym_test.cpp
index 39fa3cc..bf59064 100644
--- a/test/fuzz/transformation_add_bit_instruction_synonym_test.cpp
+++ b/test/fuzz/transformation_add_bit_instruction_synonym_test.cpp
@@ -81,11 +81,9 @@
BuildModule(env, consumer, reference_shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Tests undefined bit instruction.
auto transformation = TransformationAddBitInstructionSynonym(
40, {41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
@@ -222,11 +220,9 @@
BuildModule(env, consumer, reference_shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
auto transformation = TransformationAddBitInstructionSynonym(
39, {40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
@@ -455,8 +451,8 @@
ASSERT_TRUE(IsValid(env, context.get()));
ASSERT_TRUE(IsEqual(env, variant_shader, context.get()));
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(166, {}),
- MakeDataDescriptor(39, {})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(166, {}), MakeDataDescriptor(39, {})));
}
} // namespace
diff --git a/test/fuzz/transformation_add_constant_boolean_test.cpp b/test/fuzz/transformation_add_constant_boolean_test.cpp
index 3c37922..af329af 100644
--- a/test/fuzz/transformation_add_constant_boolean_test.cpp
+++ b/test/fuzz/transformation_add_constant_boolean_test.cpp
@@ -43,11 +43,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// True and false can both be added as neither is present.
ASSERT_TRUE(TransformationAddConstantBoolean(7, true, false)
.IsApplicable(context.get(), transformation_context));
@@ -107,10 +105,10 @@
irrelevant_false.Apply(context.get(), &transformation_context);
ASSERT_TRUE(IsValid(env, context.get()));
- ASSERT_FALSE(fact_manager.IdIsIrrelevant(100));
- ASSERT_FALSE(fact_manager.IdIsIrrelevant(101));
- ASSERT_TRUE(fact_manager.IdIsIrrelevant(102));
- ASSERT_TRUE(fact_manager.IdIsIrrelevant(103));
+ ASSERT_FALSE(transformation_context.GetFactManager()->IdIsIrrelevant(100));
+ ASSERT_FALSE(transformation_context.GetFactManager()->IdIsIrrelevant(101));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IdIsIrrelevant(102));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IdIsIrrelevant(103));
std::string after_transformation = R"(
OpCapability Shader
@@ -160,11 +158,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Neither true nor false can be added as OpTypeBool is not present.
ASSERT_FALSE(TransformationAddConstantBoolean(6, true, false)
.IsApplicable(context.get(), transformation_context));
diff --git a/test/fuzz/transformation_add_constant_composite_test.cpp b/test/fuzz/transformation_add_constant_composite_test.cpp
index e59c2ff..8285efc 100644
--- a/test/fuzz/transformation_add_constant_composite_test.cpp
+++ b/test/fuzz/transformation_add_constant_composite_test.cpp
@@ -64,11 +64,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Too few ids
ASSERT_FALSE(TransformationAddConstantComposite(103, 8, {100, 101}, false)
.IsApplicable(context.get(), transformation_context));
@@ -135,11 +133,11 @@
ASSERT_TRUE(IsValid(env, context.get()));
for (uint32_t id = 100; id <= 106; ++id) {
- ASSERT_FALSE(fact_manager.IdIsIrrelevant(id));
+ ASSERT_FALSE(transformation_context.GetFactManager()->IdIsIrrelevant(id));
}
for (uint32_t id = 107; id <= 113; ++id) {
- ASSERT_TRUE(fact_manager.IdIsIrrelevant(id));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IdIsIrrelevant(id));
}
std::string after_transformation = R"(
diff --git a/test/fuzz/transformation_add_constant_null_test.cpp b/test/fuzz/transformation_add_constant_null_test.cpp
index aba6a09..0471115 100644
--- a/test/fuzz/transformation_add_constant_null_test.cpp
+++ b/test/fuzz/transformation_add_constant_null_test.cpp
@@ -50,11 +50,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Id already in use
ASSERT_FALSE(TransformationAddConstantNull(4, 11).IsApplicable(
context.get(), transformation_context));
diff --git a/test/fuzz/transformation_add_constant_scalar_test.cpp b/test/fuzz/transformation_add_constant_scalar_test.cpp
index 61b5fe3..145f53f 100644
--- a/test/fuzz/transformation_add_constant_scalar_test.cpp
+++ b/test/fuzz/transformation_add_constant_scalar_test.cpp
@@ -70,11 +70,9 @@
BuildModule(env, consumer, reference_shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Tests |fresh_id| being non-fresh.
auto transformation = TransformationAddConstantScalar(18, 2, {0}, false);
ASSERT_FALSE(
@@ -166,11 +164,9 @@
BuildModule(env, consumer, reference_shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Adds 32-bit unsigned integer (1 logical operand with 1 word).
auto transformation = TransformationAddConstantScalar(19, 2, {4}, false);
transformation.Apply(context.get(), &transformation_context);
@@ -272,11 +268,13 @@
ASSERT_TRUE(IsValid(env, context.get()));
for (uint32_t result_id = 19; result_id <= 24; ++result_id) {
- ASSERT_FALSE(fact_manager.IdIsIrrelevant(result_id));
+ ASSERT_FALSE(
+ transformation_context.GetFactManager()->IdIsIrrelevant(result_id));
}
for (uint32_t result_id = 25; result_id <= 30; ++result_id) {
- ASSERT_TRUE(fact_manager.IdIsIrrelevant(result_id));
+ ASSERT_TRUE(
+ transformation_context.GetFactManager()->IdIsIrrelevant(result_id));
}
std::string variant_shader = R"(
diff --git a/test/fuzz/transformation_add_copy_memory_test.cpp b/test/fuzz/transformation_add_copy_memory_test.cpp
index 5bb59a8..5e6821d 100644
--- a/test/fuzz/transformation_add_copy_memory_test.cpp
+++ b/test/fuzz/transformation_add_copy_memory_test.cpp
@@ -140,11 +140,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Target id is not fresh (59).
ASSERT_FALSE(TransformationAddCopyMemory(
MakeInstructionDescriptor(27, SpvOpFunctionCall, 0), 59, 19,
@@ -244,7 +242,9 @@
transformation.IsApplicable(context.get(), transformation_context));
transformation.Apply(context.get(), &transformation_context);
ASSERT_TRUE(IsValid(env, context.get()));
- ASSERT_TRUE(fact_manager.PointeeValueIsIrrelevant(fresh_id));
+ ASSERT_TRUE(
+ transformation_context.GetFactManager()->PointeeValueIsIrrelevant(
+ fresh_id));
fresh_id++;
}
diff --git a/test/fuzz/transformation_add_dead_block_test.cpp b/test/fuzz/transformation_add_dead_block_test.cpp
index db89a2b..32699f4 100644
--- a/test/fuzz/transformation_add_dead_block_test.cpp
+++ b/test/fuzz/transformation_add_dead_block_test.cpp
@@ -62,11 +62,9 @@
BuildModule(env, consumer, reference_shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Id 4 is already in use
auto transformation = TransformationAddDeadBlock(4, 11, true);
ASSERT_FALSE(
@@ -172,11 +170,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
ASSERT_FALSE(TransformationAddDeadBlock(100, 9, true)
.IsApplicable(context.get(), transformation_context));
}
@@ -220,11 +216,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Bad because 9's successor is the loop continue target.
ASSERT_FALSE(TransformationAddDeadBlock(100, 9, true)
.IsApplicable(context.get(), transformation_context));
@@ -266,11 +260,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Bad because 8 is a loop head.
ASSERT_FALSE(TransformationAddDeadBlock(100, 8, true)
.IsApplicable(context.get(), transformation_context));
@@ -306,11 +298,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
TransformationAddDeadBlock transformation(100, 5, true);
ASSERT_TRUE(
transformation.IsApplicable(context.get(), transformation_context));
@@ -379,11 +369,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// 9 is a back edge block, so it would not be OK to add a dead block here,
// as then both 9 and the dead block would branch to the loop header, 8.
ASSERT_FALSE(TransformationAddDeadBlock(100, 9, true)
diff --git a/test/fuzz/transformation_add_dead_break_test.cpp b/test/fuzz/transformation_add_dead_break_test.cpp
index c6f2775..3cd91ca 100644
--- a/test/fuzz/transformation_add_dead_break_test.cpp
+++ b/test/fuzz/transformation_add_dead_break_test.cpp
@@ -99,11 +99,9 @@
const auto consumer = nullptr;
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
const uint32_t merge_block = 16;
// These are all possibilities.
@@ -341,11 +339,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// The header and merge blocks
const uint32_t header_inner = 34;
const uint32_t merge_inner = 23;
@@ -704,11 +700,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// The header and merge blocks
const uint32_t header_outer_if = 5;
const uint32_t merge_outer_if = 16;
@@ -1126,11 +1120,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// The header and merge blocks
const uint32_t header_do_while = 6;
const uint32_t merge_do_while = 8;
@@ -1463,11 +1455,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Not OK to break loop from its continue construct, except from the back-edge
// block.
ASSERT_FALSE(TransformationAddDeadBreak(13, 12, true, {})
@@ -1526,11 +1516,9 @@
BuildModule(env, consumer, reference_shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
auto transformation = TransformationAddDeadBreak(18, 21, true, {});
transformation.Apply(context.get(), &transformation_context);
@@ -1660,11 +1648,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
const uint32_t loop_merge = 12;
const uint32_t selection_merge = 24;
const uint32_t in_selection_1 = 23;
@@ -1878,11 +1864,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
const uint32_t outer_loop_merge = 34;
const uint32_t outer_loop_block = 33;
const uint32_t inner_loop_merge = 47;
@@ -2099,11 +2083,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Some inapplicable transformations
// Not applicable because there is already an edge 19->20, so the OpPhis at 20
// do not need to be updated
@@ -2290,11 +2272,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
auto bad_transformation = TransformationAddDeadBreak(100, 101, false, {});
ASSERT_FALSE(
bad_transformation.IsApplicable(context.get(), transformation_context));
@@ -2347,11 +2327,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
auto bad_transformation = TransformationAddDeadBreak(102, 101, false, {});
ASSERT_FALSE(
bad_transformation.IsApplicable(context.get(), transformation_context));
@@ -2398,11 +2376,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
auto good_transformation = TransformationAddDeadBreak(100, 101, false, {11});
ASSERT_TRUE(
good_transformation.IsApplicable(context.get(), transformation_context));
@@ -2490,11 +2466,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
auto good_transformation = TransformationAddDeadBreak(102, 101, false, {11});
ASSERT_TRUE(
good_transformation.IsApplicable(context.get(), transformation_context));
@@ -2576,11 +2550,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
auto bad_transformation = TransformationAddDeadBreak(100, 101, false, {});
ASSERT_FALSE(
bad_transformation.IsApplicable(context.get(), transformation_context));
@@ -2637,11 +2609,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
auto bad_transformation = TransformationAddDeadBreak(102, 101, false, {});
ASSERT_FALSE(
bad_transformation.IsApplicable(context.get(), transformation_context));
@@ -2700,11 +2670,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
auto bad_transformation = TransformationAddDeadBreak(102, 101, false, {});
ASSERT_FALSE(
bad_transformation.IsApplicable(context.get(), transformation_context));
@@ -2750,11 +2718,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
auto bad_transformation = TransformationAddDeadBreak(102, 101, false, {});
ASSERT_FALSE(
bad_transformation.IsApplicable(context.get(), transformation_context));
@@ -2800,11 +2766,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Bad because 14 comes before 12 in the module, and 14 has no predecessors.
// This means that an edge from 12 to 14 will lead to 12 dominating 14, which
// is illegal if 12 appears after 14.
diff --git a/test/fuzz/transformation_add_dead_continue_test.cpp b/test/fuzz/transformation_add_dead_continue_test.cpp
index 7a1c3c6..8e60134 100644
--- a/test/fuzz/transformation_add_dead_continue_test.cpp
+++ b/test/fuzz/transformation_add_dead_continue_test.cpp
@@ -97,11 +97,9 @@
const auto consumer = nullptr;
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// These are all possibilities.
ASSERT_TRUE(TransformationAddDeadContinue(11, true, {})
.IsApplicable(context.get(), transformation_context));
@@ -371,11 +369,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
std::vector<uint32_t> good = {6, 7, 18, 20, 34, 40, 45, 46, 47, 56, 57};
std::vector<uint32_t> bad = {5, 8, 9, 19, 21, 22, 33, 41, 58, 59, 60};
@@ -611,11 +607,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
std::vector<uint32_t> good = {32, 33, 46, 52, 101};
std::vector<uint32_t> bad = {5, 34, 36, 35, 47, 49, 48};
@@ -822,11 +816,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
std::vector<uint32_t> bad = {5, 19, 20, 23, 31, 32, 33, 70};
std::vector<uint32_t> good = {29, 30, 75};
@@ -997,11 +989,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// This transformation is not applicable because the dead continue from the
// loop body prevents the definition of %23 later in the loop body from
// dominating its use in the loop's continue target.
@@ -1113,11 +1103,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// This transformation would shortcut the part of the loop body that defines
// an id used after the loop.
auto bad_transformation = TransformationAddDeadContinue(100, false, {});
@@ -1165,11 +1153,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// This transformation would shortcut the part of the loop body that defines
// an id used after the loop.
auto bad_transformation = TransformationAddDeadContinue(100, false, {});
@@ -1308,11 +1294,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// This transformation would shortcut the part of the loop body that defines
// an id used in the continue target.
auto bad_transformation = TransformationAddDeadContinue(165, false, {});
@@ -1378,11 +1362,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// This transformation would introduce a branch from a continue target to
// itself.
auto bad_transformation = TransformationAddDeadContinue(1554, true, {});
@@ -1440,11 +1422,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
auto bad_transformation = TransformationAddDeadContinue(299, false, {});
// The continue edge would connect %299 to the previously-unreachable %236,
@@ -1504,11 +1484,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
auto bad_transformation = TransformationAddDeadContinue(10, false, {});
// The continue edge would connect %10 to the previously-unreachable %13,
@@ -1560,11 +1538,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
auto bad_transformation = TransformationAddDeadContinue(110, true, {});
// The continue edge would lead to the use of %200 in block %101 no longer
@@ -1609,11 +1585,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
auto bad_transformation = TransformationAddDeadContinue(10, true, {});
ASSERT_FALSE(
diff --git a/test/fuzz/transformation_add_function_test.cpp b/test/fuzz/transformation_add_function_test.cpp
index 6c4e22b..1f5f78f 100644
--- a/test/fuzz/transformation_add_function_test.cpp
+++ b/test/fuzz/transformation_add_function_test.cpp
@@ -144,11 +144,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
TransformationAddFunction transformation1(std::vector<protobufs::Instruction>(
{MakeInstructionMessage(
SpvOpFunction, 8, 13,
@@ -493,11 +491,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// No instructions
ASSERT_FALSE(
TransformationAddFunction(std::vector<protobufs::Instruction>({}))
@@ -635,13 +631,11 @@
const auto context2 = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context1.get()));
- FactManager fact_manager1(context1.get());
- FactManager fact_manager2(context2.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context1(&fact_manager1,
- validator_options);
- TransformationContext transformation_context2(&fact_manager2,
- validator_options);
+ TransformationContext transformation_context1(
+ MakeUnique<FactManager>(context1.get()), validator_options);
+ TransformationContext transformation_context2(
+ MakeUnique<FactManager>(context2.get()), validator_options);
TransformationAddFunction add_dead_function(instructions);
ASSERT_TRUE(
@@ -857,13 +851,11 @@
const auto context2 = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context1.get()));
- FactManager fact_manager1(context1.get());
- FactManager fact_manager2(context2.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context1(&fact_manager1,
- validator_options);
- TransformationContext transformation_context2(&fact_manager2,
- validator_options);
+ TransformationContext transformation_context1(
+ MakeUnique<FactManager>(context1.get()), validator_options);
+ TransformationContext transformation_context2(
+ MakeUnique<FactManager>(context2.get()), validator_options);
TransformationAddFunction add_dead_function(instructions);
ASSERT_TRUE(
@@ -1012,13 +1004,11 @@
const auto context2 = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context1.get()));
- FactManager fact_manager1(context1.get());
- FactManager fact_manager2(context2.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context1(&fact_manager1,
- validator_options);
- TransformationContext transformation_context2(&fact_manager2,
- validator_options);
+ TransformationContext transformation_context1(
+ MakeUnique<FactManager>(context1.get()), validator_options);
+ TransformationContext transformation_context2(
+ MakeUnique<FactManager>(context2.get()), validator_options);
TransformationAddFunction add_dead_function(instructions);
ASSERT_TRUE(
@@ -1299,13 +1289,11 @@
const auto context2 = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context1.get()));
- FactManager fact_manager1(context1.get());
- FactManager fact_manager2(context2.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context1(&fact_manager1,
- validator_options);
- TransformationContext transformation_context2(&fact_manager2,
- validator_options);
+ TransformationContext transformation_context1(
+ MakeUnique<FactManager>(context1.get()), validator_options);
+ TransformationContext transformation_context2(
+ MakeUnique<FactManager>(context2.get()), validator_options);
TransformationAddFunction add_dead_function(instructions);
ASSERT_TRUE(
@@ -1626,13 +1614,11 @@
const auto context2 = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context1.get()));
- FactManager fact_manager1(context1.get());
- FactManager fact_manager2(context2.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context1(&fact_manager1,
- validator_options);
- TransformationContext transformation_context2(&fact_manager2,
- validator_options);
+ TransformationContext transformation_context1(
+ MakeUnique<FactManager>(context1.get()), validator_options);
+ TransformationContext transformation_context2(
+ MakeUnique<FactManager>(context2.get()), validator_options);
// Mark function 6 as livesafe.
transformation_context2.GetFactManager()->AddFactFunctionIsLivesafe(6);
@@ -1726,13 +1712,11 @@
const auto context2 = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context1.get()));
- FactManager fact_manager1(context1.get());
- FactManager fact_manager2(context2.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context1(&fact_manager1,
- validator_options);
- TransformationContext transformation_context2(&fact_manager2,
- validator_options);
+ TransformationContext transformation_context1(
+ MakeUnique<FactManager>(context1.get()), validator_options);
+ TransformationContext transformation_context2(
+ MakeUnique<FactManager>(context2.get()), validator_options);
TransformationAddFunction add_dead_function(instructions);
ASSERT_TRUE(
@@ -1856,11 +1840,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Make a sequence of instruction messages corresponding to function %6 in
// |donor|.
std::vector<protobufs::Instruction> instructions =
@@ -2013,11 +1995,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Make a sequence of instruction messages corresponding to function %6 in
// |donor|.
std::vector<protobufs::Instruction> instructions =
@@ -2168,11 +2148,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Make a sequence of instruction messages corresponding to function %6 in
// |donor|.
std::vector<protobufs::Instruction> instructions =
@@ -2315,11 +2293,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Make a sequence of instruction messages corresponding to function %6 in
// |donor|.
std::vector<protobufs::Instruction> instructions =
@@ -2429,11 +2405,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Make a sequence of instruction messages corresponding to function %6 in
// |donor|.
std::vector<protobufs::Instruction> instructions =
@@ -2594,11 +2568,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Make a sequence of instruction messages corresponding to function %8 in
// |donor|.
std::vector<protobufs::Instruction> instructions =
@@ -2786,11 +2758,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Make a sequence of instruction messages corresponding to function %8 in
// |donor|.
std::vector<protobufs::Instruction> instructions =
@@ -2936,11 +2906,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Make a sequence of instruction messages corresponding to function %6 in
// |donor|.
std::vector<protobufs::Instruction> instructions =
diff --git a/test/fuzz/transformation_add_global_undef_test.cpp b/test/fuzz/transformation_add_global_undef_test.cpp
index 91e871d..886c6a2 100644
--- a/test/fuzz/transformation_add_global_undef_test.cpp
+++ b/test/fuzz/transformation_add_global_undef_test.cpp
@@ -47,11 +47,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Id already in use
ASSERT_FALSE(TransformationAddGlobalUndef(4, 11).IsApplicable(
context.get(), transformation_context));
diff --git a/test/fuzz/transformation_add_global_variable_test.cpp b/test/fuzz/transformation_add_global_variable_test.cpp
index 933789f..7132c63 100644
--- a/test/fuzz/transformation_add_global_variable_test.cpp
+++ b/test/fuzz/transformation_add_global_variable_test.cpp
@@ -60,11 +60,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Id already in use
ASSERT_FALSE(
TransformationAddGlobalVariable(4, 10, SpvStorageClassPrivate, 0, true)
@@ -249,11 +247,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
TransformationAddGlobalVariable transformations[] = {
// %100 = OpVariable %12 Private
TransformationAddGlobalVariable(100, 12, SpvStorageClassPrivate, 16,
@@ -346,11 +342,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
#ifndef NDEBUG
ASSERT_DEATH(
TransformationAddGlobalVariable(8, 7, SpvStorageClassWorkgroup, 50, true)
diff --git a/test/fuzz/transformation_add_image_sample_unused_components_test.cpp b/test/fuzz/transformation_add_image_sample_unused_components_test.cpp
index 7c09228..06bf635 100644
--- a/test/fuzz/transformation_add_image_sample_unused_components_test.cpp
+++ b/test/fuzz/transformation_add_image_sample_unused_components_test.cpp
@@ -66,11 +66,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Tests applicable image instruction.
auto instruction_descriptor =
MakeInstructionDescriptor(25, SpvOpImageSampleImplicitLod, 0);
@@ -194,11 +192,9 @@
BuildModule(env, consumer, reference_shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
auto instruction_descriptor =
MakeInstructionDescriptor(25, SpvOpImageSampleImplicitLod, 0);
auto transformation =
diff --git a/test/fuzz/transformation_add_local_variable_test.cpp b/test/fuzz/transformation_add_local_variable_test.cpp
index 74e350b..565bbb2 100644
--- a/test/fuzz/transformation_add_local_variable_test.cpp
+++ b/test/fuzz/transformation_add_local_variable_test.cpp
@@ -79,11 +79,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// A few cases of inapplicable transformations:
// Id 4 is already in use
ASSERT_FALSE(TransformationAddLocalVariable(4, 50, 4, 51, true)
diff --git a/test/fuzz/transformation_add_loop_preheader_test.cpp b/test/fuzz/transformation_add_loop_preheader_test.cpp
index 9887096..faacd7e 100644
--- a/test/fuzz/transformation_add_loop_preheader_test.cpp
+++ b/test/fuzz/transformation_add_loop_preheader_test.cpp
@@ -67,11 +67,9 @@
const auto consumer = nullptr;
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
ASSERT_TRUE(IsValid(env, context.get()));
// %9 is not a loop header
@@ -198,11 +196,9 @@
const auto consumer = nullptr;
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
ASSERT_TRUE(IsValid(env, context.get()));
auto transformation1 = TransformationAddLoopPreheader(8, 40, {});
diff --git a/test/fuzz/transformation_add_loop_to_create_int_constant_synonym_test.cpp b/test/fuzz/transformation_add_loop_to_create_int_constant_synonym_test.cpp
index 7815b83..3b109d3 100644
--- a/test/fuzz/transformation_add_loop_to_create_int_constant_synonym_test.cpp
+++ b/test/fuzz/transformation_add_loop_to_create_int_constant_synonym_test.cpp
@@ -76,11 +76,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Reminder: the first four parameters of the constructor are the constants
// with values for C, I, S, N respectively.
@@ -187,11 +185,9 @@
BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
ASSERT_FALSE(TransformationAddLoopToCreateIntConstantSynonym(
9, 10, 8, 7, 12, 100, 101, 102, 103, 104, 105, 106, 107)
.IsApplicable(context.get(), transformation_context));
@@ -228,11 +224,9 @@
BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
ASSERT_FALSE(TransformationAddLoopToCreateIntConstantSynonym(
9, 10, 8, 7, 12, 100, 101, 102, 103, 104, 105, 106, 107)
.IsApplicable(context.get(), transformation_context));
@@ -269,11 +263,9 @@
BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
ASSERT_FALSE(TransformationAddLoopToCreateIntConstantSynonym(
9, 10, 8, 7, 12, 100, 101, 102, 103, 104, 105, 106, 107)
.IsApplicable(context.get(), transformation_context));
@@ -337,11 +329,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Block %14 has no predecessors.
ASSERT_FALSE(TransformationAddLoopToCreateIntConstantSynonym(
12, 13, 11, 10, 14, 100, 101, 102, 103, 104, 105, 106, 107)
@@ -561,11 +551,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// These tests check that the transformation is applicable and is applied
// correctly with integers, scalar and vectors, of different signedness.
@@ -752,11 +740,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// These tests check that the transformation can be applied, and is applied
// correctly, to 64-bit integer (scalar and vector) constants.
@@ -871,11 +857,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// These tests check that underflows are taken into consideration when
// deciding if transformation is applicable.
diff --git a/test/fuzz/transformation_add_no_contraction_decoration_test.cpp b/test/fuzz/transformation_add_no_contraction_decoration_test.cpp
index bec15ba..92b525c 100644
--- a/test/fuzz/transformation_add_no_contraction_decoration_test.cpp
+++ b/test/fuzz/transformation_add_no_contraction_decoration_test.cpp
@@ -94,11 +94,9 @@
const auto consumer = nullptr;
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Invalid: 200 is not an id
ASSERT_FALSE(TransformationAddNoContractionDecoration(200).IsApplicable(
context.get(), transformation_context));
diff --git a/test/fuzz/transformation_add_opphi_synonym_test.cpp b/test/fuzz/transformation_add_opphi_synonym_test.cpp
index 19a9081..533f367 100644
--- a/test/fuzz/transformation_add_opphi_synonym_test.cpp
+++ b/test/fuzz/transformation_add_opphi_synonym_test.cpp
@@ -85,13 +85,11 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
- SetUpIdSynonyms(&fact_manager);
- fact_manager.AddFact(MakeSynonymFact(23, 24));
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
+ SetUpIdSynonyms(transformation_context.GetFactManager());
+ transformation_context.GetFactManager()->AddFact(MakeSynonymFact(23, 24));
// %13 is not a block label.
ASSERT_FALSE(TransformationAddOpPhiSynonym(13, {{}}, 100)
@@ -207,46 +205,44 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
- SetUpIdSynonyms(&fact_manager);
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
+ SetUpIdSynonyms(transformation_context.GetFactManager());
// Add some further synonym facts.
- fact_manager.AddFact(MakeSynonymFact(28, 9));
- fact_manager.AddFact(MakeSynonymFact(30, 9));
+ transformation_context.GetFactManager()->AddFact(MakeSynonymFact(28, 9));
+ transformation_context.GetFactManager()->AddFact(MakeSynonymFact(30, 9));
auto transformation1 = TransformationAddOpPhiSynonym(17, {{{15, 13}}}, 100);
ASSERT_TRUE(
transformation1.IsApplicable(context.get(), transformation_context));
transformation1.Apply(context.get(), &transformation_context);
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(100, {}),
- MakeDataDescriptor(9, {})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(100, {}), MakeDataDescriptor(9, {})));
auto transformation2 =
TransformationAddOpPhiSynonym(16, {{{17, 19}, {18, 13}}}, 101);
ASSERT_TRUE(
transformation2.IsApplicable(context.get(), transformation_context));
transformation2.Apply(context.get(), &transformation_context);
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(101, {}),
- MakeDataDescriptor(9, {})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(101, {}), MakeDataDescriptor(9, {})));
auto transformation3 =
TransformationAddOpPhiSynonym(23, {{{22, 13}, {27, 28}, {29, 30}}}, 102);
ASSERT_TRUE(
transformation3.IsApplicable(context.get(), transformation_context));
transformation3.Apply(context.get(), &transformation_context);
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(102, {}),
- MakeDataDescriptor(9, {})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(102, {}), MakeDataDescriptor(9, {})));
auto transformation4 = TransformationAddOpPhiSynonym(31, {{{23, 13}}}, 103);
ASSERT_TRUE(
transformation4.IsApplicable(context.get(), transformation_context));
transformation4.Apply(context.get(), &transformation_context);
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(103, {}),
- MakeDataDescriptor(9, {})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(103, {}), MakeDataDescriptor(9, {})));
ASSERT_TRUE(IsValid(env, context.get()));
@@ -352,14 +348,12 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Declare synonyms
- fact_manager.AddFact(MakeSynonymFact(3, 15));
- fact_manager.AddFact(MakeSynonymFact(12, 16));
+ transformation_context.GetFactManager()->AddFact(MakeSynonymFact(3, 15));
+ transformation_context.GetFactManager()->AddFact(MakeSynonymFact(12, 16));
// Remove the VariablePointers capability.
context.get()->get_feature_mgr()->RemoveCapability(
diff --git a/test/fuzz/transformation_add_parameter_test.cpp b/test/fuzz/transformation_add_parameter_test.cpp
index a89f956..14c527d 100644
--- a/test/fuzz/transformation_add_parameter_test.cpp
+++ b/test/fuzz/transformation_add_parameter_test.cpp
@@ -102,11 +102,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Can't modify entry point function.
ASSERT_FALSE(TransformationAddParameter(4, 60, 7, {{}}, 61)
.IsApplicable(context.get(), transformation_context));
@@ -137,28 +135,28 @@
ASSERT_TRUE(correct.IsApplicable(context.get(), transformation_context));
correct.Apply(context.get(), &transformation_context);
ASSERT_TRUE(IsValid(env, context.get()));
- ASSERT_TRUE(fact_manager.IdIsIrrelevant(60));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IdIsIrrelevant(60));
}
{
TransformationAddParameter correct(17, 62, 7, {{}}, 63);
ASSERT_TRUE(correct.IsApplicable(context.get(), transformation_context));
correct.Apply(context.get(), &transformation_context);
ASSERT_TRUE(IsValid(env, context.get()));
- ASSERT_TRUE(fact_manager.IdIsIrrelevant(62));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IdIsIrrelevant(62));
}
{
TransformationAddParameter correct(29, 64, 31, {{}}, 65);
ASSERT_TRUE(correct.IsApplicable(context.get(), transformation_context));
correct.Apply(context.get(), &transformation_context);
ASSERT_TRUE(IsValid(env, context.get()));
- ASSERT_TRUE(fact_manager.IdIsIrrelevant(64));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IdIsIrrelevant(64));
}
{
TransformationAddParameter correct(34, 66, 7, {{}}, 67);
ASSERT_TRUE(correct.IsApplicable(context.get(), transformation_context));
correct.Apply(context.get(), &transformation_context);
ASSERT_TRUE(IsValid(env, context.get()));
- ASSERT_TRUE(fact_manager.IdIsIrrelevant(66));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IdIsIrrelevant(66));
}
std::string expected_shader = R"(
@@ -322,11 +320,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Bad: Id 19 is not available in the caller that has id 34.
TransformationAddParameter transformation_bad_1(12, 50, 8,
{{{34, 19}, {38, 19}}}, 51);
@@ -449,11 +445,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Bad: Pointer of id 61 has storage class Output, which is not supported.
TransformationAddParameter transformation_bad_1(12, 50, 60,
{{{38, 61}, {42, 61}}}, 51);
@@ -668,11 +662,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Good: Global variable of id 28 (storage class Private) is defined in the
// caller (main).
TransformationAddParameter transformation_good_1(12, 70, 27,
@@ -881,11 +873,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Good: Local variable of id 21 is defined in every caller (id 27 and id 31).
TransformationAddParameter transformation_good_1(
10, 70, 7, {{{27, 21}, {31, 21}, {30, 21}}}, 71);
@@ -1037,11 +1027,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
TransformationAddParameter transformation_good_1(10, 70, 7,
{{{28, 22}, {32, 22}}}, 71);
ASSERT_TRUE(transformation_good_1.IsApplicable(context.get(),
@@ -1051,7 +1039,8 @@
// Check if the fact PointeeValueIsIrrelevant is set for the new parameter
// (storage class Function).
- ASSERT_TRUE(fact_manager.PointeeValueIsIrrelevant(70));
+ ASSERT_TRUE(
+ transformation_context.GetFactManager()->PointeeValueIsIrrelevant(70));
TransformationAddParameter transformation_good_2(10, 72, 19,
{{{28, 20}, {32, 20}}}, 73);
@@ -1062,7 +1051,8 @@
// Check if the fact PointeeValueIsIrrelevant is set for the new parameter
// (storage class Private).
- ASSERT_TRUE(fact_manager.PointeeValueIsIrrelevant(72));
+ ASSERT_TRUE(
+ transformation_context.GetFactManager()->PointeeValueIsIrrelevant(72));
TransformationAddParameter transformation_good_3(10, 74, 50,
{{{28, 51}, {32, 51}}}, 75);
@@ -1073,7 +1063,8 @@
// Check if the fact PointeeValueIsIrrelevant is set for the new parameter
// (storage class Workgroup).
- ASSERT_TRUE(fact_manager.PointeeValueIsIrrelevant(74));
+ ASSERT_TRUE(
+ transformation_context.GetFactManager()->PointeeValueIsIrrelevant(74));
}
} // namespace
diff --git a/test/fuzz/transformation_add_relaxed_decoration_test.cpp b/test/fuzz/transformation_add_relaxed_decoration_test.cpp
index e91800a..e3658d1 100644
--- a/test/fuzz/transformation_add_relaxed_decoration_test.cpp
+++ b/test/fuzz/transformation_add_relaxed_decoration_test.cpp
@@ -67,12 +67,10 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
- fact_manager.AddFactBlockIsDead(100);
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
+ transformation_context.GetFactManager()->AddFactBlockIsDead(100);
// Invalid: 200 is not an id.
ASSERT_FALSE(TransformationAddRelaxedDecoration(200).IsApplicable(
diff --git a/test/fuzz/transformation_add_synonym_test.cpp b/test/fuzz/transformation_add_synonym_test.cpp
index 603a3db..3b49ee6 100644
--- a/test/fuzz/transformation_add_synonym_test.cpp
+++ b/test/fuzz/transformation_add_synonym_test.cpp
@@ -70,12 +70,10 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
- fact_manager.AddFactIdIsIrrelevant(24);
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
+ transformation_context.GetFactManager()->AddFactIdIsIrrelevant(24);
auto insert_before = MakeInstructionDescriptor(22, SpvOpReturn, 0);
@@ -208,11 +206,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
auto insert_before = MakeInstructionDescriptor(5, SpvOpReturn, 0);
uint32_t fresh_id = 50;
@@ -245,8 +241,8 @@
ASSERT_TRUE(
transformation.IsApplicable(context.get(), transformation_context));
transformation.Apply(context.get(), &transformation_context);
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(result_id, {}),
- MakeDataDescriptor(fresh_id, {})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(result_id, {}), MakeDataDescriptor(fresh_id, {})));
++fresh_id;
}
}
@@ -345,11 +341,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
auto insert_before = MakeInstructionDescriptor(5, SpvOpReturn, 0);
uint32_t fresh_id = 50;
@@ -373,8 +367,8 @@
ASSERT_TRUE(
transformation.IsApplicable(context.get(), transformation_context));
transformation.Apply(context.get(), &transformation_context);
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(result_id, {}),
- MakeDataDescriptor(fresh_id, {})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(result_id, {}), MakeDataDescriptor(fresh_id, {})));
++fresh_id;
}
}
@@ -439,11 +433,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
auto insert_before = MakeInstructionDescriptor(5, SpvOpReturn, 0);
const auto synonym_type = protobufs::TransformationAddSynonym::LOGICAL_AND;
@@ -479,11 +471,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
auto insert_before = MakeInstructionDescriptor(5, SpvOpReturn, 0);
const auto synonym_type = protobufs::TransformationAddSynonym::LOGICAL_OR;
@@ -539,11 +529,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
auto insert_before = MakeInstructionDescriptor(5, SpvOpReturn, 0);
const auto synonym_type = protobufs::TransformationAddSynonym::COPY_OBJECT;
@@ -557,8 +545,8 @@
ASSERT_TRUE(
transformation.IsApplicable(context.get(), transformation_context));
transformation.Apply(context.get(), &transformation_context);
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(result_id, {}),
- MakeDataDescriptor(fresh_id, {})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(result_id, {}), MakeDataDescriptor(fresh_id, {})));
++fresh_id;
}
@@ -636,11 +624,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
ASSERT_EQ(0, transformation_context.GetFactManager()
->GetIdsForWhichSynonymsAreKnown()
.size());
@@ -944,11 +930,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Inapplicable because %18 is decorated.
ASSERT_FALSE(TransformationAddSynonym(
18, protobufs::TransformationAddSynonym::COPY_OBJECT, 200,
@@ -1139,11 +1123,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
std::vector<TransformationAddSynonym> transformations = {
TransformationAddSynonym(
19, protobufs::TransformationAddSynonym::COPY_OBJECT, 100,
@@ -1249,11 +1231,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Illegal to copy null.
ASSERT_FALSE(TransformationAddSynonym(
8, protobufs::TransformationAddSynonym::COPY_OBJECT, 100,
@@ -1295,11 +1275,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
transformation_context.GetFactManager()->AddFactValueOfPointeeIsIrrelevant(8);
TransformationAddSynonym transformation1(
@@ -1380,11 +1358,9 @@
const auto consumer = nullptr;
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
ASSERT_FALSE(
TransformationAddSynonym(
216, protobufs::TransformationAddSynonym::COPY_OBJECT, 500,
@@ -1420,11 +1396,9 @@
const auto consumer = nullptr;
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
ASSERT_FALSE(TransformationAddSynonym(
8, protobufs::TransformationAddSynonym::COPY_OBJECT, 500,
MakeInstructionDescriptor(8, SpvOpReturn, 0))
diff --git a/test/fuzz/transformation_add_type_array_test.cpp b/test/fuzz/transformation_add_type_array_test.cpp
index dae8aa6..d062d53 100644
--- a/test/fuzz/transformation_add_type_array_test.cpp
+++ b/test/fuzz/transformation_add_type_array_test.cpp
@@ -54,11 +54,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Id already in use
ASSERT_FALSE(TransformationAddTypeArray(4, 10, 16).IsApplicable(
context.get(), transformation_context));
diff --git a/test/fuzz/transformation_add_type_boolean_test.cpp b/test/fuzz/transformation_add_type_boolean_test.cpp
index e12651e..8505789 100644
--- a/test/fuzz/transformation_add_type_boolean_test.cpp
+++ b/test/fuzz/transformation_add_type_boolean_test.cpp
@@ -42,11 +42,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Not applicable because id 1 is already in use.
ASSERT_FALSE(TransformationAddTypeBoolean(1).IsApplicable(
context.get(), transformation_context));
diff --git a/test/fuzz/transformation_add_type_float_test.cpp b/test/fuzz/transformation_add_type_float_test.cpp
index 68b516e..be6f2c5 100644
--- a/test/fuzz/transformation_add_type_float_test.cpp
+++ b/test/fuzz/transformation_add_type_float_test.cpp
@@ -46,11 +46,9 @@
BuildModule(env, consumer, reference_shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Tests non-fresh id.
auto transformation = TransformationAddTypeFloat(1, 32);
ASSERT_FALSE(
@@ -98,11 +96,9 @@
BuildModule(env, consumer, reference_shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Adds 16-bit float type.
auto transformation = TransformationAddTypeFloat(6, 16);
transformation.Apply(context.get(), &transformation_context);
diff --git a/test/fuzz/transformation_add_type_function_test.cpp b/test/fuzz/transformation_add_type_function_test.cpp
index 298c2ff..0a91004 100644
--- a/test/fuzz/transformation_add_type_function_test.cpp
+++ b/test/fuzz/transformation_add_type_function_test.cpp
@@ -59,11 +59,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Id already in use
ASSERT_FALSE(TransformationAddTypeFunction(4, 12, {12, 16, 14})
.IsApplicable(context.get(), transformation_context));
diff --git a/test/fuzz/transformation_add_type_int_test.cpp b/test/fuzz/transformation_add_type_int_test.cpp
index 5a577d2..341920e 100644
--- a/test/fuzz/transformation_add_type_int_test.cpp
+++ b/test/fuzz/transformation_add_type_int_test.cpp
@@ -46,11 +46,9 @@
BuildModule(env, consumer, reference_shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Tests non-fresh id.
auto transformation = TransformationAddTypeInt(1, 32, false);
ASSERT_FALSE(
@@ -114,11 +112,9 @@
BuildModule(env, consumer, reference_shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Adds signed 8-bit integer type.
auto transformation = TransformationAddTypeInt(6, 8, true);
transformation.Apply(context.get(), &transformation_context);
diff --git a/test/fuzz/transformation_add_type_matrix_test.cpp b/test/fuzz/transformation_add_type_matrix_test.cpp
index 48709f2..09d6ee2 100644
--- a/test/fuzz/transformation_add_type_matrix_test.cpp
+++ b/test/fuzz/transformation_add_type_matrix_test.cpp
@@ -47,11 +47,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Id already in use
ASSERT_FALSE(TransformationAddTypeMatrix(4, 9, 2).IsApplicable(
context.get(), transformation_context));
diff --git a/test/fuzz/transformation_add_type_pointer_test.cpp b/test/fuzz/transformation_add_type_pointer_test.cpp
index 57080ee..5a7c037 100644
--- a/test/fuzz/transformation_add_type_pointer_test.cpp
+++ b/test/fuzz/transformation_add_type_pointer_test.cpp
@@ -97,11 +97,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
auto bad_type_id_does_not_exist =
TransformationAddTypePointer(100, SpvStorageClassFunction, 101);
auto bad_type_id_is_not_type =
diff --git a/test/fuzz/transformation_add_type_struct_test.cpp b/test/fuzz/transformation_add_type_struct_test.cpp
index 89ccf8a..8c8f48a 100644
--- a/test/fuzz/transformation_add_type_struct_test.cpp
+++ b/test/fuzz/transformation_add_type_struct_test.cpp
@@ -47,11 +47,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Id already in use
ASSERT_FALSE(TransformationAddTypeStruct(4, {}).IsApplicable(
context.get(), transformation_context));
@@ -139,11 +137,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// From the spec for the BuiltIn decoration:
// - When applied to a structure-type member, that structure type cannot
// be contained as a member of another structure type.
diff --git a/test/fuzz/transformation_add_type_vector_test.cpp b/test/fuzz/transformation_add_type_vector_test.cpp
index f286bc3..78c276e 100644
--- a/test/fuzz/transformation_add_type_vector_test.cpp
+++ b/test/fuzz/transformation_add_type_vector_test.cpp
@@ -45,11 +45,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Id already in use
ASSERT_FALSE(TransformationAddTypeVector(4, 6, 2).IsApplicable(
context.get(), transformation_context));
diff --git a/test/fuzz/transformation_adjust_branch_weights_test.cpp b/test/fuzz/transformation_adjust_branch_weights_test.cpp
index b13afe7..757d17e 100644
--- a/test/fuzz/transformation_adjust_branch_weights_test.cpp
+++ b/test/fuzz/transformation_adjust_branch_weights_test.cpp
@@ -101,11 +101,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Tests OpBranchConditional instruction with weigths.
auto instruction_descriptor =
MakeInstructionDescriptor(33, SpvOpBranchConditional, 0);
@@ -251,11 +249,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
auto instruction_descriptor =
MakeInstructionDescriptor(33, SpvOpBranchConditional, 0);
auto transformation =
diff --git a/test/fuzz/transformation_composite_construct_test.cpp b/test/fuzz/transformation_composite_construct_test.cpp
index ed5c930..85d13d7 100644
--- a/test/fuzz/transformation_composite_construct_test.cpp
+++ b/test/fuzz/transformation_composite_construct_test.cpp
@@ -129,11 +129,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Make a vec2[3]
TransformationCompositeConstruct make_vec2_array_length_3(
37, {41, 45, 27}, MakeInstructionDescriptor(46, SpvOpAccessChain, 0),
@@ -395,11 +393,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// make a mat3x4
TransformationCompositeConstruct make_mat34(
32, {25, 28, 31}, MakeInstructionDescriptor(31, SpvOpReturn, 0), 200);
@@ -608,11 +604,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// make an Inner
TransformationCompositeConstruct make_inner(
9, {25, 19}, MakeInstructionDescriptor(57, SpvOpAccessChain, 0), 200);
@@ -932,11 +926,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
TransformationCompositeConstruct make_vec2(
7, {17, 11}, MakeInstructionDescriptor(100, SpvOpStore, 0), 200);
// Bad: not enough data for a vec2
@@ -1426,21 +1418,19 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
TransformationCompositeConstruct transformation(
32, {25, 28, 31}, MakeInstructionDescriptor(31, SpvOpReturn, 0), 200);
ASSERT_TRUE(
transformation.IsApplicable(context.get(), transformation_context));
transformation.Apply(context.get(), &transformation_context);
ASSERT_TRUE(IsValid(env, context.get()));
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(25, {}),
- MakeDataDescriptor(200, {0})));
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(28, {}),
- MakeDataDescriptor(200, {1})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(25, {}), MakeDataDescriptor(200, {0})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(28, {}), MakeDataDescriptor(200, {1})));
}
TEST(TransformationCompositeConstructTest, DontAddSynonymsForIrrelevantIds) {
@@ -1510,12 +1500,10 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
- fact_manager.AddFactIdIsIrrelevant(25);
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
+ transformation_context.GetFactManager()->AddFactIdIsIrrelevant(25);
TransformationCompositeConstruct transformation(
32, {25, 28, 31}, MakeInstructionDescriptor(31, SpvOpReturn, 0), 200);
@@ -1523,10 +1511,10 @@
transformation.IsApplicable(context.get(), transformation_context));
transformation.Apply(context.get(), &transformation_context);
ASSERT_TRUE(IsValid(env, context.get()));
- ASSERT_FALSE(fact_manager.IsSynonymous(MakeDataDescriptor(25, {}),
- MakeDataDescriptor(200, {0})));
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(28, {}),
- MakeDataDescriptor(200, {1})));
+ ASSERT_FALSE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(25, {}), MakeDataDescriptor(200, {0})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(28, {}), MakeDataDescriptor(200, {1})));
}
} // namespace
diff --git a/test/fuzz/transformation_composite_extract_test.cpp b/test/fuzz/transformation_composite_extract_test.cpp
index b25313e..5c73f87 100644
--- a/test/fuzz/transformation_composite_extract_test.cpp
+++ b/test/fuzz/transformation_composite_extract_test.cpp
@@ -96,11 +96,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Instruction does not exist.
ASSERT_FALSE(TransformationCompositeExtract(
MakeInstructionDescriptor(36, SpvOpIAdd, 0), 200, 101, {0})
@@ -351,11 +349,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Cannot insert before the OpVariables of a function.
ASSERT_FALSE(
TransformationCompositeExtract(
@@ -475,18 +471,16 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
TransformationCompositeExtract transformation(
MakeInstructionDescriptor(36, SpvOpConvertFToS, 0), 201, 100, {2});
ASSERT_TRUE(
transformation.IsApplicable(context.get(), transformation_context));
transformation.Apply(context.get(), &transformation_context);
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(201, {}),
- MakeDataDescriptor(100, {2})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(201, {}), MakeDataDescriptor(100, {2})));
}
TEST(TransformationCompositeExtractTest, DontAddSynonymsForIrrelevantIds) {
@@ -564,19 +558,17 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
- fact_manager.AddFactIdIsIrrelevant(100);
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
+ transformation_context.GetFactManager()->AddFactIdIsIrrelevant(100);
TransformationCompositeExtract transformation(
MakeInstructionDescriptor(36, SpvOpConvertFToS, 0), 201, 100, {2});
ASSERT_TRUE(
transformation.IsApplicable(context.get(), transformation_context));
transformation.Apply(context.get(), &transformation_context);
- ASSERT_FALSE(fact_manager.IsSynonymous(MakeDataDescriptor(201, {}),
- MakeDataDescriptor(100, {2})));
+ ASSERT_FALSE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(201, {}), MakeDataDescriptor(100, {2})));
}
} // namespace
diff --git a/test/fuzz/transformation_composite_insert_test.cpp b/test/fuzz/transformation_composite_insert_test.cpp
index 7cb17fa..e27257d 100644
--- a/test/fuzz/transformation_composite_insert_test.cpp
+++ b/test/fuzz/transformation_composite_insert_test.cpp
@@ -95,11 +95,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Bad: |fresh_id| is not fresh.
auto transformation_bad_1 = TransformationCompositeInsert(
MakeInstructionDescriptor(29, SpvOpStore, 0), 20, 29, 11, {1, 0, 0});
@@ -216,11 +214,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Bad: The composite with |composite_id| cannot be empty.
auto transformation_bad_1 = TransformationCompositeInsert(
MakeInstructionDescriptor(64, SpvOpStore, 0), 50, 61, 62, {1});
@@ -359,13 +355,11 @@
const auto consumer = nullptr;
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Add fact that the composite is irrelevant.
- fact_manager.AddFactIdIsIrrelevant(30);
+ transformation_context.GetFactManager()->AddFactIdIsIrrelevant(30);
auto transformation_good_1 = TransformationCompositeInsert(
MakeInstructionDescriptor(30, SpvOpStore, 0), 50, 30, 11, {1, 0, 0});
@@ -375,16 +369,16 @@
ASSERT_TRUE(IsValid(env, context.get()));
// No synonyms should have been added.
- ASSERT_FALSE(fact_manager.IsSynonymous(MakeDataDescriptor(30, {0}),
- MakeDataDescriptor(50, {0})));
- ASSERT_FALSE(fact_manager.IsSynonymous(MakeDataDescriptor(30, {1, 1}),
- MakeDataDescriptor(50, {1, 1})));
- ASSERT_FALSE(fact_manager.IsSynonymous(MakeDataDescriptor(30, {1, 2}),
- MakeDataDescriptor(50, {1, 2})));
- ASSERT_FALSE(fact_manager.IsSynonymous(MakeDataDescriptor(30, {1, 0, 1}),
- MakeDataDescriptor(50, {1, 0, 1})));
- ASSERT_FALSE(fact_manager.IsSynonymous(MakeDataDescriptor(50, {1, 0, 0}),
- MakeDataDescriptor(11, {})));
+ ASSERT_FALSE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(30, {0}), MakeDataDescriptor(50, {0})));
+ ASSERT_FALSE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(30, {1, 1}), MakeDataDescriptor(50, {1, 1})));
+ ASSERT_FALSE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(30, {1, 2}), MakeDataDescriptor(50, {1, 2})));
+ ASSERT_FALSE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(30, {1, 0, 1}), MakeDataDescriptor(50, {1, 0, 1})));
+ ASSERT_FALSE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(50, {1, 0, 0}), MakeDataDescriptor(11, {})));
}
TEST(TransformationCompositeInsertTest, IrrelevantObjectSomeSynonyms) {
// This test handles cases where |object| is irrelevant.
@@ -464,13 +458,11 @@
const auto consumer = nullptr;
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Add fact that the object is irrelevant.
- fact_manager.AddFactIdIsIrrelevant(11);
+ transformation_context.GetFactManager()->AddFactIdIsIrrelevant(11);
auto transformation_good_1 = TransformationCompositeInsert(
MakeInstructionDescriptor(30, SpvOpStore, 0), 50, 30, 11, {1, 0, 0});
@@ -480,17 +472,17 @@
ASSERT_TRUE(IsValid(env, context.get()));
// These synonyms should have been added.
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(30, {0}),
- MakeDataDescriptor(50, {0})));
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(30, {1, 1}),
- MakeDataDescriptor(50, {1, 1})));
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(30, {1, 2}),
- MakeDataDescriptor(50, {1, 2})));
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(30, {1, 0, 1}),
- MakeDataDescriptor(50, {1, 0, 1})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(30, {0}), MakeDataDescriptor(50, {0})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(30, {1, 1}), MakeDataDescriptor(50, {1, 1})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(30, {1, 2}), MakeDataDescriptor(50, {1, 2})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(30, {1, 0, 1}), MakeDataDescriptor(50, {1, 0, 1})));
// This synonym shouldn't have been added.
- ASSERT_FALSE(fact_manager.IsSynonymous(MakeDataDescriptor(50, {1, 0, 0}),
- MakeDataDescriptor(11, {})));
+ ASSERT_FALSE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(50, {1, 0, 0}), MakeDataDescriptor(11, {})));
}
TEST(TransformationCompositeInsertTest, ApplicableCreatedSynonyms) {
@@ -571,11 +563,9 @@
const auto consumer = nullptr;
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
auto transformation_good_1 = TransformationCompositeInsert(
MakeInstructionDescriptor(30, SpvOpStore, 0), 50, 30, 11, {1, 0, 0});
ASSERT_TRUE(transformation_good_1.IsApplicable(context.get(),
@@ -584,24 +574,24 @@
ASSERT_TRUE(IsValid(env, context.get()));
// These synonyms should have been added.
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(30, {0}),
- MakeDataDescriptor(50, {0})));
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(30, {1, 1}),
- MakeDataDescriptor(50, {1, 1})));
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(30, {1, 2}),
- MakeDataDescriptor(50, {1, 2})));
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(30, {1, 0, 1}),
- MakeDataDescriptor(50, {1, 0, 1})));
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(50, {1, 0, 0}),
- MakeDataDescriptor(11, {})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(30, {0}), MakeDataDescriptor(50, {0})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(30, {1, 1}), MakeDataDescriptor(50, {1, 1})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(30, {1, 2}), MakeDataDescriptor(50, {1, 2})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(30, {1, 0, 1}), MakeDataDescriptor(50, {1, 0, 1})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(50, {1, 0, 0}), MakeDataDescriptor(11, {})));
// These synonyms should not have been added.
- ASSERT_FALSE(fact_manager.IsSynonymous(MakeDataDescriptor(30, {1}),
- MakeDataDescriptor(50, {1})));
- ASSERT_FALSE(fact_manager.IsSynonymous(MakeDataDescriptor(30, {1, 0}),
- MakeDataDescriptor(50, {1, 0})));
- ASSERT_FALSE(fact_manager.IsSynonymous(MakeDataDescriptor(30, {1, 0, 0}),
- MakeDataDescriptor(50, {1, 0, 0})));
+ ASSERT_FALSE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(30, {1}), MakeDataDescriptor(50, {1})));
+ ASSERT_FALSE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(30, {1, 0}), MakeDataDescriptor(50, {1, 0})));
+ ASSERT_FALSE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(30, {1, 0, 0}), MakeDataDescriptor(50, {1, 0, 0})));
auto transformation_good_2 = TransformationCompositeInsert(
MakeInstructionDescriptor(50, SpvOpStore, 0), 51, 50, 11, {0, 1, 1});
@@ -611,24 +601,24 @@
ASSERT_TRUE(IsValid(env, context.get()));
// These synonyms should have been added.
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(50, {1}),
- MakeDataDescriptor(51, {1})));
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(50, {0, 0}),
- MakeDataDescriptor(51, {0, 0})));
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(50, {0, 2}),
- MakeDataDescriptor(51, {0, 2})));
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(50, {0, 1, 0}),
- MakeDataDescriptor(51, {0, 1, 0})));
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(51, {0, 1, 1}),
- MakeDataDescriptor(11, {})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(50, {1}), MakeDataDescriptor(51, {1})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(50, {0, 0}), MakeDataDescriptor(51, {0, 0})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(50, {0, 2}), MakeDataDescriptor(51, {0, 2})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(50, {0, 1, 0}), MakeDataDescriptor(51, {0, 1, 0})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(51, {0, 1, 1}), MakeDataDescriptor(11, {})));
// These synonyms should not have been added.
- ASSERT_FALSE(fact_manager.IsSynonymous(MakeDataDescriptor(50, {0}),
- MakeDataDescriptor(51, {0})));
- ASSERT_FALSE(fact_manager.IsSynonymous(MakeDataDescriptor(50, {0, 1}),
- MakeDataDescriptor(51, {0, 1})));
- ASSERT_FALSE(fact_manager.IsSynonymous(MakeDataDescriptor(50, {0, 1, 1}),
- MakeDataDescriptor(51, {0, 1, 1})));
+ ASSERT_FALSE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(50, {0}), MakeDataDescriptor(51, {0})));
+ ASSERT_FALSE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(50, {0, 1}), MakeDataDescriptor(51, {0, 1})));
+ ASSERT_FALSE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(50, {0, 1, 1}), MakeDataDescriptor(51, {0, 1, 1})));
std::string after_transformations = R"(
OpCapability Shader
@@ -774,11 +764,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Bad: The object with |object_id| is not available at
// |instruction_to_insert_before|.
auto transformation_bad_1 = TransformationCompositeInsert(
diff --git a/test/fuzz/transformation_compute_data_synonym_fact_closure_test.cpp b/test/fuzz/transformation_compute_data_synonym_fact_closure_test.cpp
index 6fd2ef8..6294897 100644
--- a/test/fuzz/transformation_compute_data_synonym_fact_closure_test.cpp
+++ b/test/fuzz/transformation_compute_data_synonym_fact_closure_test.cpp
@@ -123,254 +123,252 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
ASSERT_TRUE(TransformationComputeDataSynonymFactClosure(100).IsApplicable(
context.get(), transformation_context));
- ASSERT_FALSE(fact_manager.IsSynonymous(MakeDataDescriptor(24, {}),
- MakeDataDescriptor(101, {})));
- ASSERT_FALSE(fact_manager.IsSynonymous(MakeDataDescriptor(24, {0}),
- MakeDataDescriptor(101, {0})));
- ASSERT_FALSE(fact_manager.IsSynonymous(MakeDataDescriptor(24, {1}),
- MakeDataDescriptor(101, {1})));
- ASSERT_FALSE(fact_manager.IsSynonymous(MakeDataDescriptor(24, {0}),
- MakeDataDescriptor(101, {1})));
+ ASSERT_FALSE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(24, {}), MakeDataDescriptor(101, {})));
+ ASSERT_FALSE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(24, {0}), MakeDataDescriptor(101, {0})));
+ ASSERT_FALSE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(24, {1}), MakeDataDescriptor(101, {1})));
+ ASSERT_FALSE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(24, {0}), MakeDataDescriptor(101, {1})));
- fact_manager.AddFactDataSynonym(MakeDataDescriptor(24, {}),
- MakeDataDescriptor(101, {}));
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(24, {}),
- MakeDataDescriptor(101, {})));
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(24, {0}),
- MakeDataDescriptor(101, {0})));
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(24, {1}),
- MakeDataDescriptor(101, {1})));
- ASSERT_FALSE(fact_manager.IsSynonymous(MakeDataDescriptor(24, {0}),
- MakeDataDescriptor(101, {1})));
+ transformation_context.GetFactManager()->AddFactDataSynonym(
+ MakeDataDescriptor(24, {}), MakeDataDescriptor(101, {}));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(24, {}), MakeDataDescriptor(101, {})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(24, {0}), MakeDataDescriptor(101, {0})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(24, {1}), MakeDataDescriptor(101, {1})));
+ ASSERT_FALSE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(24, {0}), MakeDataDescriptor(101, {1})));
- ASSERT_FALSE(fact_manager.IsSynonymous(MakeDataDescriptor(27, {}),
- MakeDataDescriptor(102, {})));
- ASSERT_FALSE(fact_manager.IsSynonymous(MakeDataDescriptor(27, {0}),
- MakeDataDescriptor(102, {0})));
- ASSERT_FALSE(fact_manager.IsSynonymous(MakeDataDescriptor(27, {1}),
- MakeDataDescriptor(102, {1})));
- fact_manager.AddFactDataSynonym(MakeDataDescriptor(27, {0}),
- MakeDataDescriptor(102, {0}));
- ASSERT_FALSE(fact_manager.IsSynonymous(MakeDataDescriptor(27, {}),
- MakeDataDescriptor(102, {})));
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(27, {0}),
- MakeDataDescriptor(102, {0})));
- ASSERT_FALSE(fact_manager.IsSynonymous(MakeDataDescriptor(27, {1}),
- MakeDataDescriptor(102, {1})));
- fact_manager.AddFactDataSynonym(MakeDataDescriptor(27, {1}),
- MakeDataDescriptor(102, {1}));
+ ASSERT_FALSE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(27, {}), MakeDataDescriptor(102, {})));
+ ASSERT_FALSE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(27, {0}), MakeDataDescriptor(102, {0})));
+ ASSERT_FALSE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(27, {1}), MakeDataDescriptor(102, {1})));
+ transformation_context.GetFactManager()->AddFactDataSynonym(
+ MakeDataDescriptor(27, {0}), MakeDataDescriptor(102, {0}));
+ ASSERT_FALSE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(27, {}), MakeDataDescriptor(102, {})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(27, {0}), MakeDataDescriptor(102, {0})));
+ ASSERT_FALSE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(27, {1}), MakeDataDescriptor(102, {1})));
+ transformation_context.GetFactManager()->AddFactDataSynonym(
+ MakeDataDescriptor(27, {1}), MakeDataDescriptor(102, {1}));
TransformationComputeDataSynonymFactClosure(100).Apply(
context.get(), &transformation_context);
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(27, {}),
- MakeDataDescriptor(102, {})));
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(27, {0}),
- MakeDataDescriptor(102, {0})));
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(27, {1}),
- MakeDataDescriptor(102, {1})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(27, {}), MakeDataDescriptor(102, {})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(27, {0}), MakeDataDescriptor(102, {0})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(27, {1}), MakeDataDescriptor(102, {1})));
- ASSERT_FALSE(fact_manager.IsSynonymous(MakeDataDescriptor(30, {}),
- MakeDataDescriptor(103, {})));
- ASSERT_FALSE(fact_manager.IsSynonymous(MakeDataDescriptor(30, {0}),
- MakeDataDescriptor(103, {0})));
- ASSERT_FALSE(fact_manager.IsSynonymous(MakeDataDescriptor(30, {1}),
- MakeDataDescriptor(103, {1})));
- ASSERT_FALSE(fact_manager.IsSynonymous(MakeDataDescriptor(33, {}),
- MakeDataDescriptor(104, {})));
- ASSERT_FALSE(fact_manager.IsSynonymous(MakeDataDescriptor(33, {0}),
- MakeDataDescriptor(104, {0})));
- ASSERT_FALSE(fact_manager.IsSynonymous(MakeDataDescriptor(33, {1}),
- MakeDataDescriptor(104, {1})));
- ASSERT_FALSE(fact_manager.IsSynonymous(MakeDataDescriptor(34, {}),
- MakeDataDescriptor(105, {})));
- ASSERT_FALSE(fact_manager.IsSynonymous(MakeDataDescriptor(34, {0}),
- MakeDataDescriptor(105, {0})));
- ASSERT_FALSE(fact_manager.IsSynonymous(MakeDataDescriptor(34, {1}),
- MakeDataDescriptor(105, {1})));
- ASSERT_FALSE(fact_manager.IsSynonymous(MakeDataDescriptor(34, {2}),
- MakeDataDescriptor(105, {2})));
- ASSERT_FALSE(fact_manager.IsSynonymous(MakeDataDescriptor(34, {3}),
- MakeDataDescriptor(105, {3})));
- fact_manager.AddFactDataSynonym(MakeDataDescriptor(30, {}),
- MakeDataDescriptor(103, {}));
- fact_manager.AddFactDataSynonym(MakeDataDescriptor(33, {}),
- MakeDataDescriptor(104, {}));
- fact_manager.AddFactDataSynonym(MakeDataDescriptor(34, {0}),
- MakeDataDescriptor(105, {0}));
- fact_manager.AddFactDataSynonym(MakeDataDescriptor(34, {1}),
- MakeDataDescriptor(105, {1}));
- fact_manager.AddFactDataSynonym(MakeDataDescriptor(34, {2}),
- MakeDataDescriptor(105, {2}));
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(30, {}),
- MakeDataDescriptor(103, {})));
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(30, {0}),
- MakeDataDescriptor(103, {0})));
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(30, {1}),
- MakeDataDescriptor(103, {1})));
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(33, {}),
- MakeDataDescriptor(104, {})));
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(33, {0}),
- MakeDataDescriptor(104, {0})));
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(33, {1}),
- MakeDataDescriptor(104, {1})));
- ASSERT_FALSE(fact_manager.IsSynonymous(MakeDataDescriptor(34, {}),
- MakeDataDescriptor(105, {})));
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(34, {0}),
- MakeDataDescriptor(105, {0})));
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(34, {1}),
- MakeDataDescriptor(105, {1})));
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(34, {2}),
- MakeDataDescriptor(105, {2})));
- ASSERT_FALSE(fact_manager.IsSynonymous(MakeDataDescriptor(34, {3}),
- MakeDataDescriptor(105, {3})));
+ ASSERT_FALSE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(30, {}), MakeDataDescriptor(103, {})));
+ ASSERT_FALSE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(30, {0}), MakeDataDescriptor(103, {0})));
+ ASSERT_FALSE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(30, {1}), MakeDataDescriptor(103, {1})));
+ ASSERT_FALSE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(33, {}), MakeDataDescriptor(104, {})));
+ ASSERT_FALSE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(33, {0}), MakeDataDescriptor(104, {0})));
+ ASSERT_FALSE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(33, {1}), MakeDataDescriptor(104, {1})));
+ ASSERT_FALSE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(34, {}), MakeDataDescriptor(105, {})));
+ ASSERT_FALSE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(34, {0}), MakeDataDescriptor(105, {0})));
+ ASSERT_FALSE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(34, {1}), MakeDataDescriptor(105, {1})));
+ ASSERT_FALSE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(34, {2}), MakeDataDescriptor(105, {2})));
+ ASSERT_FALSE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(34, {3}), MakeDataDescriptor(105, {3})));
+ transformation_context.GetFactManager()->AddFactDataSynonym(
+ MakeDataDescriptor(30, {}), MakeDataDescriptor(103, {}));
+ transformation_context.GetFactManager()->AddFactDataSynonym(
+ MakeDataDescriptor(33, {}), MakeDataDescriptor(104, {}));
+ transformation_context.GetFactManager()->AddFactDataSynonym(
+ MakeDataDescriptor(34, {0}), MakeDataDescriptor(105, {0}));
+ transformation_context.GetFactManager()->AddFactDataSynonym(
+ MakeDataDescriptor(34, {1}), MakeDataDescriptor(105, {1}));
+ transformation_context.GetFactManager()->AddFactDataSynonym(
+ MakeDataDescriptor(34, {2}), MakeDataDescriptor(105, {2}));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(30, {}), MakeDataDescriptor(103, {})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(30, {0}), MakeDataDescriptor(103, {0})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(30, {1}), MakeDataDescriptor(103, {1})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(33, {}), MakeDataDescriptor(104, {})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(33, {0}), MakeDataDescriptor(104, {0})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(33, {1}), MakeDataDescriptor(104, {1})));
+ ASSERT_FALSE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(34, {}), MakeDataDescriptor(105, {})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(34, {0}), MakeDataDescriptor(105, {0})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(34, {1}), MakeDataDescriptor(105, {1})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(34, {2}), MakeDataDescriptor(105, {2})));
+ ASSERT_FALSE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(34, {3}), MakeDataDescriptor(105, {3})));
- fact_manager.AddFactDataSynonym(MakeDataDescriptor(34, {3}),
- MakeDataDescriptor(105, {3}));
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(33, {0}),
- MakeDataDescriptor(104, {0})));
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(34, {3}),
- MakeDataDescriptor(105, {3})));
+ transformation_context.GetFactManager()->AddFactDataSynonym(
+ MakeDataDescriptor(34, {3}), MakeDataDescriptor(105, {3}));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(33, {0}), MakeDataDescriptor(104, {0})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(34, {3}), MakeDataDescriptor(105, {3})));
- ASSERT_FALSE(fact_manager.IsSynonymous(MakeDataDescriptor(21, {}),
- MakeDataDescriptor(100, {})));
- fact_manager.AddFactDataSynonym(MakeDataDescriptor(21, {0}),
- MakeDataDescriptor(100, {0}));
- fact_manager.AddFactDataSynonym(MakeDataDescriptor(21, {1}),
- MakeDataDescriptor(100, {1}));
- fact_manager.AddFactDataSynonym(MakeDataDescriptor(21, {2}),
- MakeDataDescriptor(100, {2}));
- fact_manager.AddFactDataSynonym(MakeDataDescriptor(21, {3}),
- MakeDataDescriptor(100, {3}));
- fact_manager.AddFactDataSynonym(MakeDataDescriptor(21, {4}),
- MakeDataDescriptor(100, {4}));
+ ASSERT_FALSE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(21, {}), MakeDataDescriptor(100, {})));
+ transformation_context.GetFactManager()->AddFactDataSynonym(
+ MakeDataDescriptor(21, {0}), MakeDataDescriptor(100, {0}));
+ transformation_context.GetFactManager()->AddFactDataSynonym(
+ MakeDataDescriptor(21, {1}), MakeDataDescriptor(100, {1}));
+ transformation_context.GetFactManager()->AddFactDataSynonym(
+ MakeDataDescriptor(21, {2}), MakeDataDescriptor(100, {2}));
+ transformation_context.GetFactManager()->AddFactDataSynonym(
+ MakeDataDescriptor(21, {3}), MakeDataDescriptor(100, {3}));
+ transformation_context.GetFactManager()->AddFactDataSynonym(
+ MakeDataDescriptor(21, {4}), MakeDataDescriptor(100, {4}));
TransformationComputeDataSynonymFactClosure(100).Apply(
context.get(), &transformation_context);
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(21, {}),
- MakeDataDescriptor(100, {})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(21, {}), MakeDataDescriptor(100, {})));
- ASSERT_FALSE(fact_manager.IsSynonymous(MakeDataDescriptor(39, {0}),
- MakeDataDescriptor(107, {0})));
- ASSERT_FALSE(fact_manager.IsSynonymous(MakeDataDescriptor(35, {}),
- MakeDataDescriptor(39, {0})));
- fact_manager.AddFactDataSynonym(MakeDataDescriptor(39, {0}),
- MakeDataDescriptor(35, {}));
- ASSERT_FALSE(fact_manager.IsSynonymous(MakeDataDescriptor(39, {0}),
- MakeDataDescriptor(107, {0})));
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(35, {}),
- MakeDataDescriptor(39, {0})));
+ ASSERT_FALSE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(39, {0}), MakeDataDescriptor(107, {0})));
+ ASSERT_FALSE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(35, {}), MakeDataDescriptor(39, {0})));
+ transformation_context.GetFactManager()->AddFactDataSynonym(
+ MakeDataDescriptor(39, {0}), MakeDataDescriptor(35, {}));
+ ASSERT_FALSE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(39, {0}), MakeDataDescriptor(107, {0})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(35, {}), MakeDataDescriptor(39, {0})));
- ASSERT_FALSE(fact_manager.IsSynonymous(MakeDataDescriptor(38, {0}),
- MakeDataDescriptor(36, {})));
- ASSERT_FALSE(fact_manager.IsSynonymous(MakeDataDescriptor(38, {1}),
- MakeDataDescriptor(37, {})));
- ASSERT_FALSE(fact_manager.IsSynonymous(MakeDataDescriptor(106, {0}),
- MakeDataDescriptor(36, {})));
- ASSERT_FALSE(fact_manager.IsSynonymous(MakeDataDescriptor(106, {1}),
- MakeDataDescriptor(37, {})));
- ASSERT_FALSE(fact_manager.IsSynonymous(MakeDataDescriptor(38, {}),
- MakeDataDescriptor(106, {})));
- fact_manager.AddFactDataSynonym(MakeDataDescriptor(38, {0}),
- MakeDataDescriptor(36, {}));
- fact_manager.AddFactDataSynonym(MakeDataDescriptor(106, {0}),
- MakeDataDescriptor(36, {}));
- fact_manager.AddFactDataSynonym(MakeDataDescriptor(38, {1}),
- MakeDataDescriptor(37, {}));
- fact_manager.AddFactDataSynonym(MakeDataDescriptor(106, {1}),
- MakeDataDescriptor(37, {}));
+ ASSERT_FALSE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(38, {0}), MakeDataDescriptor(36, {})));
+ ASSERT_FALSE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(38, {1}), MakeDataDescriptor(37, {})));
+ ASSERT_FALSE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(106, {0}), MakeDataDescriptor(36, {})));
+ ASSERT_FALSE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(106, {1}), MakeDataDescriptor(37, {})));
+ ASSERT_FALSE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(38, {}), MakeDataDescriptor(106, {})));
+ transformation_context.GetFactManager()->AddFactDataSynonym(
+ MakeDataDescriptor(38, {0}), MakeDataDescriptor(36, {}));
+ transformation_context.GetFactManager()->AddFactDataSynonym(
+ MakeDataDescriptor(106, {0}), MakeDataDescriptor(36, {}));
+ transformation_context.GetFactManager()->AddFactDataSynonym(
+ MakeDataDescriptor(38, {1}), MakeDataDescriptor(37, {}));
+ transformation_context.GetFactManager()->AddFactDataSynonym(
+ MakeDataDescriptor(106, {1}), MakeDataDescriptor(37, {}));
TransformationComputeDataSynonymFactClosure(100).Apply(
context.get(), &transformation_context);
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(38, {0}),
- MakeDataDescriptor(36, {})));
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(38, {1}),
- MakeDataDescriptor(37, {})));
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(106, {0}),
- MakeDataDescriptor(36, {})));
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(106, {1}),
- MakeDataDescriptor(37, {})));
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(38, {}),
- MakeDataDescriptor(106, {})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(38, {0}), MakeDataDescriptor(36, {})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(38, {1}), MakeDataDescriptor(37, {})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(106, {0}), MakeDataDescriptor(36, {})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(106, {1}), MakeDataDescriptor(37, {})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(38, {}), MakeDataDescriptor(106, {})));
- ASSERT_FALSE(fact_manager.IsSynonymous(MakeDataDescriptor(40, {}),
- MakeDataDescriptor(108, {})));
- fact_manager.AddFactDataSynonym(MakeDataDescriptor(107, {0}),
- MakeDataDescriptor(35, {}));
- fact_manager.AddFactDataSynonym(MakeDataDescriptor(40, {0}),
- MakeDataDescriptor(108, {0}));
- fact_manager.AddFactDataSynonym(MakeDataDescriptor(40, {1}),
- MakeDataDescriptor(108, {1}));
- fact_manager.AddFactDataSynonym(MakeDataDescriptor(40, {2}),
- MakeDataDescriptor(108, {2}));
+ ASSERT_FALSE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(40, {}), MakeDataDescriptor(108, {})));
+ transformation_context.GetFactManager()->AddFactDataSynonym(
+ MakeDataDescriptor(107, {0}), MakeDataDescriptor(35, {}));
+ transformation_context.GetFactManager()->AddFactDataSynonym(
+ MakeDataDescriptor(40, {0}), MakeDataDescriptor(108, {0}));
+ transformation_context.GetFactManager()->AddFactDataSynonym(
+ MakeDataDescriptor(40, {1}), MakeDataDescriptor(108, {1}));
+ transformation_context.GetFactManager()->AddFactDataSynonym(
+ MakeDataDescriptor(40, {2}), MakeDataDescriptor(108, {2}));
TransformationComputeDataSynonymFactClosure(100).Apply(
context.get(), &transformation_context);
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(40, {}),
- MakeDataDescriptor(108, {})));
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(40, {0}),
- MakeDataDescriptor(108, {0})));
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(40, {1}),
- MakeDataDescriptor(108, {1})));
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(40, {2}),
- MakeDataDescriptor(108, {2})));
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(40, {0, 0}),
- MakeDataDescriptor(108, {0, 0})));
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(40, {0, 1}),
- MakeDataDescriptor(108, {0, 1})));
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(40, {0, 2}),
- MakeDataDescriptor(108, {0, 2})));
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(40, {0, 3}),
- MakeDataDescriptor(108, {0, 3})));
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(40, {0, 4}),
- MakeDataDescriptor(108, {0, 4})));
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(40, {1, 0}),
- MakeDataDescriptor(108, {1, 0})));
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(40, {1, 1}),
- MakeDataDescriptor(108, {1, 1})));
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(40, {1, 2}),
- MakeDataDescriptor(108, {1, 2})));
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(40, {1, 3}),
- MakeDataDescriptor(108, {1, 3})));
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(40, {1, 0, 0}),
- MakeDataDescriptor(108, {1, 0, 0})));
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(40, {1, 1, 0}),
- MakeDataDescriptor(108, {1, 1, 0})));
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(40, {1, 2, 0}),
- MakeDataDescriptor(108, {1, 2, 0})));
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(40, {1, 3, 0}),
- MakeDataDescriptor(108, {1, 3, 0})));
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(40, {1, 0, 1}),
- MakeDataDescriptor(108, {1, 0, 1})));
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(40, {1, 1, 1}),
- MakeDataDescriptor(108, {1, 1, 1})));
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(40, {1, 2, 1}),
- MakeDataDescriptor(108, {1, 2, 1})));
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(40, {1, 3, 1}),
- MakeDataDescriptor(108, {1, 3, 1})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(40, {}), MakeDataDescriptor(108, {})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(40, {0}), MakeDataDescriptor(108, {0})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(40, {1}), MakeDataDescriptor(108, {1})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(40, {2}), MakeDataDescriptor(108, {2})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(40, {0, 0}), MakeDataDescriptor(108, {0, 0})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(40, {0, 1}), MakeDataDescriptor(108, {0, 1})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(40, {0, 2}), MakeDataDescriptor(108, {0, 2})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(40, {0, 3}), MakeDataDescriptor(108, {0, 3})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(40, {0, 4}), MakeDataDescriptor(108, {0, 4})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(40, {1, 0}), MakeDataDescriptor(108, {1, 0})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(40, {1, 1}), MakeDataDescriptor(108, {1, 1})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(40, {1, 2}), MakeDataDescriptor(108, {1, 2})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(40, {1, 3}), MakeDataDescriptor(108, {1, 3})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(40, {1, 0, 0}), MakeDataDescriptor(108, {1, 0, 0})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(40, {1, 1, 0}), MakeDataDescriptor(108, {1, 1, 0})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(40, {1, 2, 0}), MakeDataDescriptor(108, {1, 2, 0})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(40, {1, 3, 0}), MakeDataDescriptor(108, {1, 3, 0})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(40, {1, 0, 1}), MakeDataDescriptor(108, {1, 0, 1})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(40, {1, 1, 1}), MakeDataDescriptor(108, {1, 1, 1})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(40, {1, 2, 1}), MakeDataDescriptor(108, {1, 2, 1})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(40, {1, 3, 1}), MakeDataDescriptor(108, {1, 3, 1})));
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(40, {2, 0}),
- MakeDataDescriptor(108, {2, 0})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(40, {2, 0}), MakeDataDescriptor(108, {2, 0})));
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(40, {2, 1}),
- MakeDataDescriptor(108, {2, 1})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(40, {2, 1}), MakeDataDescriptor(108, {2, 1})));
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(40, {2, 1, 0}),
- MakeDataDescriptor(108, {2, 1, 0})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(40, {2, 1, 0}), MakeDataDescriptor(108, {2, 1, 0})));
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(40, {2, 1, 1}),
- MakeDataDescriptor(108, {2, 1, 1})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(40, {2, 1, 1}), MakeDataDescriptor(108, {2, 1, 1})));
}
} // namespace
diff --git a/test/fuzz/transformation_duplicate_region_with_selection_test.cpp b/test/fuzz/transformation_duplicate_region_with_selection_test.cpp
index 3a45c99..2306cc5 100644
--- a/test/fuzz/transformation_duplicate_region_with_selection_test.cpp
+++ b/test/fuzz/transformation_duplicate_region_with_selection_test.cpp
@@ -78,11 +78,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
TransformationDuplicateRegionWithSelection transformation_good_1 =
TransformationDuplicateRegionWithSelection(
500, 19, 501, 800, 800, {{800, 100}}, {{13, 201}, {15, 202}},
@@ -210,11 +208,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
TransformationDuplicateRegionWithSelection transformation_good_1 =
TransformationDuplicateRegionWithSelection(
500, 19, 501, 800, 800, {{800, 100}}, {{13, 201}, {15, 202}},
@@ -349,11 +345,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Bad: |entry_block_id| refers to the entry block of the function (this
// transformation currently avoids such cases).
TransformationDuplicateRegionWithSelection transformation_bad_1 =
@@ -447,11 +441,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Bad: A value in the |original_label_to_duplicate_label| is not a fresh id.
TransformationDuplicateRegionWithSelection transformation_bad_1 =
TransformationDuplicateRegionWithSelection(
@@ -618,10 +610,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Bad: The exit block cannot be a header of a loop, because the region won't
// be a single-entry, single-exit region.
TransformationDuplicateRegionWithSelection transformation_bad_1 =
@@ -701,10 +692,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Bad: The block with id 7, which is not an exit block, has two successors:
// the block with id 10 and the block with id 16. The block with id 16 is not
// in the region.
@@ -786,11 +776,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
TransformationDuplicateRegionWithSelection transformation_good_1 =
TransformationDuplicateRegionWithSelection(
500, 30, 501, 50, 15,
@@ -975,11 +963,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
ASSERT_TRUE(IsValid(env, context.get()));
TransformationDuplicateRegionWithSelection transformation_good_1 =
@@ -1130,11 +1116,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Bad: The block with id 50, which is the entry block, has two successors:
// the block with id 18 and the block with id 22. The block 22 has an early
// return from the function, so that the entry block is not post-dominated by
@@ -1209,11 +1193,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
ASSERT_TRUE(IsValid(env, context.get()));
TransformationDuplicateRegionWithSelection transformation_good_1 =
@@ -1346,11 +1328,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Bad: There is no required capability CapabilityVariablePointers
TransformationDuplicateRegionWithSelection transformation_bad_1 =
TransformationDuplicateRegionWithSelection(
@@ -1408,11 +1388,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
ASSERT_TRUE(IsValid(env, context.get()));
TransformationDuplicateRegionWithSelection transformation_good_1 =
@@ -1528,11 +1506,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
ASSERT_TRUE(IsValid(env, context.get()));
TransformationDuplicateRegionWithSelection transformation_good_1 =
@@ -1667,11 +1643,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
TransformationDuplicateRegionWithSelection transformation_bad =
TransformationDuplicateRegionWithSelection(
500, 50, 501, 27, 14, {{27, 101}, {14, 102}}, {{29, 201}, {31, 202}},
diff --git a/test/fuzz/transformation_equation_instruction_test.cpp b/test/fuzz/transformation_equation_instruction_test.cpp
index e6d8b81..a76a91c 100644
--- a/test/fuzz/transformation_equation_instruction_test.cpp
+++ b/test/fuzz/transformation_equation_instruction_test.cpp
@@ -48,11 +48,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
protobufs::InstructionDescriptor return_instruction =
MakeInstructionDescriptor(13, SpvOpReturn, 0);
@@ -166,11 +164,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
protobufs::InstructionDescriptor return_instruction =
MakeInstructionDescriptor(13, SpvOpReturn, 0);
@@ -258,11 +254,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
protobufs::InstructionDescriptor return_instruction =
MakeInstructionDescriptor(13, SpvOpReturn, 0);
@@ -382,11 +376,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
protobufs::InstructionDescriptor return_instruction =
MakeInstructionDescriptor(13, SpvOpReturn, 0);
@@ -524,11 +516,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
auto insert_before = MakeInstructionDescriptor(13, SpvOpReturn, 0);
// Too many operands.
@@ -649,11 +639,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
auto insert_before = MakeInstructionDescriptor(13, SpvOpReturn, 0);
// Scalar floating-point type does not exist.
@@ -698,11 +686,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
auto insert_before = MakeInstructionDescriptor(13, SpvOpReturn, 0);
// Scalar integral type does not exist.
@@ -743,11 +729,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
auto insert_before = MakeInstructionDescriptor(13, SpvOpReturn, 0);
{
@@ -818,11 +802,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
auto insert_before = MakeInstructionDescriptor(13, SpvOpReturn, 0);
{
@@ -892,11 +874,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
auto insert_before = MakeInstructionDescriptor(13, SpvOpReturn, 0);
{
@@ -963,11 +943,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
auto insert_before = MakeInstructionDescriptor(13, SpvOpReturn, 0);
{
@@ -1036,11 +1014,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
auto insert_before = MakeInstructionDescriptor(13, SpvOpReturn, 0);
{
@@ -1115,11 +1091,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
auto insert_before = MakeInstructionDescriptor(13, SpvOpReturn, 0);
{
@@ -1189,11 +1163,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
protobufs::InstructionDescriptor return_instruction =
MakeInstructionDescriptor(13, SpvOpReturn, 0);
@@ -1259,11 +1231,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
protobufs::InstructionDescriptor return_instruction =
MakeInstructionDescriptor(13, SpvOpReturn, 0);
@@ -1343,11 +1313,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
protobufs::InstructionDescriptor return_instruction =
MakeInstructionDescriptor(13, SpvOpReturn, 0);
@@ -1511,11 +1479,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
protobufs::InstructionDescriptor return_instruction =
MakeInstructionDescriptor(13, SpvOpReturn, 0);
@@ -1564,11 +1530,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
auto return_instruction = MakeInstructionDescriptor(13, SpvOpReturn, 0);
// Applicable.
@@ -1578,10 +1542,10 @@
transformation.IsApplicable(context.get(), transformation_context));
// Handles irrelevant ids.
- fact_manager.AddFactIdIsIrrelevant(16);
+ transformation_context.GetFactManager()->AddFactIdIsIrrelevant(16);
ASSERT_FALSE(
transformation.IsApplicable(context.get(), transformation_context));
- fact_manager.AddFactIdIsIrrelevant(15);
+ transformation_context.GetFactManager()->AddFactIdIsIrrelevant(15);
ASSERT_FALSE(
transformation.IsApplicable(context.get(), transformation_context));
}
diff --git a/test/fuzz/transformation_flatten_conditional_branch_test.cpp b/test/fuzz/transformation_flatten_conditional_branch_test.cpp
index 3327dd6..b04cc2b 100644
--- a/test/fuzz/transformation_flatten_conditional_branch_test.cpp
+++ b/test/fuzz/transformation_flatten_conditional_branch_test.cpp
@@ -132,11 +132,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Block %15 does not end with OpBranchConditional.
ASSERT_FALSE(TransformationFlattenConditionalBranch(15, true, {})
.IsApplicable(context.get(), transformation_context));
@@ -240,11 +238,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
auto transformation1 = TransformationFlattenConditionalBranch(7, true, {});
ASSERT_TRUE(
transformation1.IsApplicable(context.get(), transformation_context));
@@ -412,11 +408,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
#ifndef NDEBUG
// The following checks lead to assertion failures, since some entries
// requiring fresh ids are not present in the map, and the transformation
@@ -494,7 +488,7 @@
// Make a new transformation context with a source of overflow ids.
TransformationContext new_transformation_context(
- &fact_manager, validator_options,
+ MakeUnique<FactManager>(context.get()), validator_options,
MakeUnique<CounterOverflowIdSource>(1000));
auto transformation2 = TransformationFlattenConditionalBranch(
@@ -685,11 +679,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
#ifndef NDEBUG
// The selection construct headed by %7 requires fresh ids because it contains
// a function call. This causes an assertion failure because transformation
diff --git a/test/fuzz/transformation_function_call_test.cpp b/test/fuzz/transformation_function_call_test.cpp
index 6174d76..5bbc206 100644
--- a/test/fuzz/transformation_function_call_test.cpp
+++ b/test/fuzz/transformation_function_call_test.cpp
@@ -134,11 +134,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
transformation_context.GetFactManager()->AddFactBlockIsDead(59);
transformation_context.GetFactManager()->AddFactBlockIsDead(11);
transformation_context.GetFactManager()->AddFactBlockIsDead(18);
@@ -447,11 +445,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
transformation_context.GetFactManager()->AddFactBlockIsDead(11);
// 4 is an entry point, so it is not legal for it to be the target of a call.
diff --git a/test/fuzz/transformation_inline_function_test.cpp b/test/fuzz/transformation_inline_function_test.cpp
index f988de9..055980d 100644
--- a/test/fuzz/transformation_inline_function_test.cpp
+++ b/test/fuzz/transformation_inline_function_test.cpp
@@ -141,11 +141,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Tests undefined OpFunctionCall instruction.
auto transformation = TransformationInlineFunction(67, {});
ASSERT_FALSE(
@@ -273,11 +271,9 @@
BuildModule(env, consumer, reference_shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
auto transformation = TransformationInlineFunction(43, {{22, 45},
{23, 46},
{24, 47},
@@ -513,11 +509,9 @@
BuildModule(env, consumer, reference_shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
auto transformation = TransformationInlineFunction(30, {});
ASSERT_TRUE(
transformation.IsApplicable(context.get(), transformation_context));
@@ -784,11 +778,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
TransformationInlineFunction transformation(6,
{{{8, 20}, {13, 21}, {12, 22}}});
ASSERT_TRUE(
diff --git a/test/fuzz/transformation_invert_comparison_operator_test.cpp b/test/fuzz/transformation_invert_comparison_operator_test.cpp
index 83a318e..49b6b6d 100644
--- a/test/fuzz/transformation_invert_comparison_operator_test.cpp
+++ b/test/fuzz/transformation_invert_comparison_operator_test.cpp
@@ -59,11 +59,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Operator id is not valid.
ASSERT_FALSE(TransformationInvertComparisonOperator(23, 23).IsApplicable(
context.get(), transformation_context));
diff --git a/test/fuzz/transformation_load_test.cpp b/test/fuzz/transformation_load_test.cpp
index 11d60dd..6a1eff8 100644
--- a/test/fuzz/transformation_load_test.cpp
+++ b/test/fuzz/transformation_load_test.cpp
@@ -85,11 +85,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
transformation_context.GetFactManager()->AddFactValueOfPointeeIsIrrelevant(
27);
transformation_context.GetFactManager()->AddFactValueOfPointeeIsIrrelevant(
diff --git a/test/fuzz/transformation_make_vector_operation_dynamic_test.cpp b/test/fuzz/transformation_make_vector_operation_dynamic_test.cpp
index b979a39..b2bfb38 100644
--- a/test/fuzz/transformation_make_vector_operation_dynamic_test.cpp
+++ b/test/fuzz/transformation_make_vector_operation_dynamic_test.cpp
@@ -93,11 +93,9 @@
BuildModule(env, consumer, reference_shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Tests undefined instruction.
auto transformation = TransformationMakeVectorOperationDynamic(50, 10);
ASSERT_FALSE(
@@ -206,11 +204,9 @@
BuildModule(env, consumer, reference_shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
auto transformation = TransformationMakeVectorOperationDynamic(22, 9);
ASSERT_TRUE(
transformation.IsApplicable(context.get(), transformation_context));
diff --git a/test/fuzz/transformation_merge_blocks_test.cpp b/test/fuzz/transformation_merge_blocks_test.cpp
index 75e360b..3abff2b 100644
--- a/test/fuzz/transformation_merge_blocks_test.cpp
+++ b/test/fuzz/transformation_merge_blocks_test.cpp
@@ -44,11 +44,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
ASSERT_FALSE(TransformationMergeBlocks(3).IsApplicable(
context.get(), transformation_context));
ASSERT_FALSE(TransformationMergeBlocks(7).IsApplicable(
@@ -86,11 +84,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
ASSERT_FALSE(TransformationMergeBlocks(6).IsApplicable(
context.get(), transformation_context));
}
@@ -127,11 +123,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
ASSERT_FALSE(TransformationMergeBlocks(10).IsApplicable(
context.get(), transformation_context));
}
@@ -169,11 +163,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
TransformationMergeBlocks transformation(10);
ASSERT_TRUE(
transformation.IsApplicable(context.get(), transformation_context));
@@ -243,11 +235,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
TransformationMergeBlocks transformation(10);
ASSERT_TRUE(
transformation.IsApplicable(context.get(), transformation_context));
@@ -322,11 +312,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
TransformationMergeBlocks transformation(11);
ASSERT_TRUE(
transformation.IsApplicable(context.get(), transformation_context));
@@ -397,11 +385,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
TransformationMergeBlocks transformation(6);
ASSERT_TRUE(
transformation.IsApplicable(context.get(), transformation_context));
@@ -478,11 +464,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
for (auto& transformation :
{TransformationMergeBlocks(100), TransformationMergeBlocks(101),
TransformationMergeBlocks(102), TransformationMergeBlocks(103)}) {
@@ -570,11 +554,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
for (auto& transformation :
{TransformationMergeBlocks(101), TransformationMergeBlocks(100)}) {
ASSERT_TRUE(
@@ -661,11 +643,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
TransformationMergeBlocks transformation(101);
ASSERT_TRUE(
transformation.IsApplicable(context.get(), transformation_context));
diff --git a/test/fuzz/transformation_move_block_down_test.cpp b/test/fuzz/transformation_move_block_down_test.cpp
index 123b5c8..c8ce2a4 100644
--- a/test/fuzz/transformation_move_block_down_test.cpp
+++ b/test/fuzz/transformation_move_block_down_test.cpp
@@ -53,11 +53,9 @@
const auto consumer = nullptr;
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
auto transformation = TransformationMoveBlockDown(11);
ASSERT_FALSE(
transformation.IsApplicable(context.get(), transformation_context));
@@ -94,11 +92,9 @@
const auto consumer = nullptr;
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
auto transformation = TransformationMoveBlockDown(5);
ASSERT_FALSE(
transformation.IsApplicable(context.get(), transformation_context));
@@ -137,11 +133,9 @@
const auto consumer = nullptr;
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
auto transformation = TransformationMoveBlockDown(100);
ASSERT_FALSE(
transformation.IsApplicable(context.get(), transformation_context));
@@ -184,11 +178,9 @@
const auto consumer = nullptr;
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
auto transformation = TransformationMoveBlockDown(12);
ASSERT_FALSE(
transformation.IsApplicable(context.get(), transformation_context));
@@ -293,11 +285,9 @@
const auto context =
BuildModule(env, consumer, before_transformation, kFuzzAssembleOption);
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// The block ids are: 5 14 20 23 21 25 29 32 30 15
// We make a transformation to move each of them down, plus a transformation
// to move a non-block, 27, down.
@@ -710,11 +700,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
auto transformation = TransformationMoveBlockDown(6);
ASSERT_FALSE(
transformation.IsApplicable(context.get(), transformation_context));
diff --git a/test/fuzz/transformation_move_instruction_down_test.cpp b/test/fuzz/transformation_move_instruction_down_test.cpp
index 7225ee0..ce8c926 100644
--- a/test/fuzz/transformation_move_instruction_down_test.cpp
+++ b/test/fuzz/transformation_move_instruction_down_test.cpp
@@ -66,11 +66,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Instruction descriptor is invalid.
ASSERT_FALSE(TransformationMoveInstructionDown(
MakeInstructionDescriptor(30, SpvOpNop, 0))
@@ -209,11 +207,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Swap memory instruction with an unsupported one.
ASSERT_FALSE(TransformationMoveInstructionDown(
MakeInstructionDescriptor(22, SpvOpLoad, 0))
@@ -314,11 +310,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Swap two barrier instructions.
ASSERT_FALSE(TransformationMoveInstructionDown(
MakeInstructionDescriptor(21, SpvOpMemoryBarrier, 0))
@@ -395,11 +389,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Swap simple and barrier instructions.
{
TransformationMoveInstructionDown transformation(
@@ -602,12 +594,11 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
- fact_manager.AddFactValueOfPointeeIsIrrelevant(22);
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
+ transformation_context.GetFactManager()->AddFactValueOfPointeeIsIrrelevant(
+ 22);
// Invalid swaps.
diff --git a/test/fuzz/transformation_mutate_pointer_test.cpp b/test/fuzz/transformation_mutate_pointer_test.cpp
index 5c649df..1e026c8 100644
--- a/test/fuzz/transformation_mutate_pointer_test.cpp
+++ b/test/fuzz/transformation_mutate_pointer_test.cpp
@@ -79,13 +79,11 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
- fact_manager.AddFactIdIsIrrelevant(35);
- fact_manager.AddFactIdIsIrrelevant(39);
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
+ transformation_context.GetFactManager()->AddFactIdIsIrrelevant(35);
+ transformation_context.GetFactManager()->AddFactIdIsIrrelevant(39);
const auto insert_before = MakeInstructionDescriptor(26, SpvOpReturn, 0);
@@ -140,7 +138,7 @@
26, 70, MakeInstructionDescriptor(26, SpvOpAccessChain, 0))
.IsApplicable(context.get(), transformation_context));
- fact_manager.AddFactIdIsIrrelevant(40);
+ transformation_context.GetFactManager()->AddFactIdIsIrrelevant(40);
uint32_t fresh_id = 70;
uint32_t pointer_ids[] = {
@@ -269,12 +267,10 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
- fact_manager.AddFactIdIsIrrelevant(7);
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
+ transformation_context.GetFactManager()->AddFactIdIsIrrelevant(7);
ASSERT_FALSE(
context->GetDominatorAnalysis(context->GetFunction(4))->IsReachable(10));
diff --git a/test/fuzz/transformation_outline_function_test.cpp b/test/fuzz/transformation_outline_function_test.cpp
index abf0be3..db964dd 100644
--- a/test/fuzz/transformation_outline_function_test.cpp
+++ b/test/fuzz/transformation_outline_function_test.cpp
@@ -45,11 +45,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
TransformationOutlineFunction transformation(5, 5, /* not relevant */ 200,
100, 101, 102, 103,
/* not relevant */ 201, {}, {});
@@ -110,11 +108,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
TransformationOutlineFunction transformation(5, 5, /* not relevant */ 200,
100, 101, 102, 103,
/* not relevant */ 201, {}, {});
@@ -167,11 +163,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
TransformationOutlineFunction transformation(6, 13, /* not relevant */
200, 100, 101, 102, 103,
/* not relevant */ 201, {}, {});
@@ -256,11 +250,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
TransformationOutlineFunction transformation(6, 6, /* not relevant */ 200,
100, 101, 102, 103,
/* not relevant */ 201, {}, {});
@@ -334,11 +326,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
TransformationOutlineFunction transformation(6, 6, 99, 100, 101, 102, 103,
105, {}, {{9, 104}});
ASSERT_TRUE(
@@ -433,11 +423,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
TransformationOutlineFunction transformation(
6, 80, 100, 101, 102, 103, 104, 105, {},
{{15, 106}, {9, 107}, {7, 108}, {8, 109}});
@@ -533,11 +521,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
TransformationOutlineFunction transformation(6, 6, 100, 101, 102, 103, 104,
105, {{7, 106}}, {});
ASSERT_TRUE(
@@ -611,11 +597,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
TransformationOutlineFunction transformation(6, 6, 100, 101, 102, 103, 104,
105, {{13, 106}}, {});
ASSERT_TRUE(
@@ -699,11 +683,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
TransformationOutlineFunction transformation(11, 11, 100, 101, 102, 103, 104,
105, {{9, 106}}, {{14, 107}});
ASSERT_TRUE(
@@ -789,11 +771,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
TransformationOutlineFunction transformation(6, 8, 100, 101, 102, 103, 104,
105, {}, {});
ASSERT_FALSE(
@@ -839,11 +819,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
TransformationOutlineFunction transformation(6, 11, /* not relevant */ 200,
100, 101, 102, 103,
/* not relevant */ 201, {}, {});
@@ -890,11 +868,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
TransformationOutlineFunction transformation(6, 11, /* not relevant */ 200,
100, 101, 102, 103,
/* not relevant */ 201, {}, {});
@@ -942,11 +918,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
TransformationOutlineFunction transformation(6, 11, /* not relevant */ 200,
100, 101, 102, 103,
/* not relevant */ 201, {}, {});
@@ -986,11 +960,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
TransformationOutlineFunction transformation(6, 8, 100, 101, 102, 103, 104,
105, {}, {});
ASSERT_FALSE(
@@ -1030,11 +1002,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
TransformationOutlineFunction transformation(7, 8, 100, 101, 102, 103, 104,
105, {}, {});
ASSERT_FALSE(
@@ -1073,11 +1043,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
TransformationOutlineFunction transformation(6, 7, 100, 101, 102, 103, 104,
105, {}, {});
ASSERT_FALSE(
@@ -1118,11 +1086,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
TransformationOutlineFunction transformation(6, 7, 100, 101, 102, 103, 104,
105, {}, {});
ASSERT_FALSE(
@@ -1163,11 +1129,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
TransformationOutlineFunction transformation(8, 11, 100, 101, 102, 103, 104,
105, {}, {});
ASSERT_FALSE(
@@ -1205,11 +1169,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
TransformationOutlineFunction transformation(
/*entry_block*/ 54,
/*exit_block*/ 58,
@@ -1296,11 +1258,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
TransformationOutlineFunction transformation(
/*entry_block*/ 9,
/*exit_block*/ 10,
@@ -1391,11 +1351,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
TransformationOutlineFunction transformation(
/*entry_block*/ 54,
/*exit_block*/ 54,
@@ -1481,11 +1439,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
TransformationOutlineFunction transformation(
/*entry_block*/ 54,
/*exit_block*/ 54,
@@ -1567,11 +1523,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
TransformationOutlineFunction transformation(
/*entry_block*/ 21,
/*exit_block*/ 21,
@@ -1624,11 +1578,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
TransformationOutlineFunction transformation(
/*entry_block*/ 21,
/*exit_block*/ 24,
@@ -1681,11 +1633,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
TransformationOutlineFunction transformation(
/*entry_block*/ 5,
/*exit_block*/ 22,
@@ -1741,11 +1691,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
TransformationOutlineFunction transformation(
/*entry_block*/ 13,
/*exit_block*/ 15,
@@ -1803,11 +1751,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
TransformationOutlineFunction transformation(
/*entry_block*/ 13,
/*exit_block*/ 15,
@@ -1870,11 +1816,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
TransformationOutlineFunction transformation(
/*entry_block*/ 11,
/*exit_block*/ 11,
@@ -2026,11 +1970,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
transformation_context.GetFactManager()->AddFactFunctionIsLivesafe(30);
transformation_context.GetFactManager()->AddFactValueOfPointeeIsIrrelevant(
200);
@@ -2255,11 +2197,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
for (uint32_t block_id : {16u, 23u, 24u, 26u, 27u, 34u, 35u, 50u}) {
transformation_context.GetFactManager()->AddFactBlockIsDead(block_id);
}
@@ -2339,11 +2279,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
for (uint32_t block_id : {32u, 34u, 35u}) {
transformation_context.GetFactManager()->AddFactBlockIsDead(block_id);
}
@@ -2424,11 +2362,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
transformation_context.GetFactManager()->AddFactValueOfPointeeIsIrrelevant(9);
transformation_context.GetFactManager()->AddFactValueOfPointeeIsIrrelevant(
14);
@@ -2500,11 +2436,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
TransformationOutlineFunction transformation(
/*entry_block*/ 80,
/*exit_block*/ 80,
@@ -2558,11 +2492,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
TransformationOutlineFunction transformation(
/*entry_block*/ 22,
/*exit_block*/ 23,
@@ -2741,9 +2673,8 @@
BuildModule(env, consumer, reference_shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
- TransformationContext transformation_context(&fact_manager,
- validator_options);
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
#ifndef NDEBUG
// We expect the following applicability checks to lead to assertion
@@ -2883,9 +2814,8 @@
const auto context =
BuildModule(env, consumer, reference_shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
TransformationContext new_transformation_context(
- &fact_manager, validator_options,
+ MakeUnique<FactManager>(context.get()), validator_options,
MakeUnique<CounterOverflowIdSource>(2000));
ASSERT_TRUE(transformation_with_missing_input_id.IsApplicable(
context.get(), new_transformation_context));
@@ -3045,11 +2975,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
TransformationOutlineFunction transformation(
/*entry_block*/ 38,
/*exit_block*/ 36,
@@ -3104,11 +3032,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
TransformationOutlineFunction transformation(
/*entry_block*/ 80,
/*exit_block*/ 81,
@@ -3197,11 +3123,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
TransformationOutlineFunction transformation(
/*entry_block*/ 80,
/*exit_block*/ 106,
diff --git a/test/fuzz/transformation_permute_function_parameters_test.cpp b/test/fuzz/transformation_permute_function_parameters_test.cpp
index dafc697..68e073c 100644
--- a/test/fuzz/transformation_permute_function_parameters_test.cpp
+++ b/test/fuzz/transformation_permute_function_parameters_test.cpp
@@ -253,11 +253,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Can't permute main function
ASSERT_FALSE(TransformationPermuteFunctionParameters(4, 105, {})
.IsApplicable(context.get(), transformation_context));
diff --git a/test/fuzz/transformation_permute_phi_operands_test.cpp b/test/fuzz/transformation_permute_phi_operands_test.cpp
index 99fb990..c2d71b4 100644
--- a/test/fuzz/transformation_permute_phi_operands_test.cpp
+++ b/test/fuzz/transformation_permute_phi_operands_test.cpp
@@ -68,11 +68,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Result id is invalid.
ASSERT_FALSE(TransformationPermutePhiOperands(26, {}).IsApplicable(
context.get(), transformation_context));
diff --git a/test/fuzz/transformation_propagate_instruction_up_test.cpp b/test/fuzz/transformation_propagate_instruction_up_test.cpp
index 23f0482..e8d32e9 100644
--- a/test/fuzz/transformation_propagate_instruction_up_test.cpp
+++ b/test/fuzz/transformation_propagate_instruction_up_test.cpp
@@ -73,11 +73,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// |block_id| is invalid.
ASSERT_FALSE(TransformationPropagateInstructionUp(40, {{}}).IsApplicable(
context.get(), transformation_context));
@@ -357,11 +355,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
TransformationPropagateInstructionUp transformation(
15, {{{14, 40}, {19, 41}, {26, 42}}});
ASSERT_TRUE(
@@ -476,11 +472,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
TransformationPropagateInstructionUp transformation(
15, {{{14, 40}, {19, 41}, {26, 42}}});
ASSERT_TRUE(
@@ -591,11 +585,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
TransformationPropagateInstructionUp transformation(
15, {{{14, 40}, {19, 41}, {15, 42}}});
ASSERT_TRUE(
@@ -686,11 +678,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Required capabilities haven't yet been specified.
TransformationPropagateInstructionUp transformation(9, {{{5, 40}}});
ASSERT_FALSE(
@@ -767,11 +757,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Required capabilities haven't yet been specified
TransformationPropagateInstructionUp transformation(9, {{{5, 40}}});
ASSERT_FALSE(
@@ -848,11 +836,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
TransformationPropagateInstructionUp transformation(9, {{{5, 40}}});
ASSERT_TRUE(
transformation.IsApplicable(context.get(), transformation_context));
diff --git a/test/fuzz/transformation_push_id_through_variable_test.cpp b/test/fuzz/transformation_push_id_through_variable_test.cpp
index cc003a6..857d9fe 100644
--- a/test/fuzz/transformation_push_id_through_variable_test.cpp
+++ b/test/fuzz/transformation_push_id_through_variable_test.cpp
@@ -96,11 +96,9 @@
const auto context =
BuildModule(env, consumer, reference_shader, kFuzzAssembleOption);
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Tests the reference shader validity.
ASSERT_TRUE(IsValid(env, context.get()));
@@ -327,11 +325,9 @@
const auto context =
BuildModule(env, consumer, reference_shader, kFuzzAssembleOption);
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
uint32_t value_id = 80;
uint32_t value_synonym_id = 100;
uint32_t variable_id = 101;
@@ -486,16 +482,16 @@
)";
ASSERT_TRUE(IsEqual(env, variant_shader, context.get()));
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(80, {}),
- MakeDataDescriptor(100, {})));
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(21, {}),
- MakeDataDescriptor(102, {})));
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(95, {}),
- MakeDataDescriptor(104, {})));
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(80, {}),
- MakeDataDescriptor(106, {})));
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(21, {}),
- MakeDataDescriptor(108, {})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(80, {}), MakeDataDescriptor(100, {})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(21, {}), MakeDataDescriptor(102, {})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(95, {}), MakeDataDescriptor(104, {})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(80, {}), MakeDataDescriptor(106, {})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(21, {}), MakeDataDescriptor(108, {})));
}
TEST(TransformationPushIdThroughVariableTest, AddSynonymsForRelevantIds) {
@@ -573,11 +569,9 @@
const auto context =
BuildModule(env, consumer, reference_shader, kFuzzAssembleOption);
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Tests the reference shader validity.
ASSERT_TRUE(IsValid(env, context.get()));
@@ -595,8 +589,8 @@
transformation.IsApplicable(context.get(), transformation_context));
transformation.Apply(context.get(), &transformation_context);
ASSERT_TRUE(IsValid(env, context.get()));
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(21, {}),
- MakeDataDescriptor(62, {})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(21, {}), MakeDataDescriptor(62, {})));
}
TEST(TransformationPushIdThroughVariableTest, DontAddSynonymsForIrrelevantIds) {
@@ -674,15 +668,13 @@
const auto context =
BuildModule(env, consumer, reference_shader, kFuzzAssembleOption);
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Tests the reference shader validity.
ASSERT_TRUE(IsValid(env, context.get()));
- fact_manager.AddFactIdIsIrrelevant(21);
+ transformation_context.GetFactManager()->AddFactIdIsIrrelevant(21);
uint32_t value_id = 21;
uint32_t value_synonym_id = 62;
@@ -698,8 +690,8 @@
transformation.IsApplicable(context.get(), transformation_context));
transformation.Apply(context.get(), &transformation_context);
ASSERT_TRUE(IsValid(env, context.get()));
- ASSERT_FALSE(fact_manager.IsSynonymous(MakeDataDescriptor(21, {}),
- MakeDataDescriptor(62, {})));
+ ASSERT_FALSE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(21, {}), MakeDataDescriptor(62, {})));
}
} // namespace
diff --git a/test/fuzz/transformation_record_synonymous_constants_test.cpp b/test/fuzz/transformation_record_synonymous_constants_test.cpp
index ea46774..46cda69 100644
--- a/test/fuzz/transformation_record_synonymous_constants_test.cpp
+++ b/test/fuzz/transformation_record_synonymous_constants_test.cpp
@@ -84,10 +84,9 @@
const auto consumer = nullptr;
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
ASSERT_TRUE(IsValid(env, context.get()));
#ifndef NDEBUG
@@ -201,10 +200,9 @@
const auto consumer = nullptr;
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
ASSERT_TRUE(IsValid(env, context.get()));
// %9 and %11 are not equivalent
@@ -293,10 +291,9 @@
const auto consumer = nullptr;
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
ASSERT_TRUE(IsValid(env, context.get()));
// %9 and %13 are not equivalent
@@ -399,10 +396,9 @@
const auto consumer = nullptr;
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
ASSERT_TRUE(IsValid(env, context.get()));
// %25 and %27 are equivalent (25 is zero-like, 27 is null)
@@ -536,10 +532,9 @@
const auto consumer = nullptr;
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
ASSERT_TRUE(IsValid(env, context.get()));
// %29 and %35 are not equivalent (they have different types)
@@ -634,10 +629,9 @@
const auto consumer = nullptr;
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
ASSERT_TRUE(IsValid(env, context.get()));
// %25 and %31 are not equivalent (they have different types)
@@ -725,11 +719,9 @@
const auto consumer = nullptr;
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
ASSERT_TRUE(IsValid(env, context.get()));
// %15 and %17 are not equivalent (having non-equivalent components)
@@ -806,15 +798,13 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
ASSERT_TRUE(TransformationRecordSynonymousConstants(7, 8).IsApplicable(
context.get(), transformation_context));
- fact_manager.AddFactIdIsIrrelevant(7);
+ transformation_context.GetFactManager()->AddFactIdIsIrrelevant(7);
ASSERT_FALSE(TransformationRecordSynonymousConstants(7, 8).IsApplicable(
context.get(), transformation_context));
}
@@ -843,15 +833,13 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
ASSERT_TRUE(TransformationRecordSynonymousConstants(7, 8).IsApplicable(
context.get(), transformation_context));
- fact_manager.AddFactIdIsIrrelevant(8);
+ transformation_context.GetFactManager()->AddFactIdIsIrrelevant(8);
ASSERT_FALSE(TransformationRecordSynonymousConstants(7, 8).IsApplicable(
context.get(), transformation_context));
}
@@ -879,11 +867,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
ASSERT_FALSE(TransformationRecordSynonymousConstants(7, 8).IsApplicable(
context.get(), transformation_context));
diff --git a/test/fuzz/transformation_replace_add_sub_mul_with_carrying_extended_test.cpp b/test/fuzz/transformation_replace_add_sub_mul_with_carrying_extended_test.cpp
index c4e8da2..0c575a3 100644
--- a/test/fuzz/transformation_replace_add_sub_mul_with_carrying_extended_test.cpp
+++ b/test/fuzz/transformation_replace_add_sub_mul_with_carrying_extended_test.cpp
@@ -59,11 +59,9 @@
const auto consumer = nullptr;
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Bad: |struct_fresh_id| must be fresh.
auto transformation_bad_1 =
TransformationReplaceAddSubMulWithCarryingExtended(14, 15);
@@ -147,11 +145,9 @@
const auto consumer = nullptr;
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Bad: The transformation cannot be applied to an instruction OpIMul that has
// different signedness of the types of operands.
auto transformation_bad_1 =
@@ -244,11 +240,9 @@
const auto consumer = nullptr;
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
auto transformation_bad_1 =
TransformationReplaceAddSubMulWithCarryingExtended(50, 15);
ASSERT_FALSE(
@@ -407,11 +401,9 @@
const auto consumer = nullptr;
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
auto transformation_good_1 =
TransformationReplaceAddSubMulWithCarryingExtended(80, 15);
ASSERT_TRUE(transformation_good_1.IsApplicable(context.get(),
diff --git a/test/fuzz/transformation_replace_boolean_constant_with_constant_binary_test.cpp b/test/fuzz/transformation_replace_boolean_constant_with_constant_binary_test.cpp
index ecffd29..5976f43 100644
--- a/test/fuzz/transformation_replace_boolean_constant_with_constant_binary_test.cpp
+++ b/test/fuzz/transformation_replace_boolean_constant_with_constant_binary_test.cpp
@@ -162,11 +162,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
std::vector<protobufs::IdUseDescriptor> uses_of_true = {
MakeIdUseDescriptor(41, MakeInstructionDescriptor(44, SpvOpStore, 12), 1),
MakeIdUseDescriptor(41, MakeInstructionDescriptor(46, SpvOpLogicalOr, 0),
@@ -537,11 +535,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
auto use_of_true_in_if = MakeIdUseDescriptor(
13, MakeInstructionDescriptor(10, SpvOpBranchConditional, 0), 0);
auto use_of_false_in_while = MakeIdUseDescriptor(
@@ -653,11 +649,9 @@
BuildModule(env, consumer, reference_shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
auto instruction_descriptor = MakeInstructionDescriptor(14, SpvOpPhi, 0);
auto id_use_descriptor = MakeIdUseDescriptor(8, instruction_descriptor, 0);
auto transformation = TransformationReplaceBooleanConstantWithConstantBinary(
@@ -732,11 +726,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
ASSERT_FALSE(TransformationReplaceBooleanConstantWithConstantBinary(
MakeIdUseDescriptor(
9, MakeInstructionDescriptor(50, SpvOpVariable, 0), 1),
diff --git a/test/fuzz/transformation_replace_constant_with_uniform_test.cpp b/test/fuzz/transformation_replace_constant_with_uniform_test.cpp
index ef77231..d1fe200 100644
--- a/test/fuzz/transformation_replace_constant_with_uniform_test.cpp
+++ b/test/fuzz/transformation_replace_constant_with_uniform_test.cpp
@@ -104,11 +104,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
protobufs::UniformBufferElementDescriptor blockname_a =
MakeUniformBufferElementDescriptor(0, 0, {0});
protobufs::UniformBufferElementDescriptor blockname_b =
@@ -467,11 +465,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
protobufs::UniformBufferElementDescriptor blockname_1 =
MakeUniformBufferElementDescriptor(0, 0, {0});
protobufs::UniformBufferElementDescriptor blockname_2 =
@@ -708,11 +704,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
protobufs::UniformBufferElementDescriptor blockname_0 =
MakeUniformBufferElementDescriptor(0, 0, {0});
@@ -785,11 +779,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
protobufs::UniformBufferElementDescriptor blockname_0 =
MakeUniformBufferElementDescriptor(0, 0, {0});
protobufs::UniformBufferElementDescriptor blockname_9 =
@@ -861,11 +853,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
protobufs::UniformBufferElementDescriptor blockname_3 =
MakeUniformBufferElementDescriptor(0, 0, {0});
@@ -951,11 +941,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
protobufs::UniformBufferElementDescriptor blockname_9 =
MakeUniformBufferElementDescriptor(0, 0, {0});
protobufs::UniformBufferElementDescriptor blockname_10 =
@@ -1168,11 +1156,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
const float float_array_values[5] = {1.0, 1.5, 1.75, 1.875, 1.9375};
uint32_t float_array_data[5];
memcpy(&float_array_data, &float_array_values, sizeof(float_array_values));
@@ -1511,11 +1497,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
protobufs::UniformBufferElementDescriptor blockname_a =
MakeUniformBufferElementDescriptor(0, 0, {0});
@@ -1571,11 +1555,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
auto int_descriptor = MakeUniformBufferElementDescriptor(0, 0, {0});
ASSERT_TRUE(AddFactHelper(&transformation_context, 2, int_descriptor));
diff --git a/test/fuzz/transformation_replace_copy_memory_with_load_store_test.cpp b/test/fuzz/transformation_replace_copy_memory_with_load_store_test.cpp
index baa7a9d..456e2b1 100644
--- a/test/fuzz/transformation_replace_copy_memory_with_load_store_test.cpp
+++ b/test/fuzz/transformation_replace_copy_memory_with_load_store_test.cpp
@@ -66,10 +66,9 @@
const auto consumer = nullptr;
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
ASSERT_TRUE(IsValid(env, context.get()));
auto instruction_descriptor_invalid_1 =
diff --git a/test/fuzz/transformation_replace_copy_object_with_store_load_test.cpp b/test/fuzz/transformation_replace_copy_object_with_store_load_test.cpp
index 5b78dee..732881e 100644
--- a/test/fuzz/transformation_replace_copy_object_with_store_load_test.cpp
+++ b/test/fuzz/transformation_replace_copy_object_with_store_load_test.cpp
@@ -78,10 +78,9 @@
const auto context =
BuildModule(env, consumer, reference_shader, kFuzzAssembleOption);
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
ASSERT_TRUE(IsValid(env, context.get()));
// Invalid: fresh_variable_id=10 is not fresh.
diff --git a/test/fuzz/transformation_replace_id_with_synonym_test.cpp b/test/fuzz/transformation_replace_id_with_synonym_test.cpp
index 61de95c..2254ea7 100644
--- a/test/fuzz/transformation_replace_id_with_synonym_test.cpp
+++ b/test/fuzz/transformation_replace_id_with_synonym_test.cpp
@@ -220,11 +220,9 @@
BuildModule(env, consumer, kComplexShader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
SetUpIdSynonyms(transformation_context.GetFactManager());
// %202 cannot replace %15 as in-operand 0 of %300, since %202 does not
@@ -295,11 +293,9 @@
BuildModule(env, consumer, kComplexShader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
SetUpIdSynonyms(transformation_context.GetFactManager());
auto global_constant_synonym = TransformationReplaceIdWithSynonym(
@@ -518,11 +514,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
transformation_context.GetFactManager()->AddFact(MakeSynonymFact(10, 100));
transformation_context.GetFactManager()->AddFact(MakeSynonymFact(8, 101));
@@ -650,11 +644,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
transformation_context.GetFactManager()->AddFact(MakeSynonymFact(14, 100));
// Replace %14 with %100 in:
@@ -815,11 +807,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Add synonym facts corresponding to the OpCopyObject operations that have
// been applied to all constants in the module.
transformation_context.GetFactManager()->AddFact(MakeSynonymFact(16, 100));
@@ -1303,11 +1293,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Add synonym fact relating %50 and %12.
transformation_context.GetFactManager()->AddFact(MakeSynonymFact(50, 12));
// Add synonym fact relating %51 and %14.
@@ -1414,11 +1402,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Add synonym fact relating %100 and %9.
transformation_context.GetFactManager()->AddFact(MakeSynonymFact(100, 9));
@@ -1475,11 +1461,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Add synonym fact relating %10 and %13 (equivalent integer constant with
// different signedness).
transformation_context.GetFactManager()->AddFact(MakeSynonymFact(10, 13));
@@ -1619,11 +1603,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Add synonym fact relating %10 and %13 (equivalent integer vectors with
// different signedness).
transformation_context.GetFactManager()->AddFact(MakeSynonymFact(14, 15));
@@ -1723,21 +1705,19 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
auto* op_i_add = context->get_def_use_mgr()->GetDef(18);
ASSERT_TRUE(op_i_add);
auto* op_f_add = context->get_def_use_mgr()->GetDef(19);
ASSERT_TRUE(op_f_add);
- fact_manager.AddFactDataSynonym(MakeDataDescriptor(12, {}),
- MakeDataDescriptor(13, {}));
- fact_manager.AddFactDataSynonym(MakeDataDescriptor(12, {}),
- MakeDataDescriptor(10, {}));
+ transformation_context.GetFactManager()->AddFactDataSynonym(
+ MakeDataDescriptor(12, {}), MakeDataDescriptor(13, {}));
+ transformation_context.GetFactManager()->AddFactDataSynonym(
+ MakeDataDescriptor(12, {}), MakeDataDescriptor(10, {}));
// Synonym differs only in signedness for OpIAdd.
ASSERT_TRUE(TransformationReplaceIdWithSynonym(
diff --git a/test/fuzz/transformation_replace_irrelevant_id_test.cpp b/test/fuzz/transformation_replace_irrelevant_id_test.cpp
index fc6115e..3b9e6bb 100644
--- a/test/fuzz/transformation_replace_irrelevant_id_test.cpp
+++ b/test/fuzz/transformation_replace_irrelevant_id_test.cpp
@@ -74,11 +74,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
SetUpIrrelevantIdFacts(transformation_context.GetFactManager());
auto instruction_21_descriptor =
@@ -127,11 +125,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
SetUpIrrelevantIdFacts(transformation_context.GetFactManager());
auto instruction_24_descriptor = MakeInstructionDescriptor(24, SpvOpIAdd, 0);
diff --git a/test/fuzz/transformation_replace_linear_algebra_instruction_test.cpp b/test/fuzz/transformation_replace_linear_algebra_instruction_test.cpp
index 0f29b00..83a5371 100644
--- a/test/fuzz/transformation_replace_linear_algebra_instruction_test.cpp
+++ b/test/fuzz/transformation_replace_linear_algebra_instruction_test.cpp
@@ -70,11 +70,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Tests linear algebra instructions.
auto instruction_descriptor = MakeInstructionDescriptor(24, SpvOpDot, 0);
auto transformation = TransformationReplaceLinearAlgebraInstruction(
@@ -245,11 +243,9 @@
BuildModule(env, consumer, reference_shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
auto instruction_descriptor =
MakeInstructionDescriptor(56, SpvOpTranspose, 0);
auto transformation = TransformationReplaceLinearAlgebraInstruction(
@@ -503,11 +499,9 @@
BuildModule(env, consumer, reference_shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
auto instruction_descriptor =
MakeInstructionDescriptor(17, SpvOpVectorTimesScalar, 0);
auto transformation = TransformationReplaceLinearAlgebraInstruction(
@@ -675,11 +669,9 @@
BuildModule(env, consumer, reference_shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
auto instruction_descriptor =
MakeInstructionDescriptor(56, SpvOpMatrixTimesScalar, 0);
auto transformation = TransformationReplaceLinearAlgebraInstruction(
@@ -963,11 +955,9 @@
BuildModule(env, consumer, reference_shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
auto instruction_descriptor =
MakeInstructionDescriptor(56, SpvOpVectorTimesMatrix, 0);
auto transformation = TransformationReplaceLinearAlgebraInstruction(
@@ -1298,11 +1288,9 @@
BuildModule(env, consumer, reference_shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
auto instruction_descriptor =
MakeInstructionDescriptor(56, SpvOpMatrixTimesVector, 0);
auto transformation = TransformationReplaceLinearAlgebraInstruction(
@@ -1685,11 +1673,9 @@
BuildModule(env, consumer, reference_shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
auto instruction_descriptor =
MakeInstructionDescriptor(56, SpvOpMatrixTimesMatrix, 0);
auto transformation = TransformationReplaceLinearAlgebraInstruction(
@@ -2159,11 +2145,9 @@
BuildModule(env, consumer, reference_shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
auto instruction_descriptor =
MakeInstructionDescriptor(47, SpvOpOuterProduct, 0);
auto transformation = TransformationReplaceLinearAlgebraInstruction(
@@ -2397,11 +2381,9 @@
BuildModule(env, consumer, reference_shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
auto instruction_descriptor = MakeInstructionDescriptor(24, SpvOpDot, 0);
auto transformation = TransformationReplaceLinearAlgebraInstruction(
{27, 28, 29, 30, 31, 32}, instruction_descriptor);
diff --git a/test/fuzz/transformation_replace_load_store_with_copy_memory_test.cpp b/test/fuzz/transformation_replace_load_store_with_copy_memory_test.cpp
index 93572c5..ede112f 100644
--- a/test/fuzz/transformation_replace_load_store_with_copy_memory_test.cpp
+++ b/test/fuzz/transformation_replace_load_store_with_copy_memory_test.cpp
@@ -109,10 +109,9 @@
const auto consumer = nullptr;
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
ASSERT_TRUE(IsValid(env, context.get()));
auto bad_instruction_descriptor_1 =
diff --git a/test/fuzz/transformation_replace_opphi_id_from_dead_predecessor_test.cpp b/test/fuzz/transformation_replace_opphi_id_from_dead_predecessor_test.cpp
index 4b91b6d..d55b761 100644
--- a/test/fuzz/transformation_replace_opphi_id_from_dead_predecessor_test.cpp
+++ b/test/fuzz/transformation_replace_opphi_id_from_dead_predecessor_test.cpp
@@ -75,10 +75,9 @@
const auto consumer = nullptr;
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
ASSERT_TRUE(IsValid(env, context.get()));
// Record the fact that blocks 20, 17, 28 are dead.
@@ -117,10 +116,9 @@
const auto consumer = nullptr;
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
ASSERT_TRUE(IsValid(env, context.get()));
// Record the fact that blocks 20, 17, 28 are dead.
diff --git a/test/fuzz/transformation_replace_opselect_with_conditional_branch_test.cpp b/test/fuzz/transformation_replace_opselect_with_conditional_branch_test.cpp
index 1aa7752..bd1a06f 100644
--- a/test/fuzz/transformation_replace_opselect_with_conditional_branch_test.cpp
+++ b/test/fuzz/transformation_replace_opselect_with_conditional_branch_test.cpp
@@ -86,11 +86,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// %20 is not an OpSelect instruction.
ASSERT_FALSE(TransformationReplaceOpSelectWithConditionalBranch(20, 100, 101)
.IsApplicable(context.get(), transformation_context));
@@ -190,11 +188,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
auto transformation =
TransformationReplaceOpSelectWithConditionalBranch(20, 100, 101);
ASSERT_TRUE(
diff --git a/test/fuzz/transformation_replace_parameter_with_global_test.cpp b/test/fuzz/transformation_replace_parameter_with_global_test.cpp
index 1e0145e..102aa1b 100644
--- a/test/fuzz/transformation_replace_parameter_with_global_test.cpp
+++ b/test/fuzz/transformation_replace_parameter_with_global_test.cpp
@@ -116,11 +116,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Parameter id is invalid.
ASSERT_FALSE(TransformationReplaceParameterWithGlobal(50, 50, 51)
.IsApplicable(context.get(), transformation_context));
@@ -326,26 +324,26 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
- fact_manager.AddFactIdIsIrrelevant(10);
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
+ transformation_context.GetFactManager()->AddFactIdIsIrrelevant(10);
{
TransformationReplaceParameterWithGlobal transformation(20, 10, 21);
ASSERT_TRUE(
transformation.IsApplicable(context.get(), transformation_context));
transformation.Apply(context.get(), &transformation_context);
- ASSERT_TRUE(fact_manager.PointeeValueIsIrrelevant(21));
+ ASSERT_TRUE(
+ transformation_context.GetFactManager()->PointeeValueIsIrrelevant(21));
}
{
TransformationReplaceParameterWithGlobal transformation(22, 11, 23);
ASSERT_TRUE(
transformation.IsApplicable(context.get(), transformation_context));
transformation.Apply(context.get(), &transformation_context);
- ASSERT_FALSE(fact_manager.PointeeValueIsIrrelevant(23));
+ ASSERT_FALSE(
+ transformation_context.GetFactManager()->PointeeValueIsIrrelevant(23));
}
}
diff --git a/test/fuzz/transformation_replace_params_with_struct_test.cpp b/test/fuzz/transformation_replace_params_with_struct_test.cpp
index af3d4d3..97a6228 100644
--- a/test/fuzz/transformation_replace_params_with_struct_test.cpp
+++ b/test/fuzz/transformation_replace_params_with_struct_test.cpp
@@ -124,11 +124,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// |parameter_id| is empty.
ASSERT_FALSE(
TransformationReplaceParamsWithStruct({}, 90, 91, {{33, 92}, {90, 93}})
@@ -373,11 +371,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
{
// Try to replace parameters in "increasing" order of their declaration.
TransformationReplaceParamsWithStruct transformation({16, 17, 19}, 70, 71,
diff --git a/test/fuzz/transformation_set_function_control_test.cpp b/test/fuzz/transformation_set_function_control_test.cpp
index 901105b..8e72984 100644
--- a/test/fuzz/transformation_set_function_control_test.cpp
+++ b/test/fuzz/transformation_set_function_control_test.cpp
@@ -118,11 +118,9 @@
const auto consumer = nullptr;
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// %36 is not a function
ASSERT_FALSE(TransformationSetFunctionControl(36, SpvFunctionControlMaskNone)
.IsApplicable(context.get(), transformation_context));
diff --git a/test/fuzz/transformation_set_loop_control_test.cpp b/test/fuzz/transformation_set_loop_control_test.cpp
index 671302e..6d9cfdd 100644
--- a/test/fuzz/transformation_set_loop_control_test.cpp
+++ b/test/fuzz/transformation_set_loop_control_test.cpp
@@ -256,11 +256,9 @@
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// These are the loop headers together with the selection controls of their
// merge instructions:
// %10 None
@@ -939,11 +937,9 @@
BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
TransformationSetLoopControl transformation(
10, SpvLoopControlPeelCountMask | SpvLoopControlPartialCountMask, 4, 4);
diff --git a/test/fuzz/transformation_set_memory_operands_mask_test.cpp b/test/fuzz/transformation_set_memory_operands_mask_test.cpp
index eb16c3e..e3130ba 100644
--- a/test/fuzz/transformation_set_memory_operands_mask_test.cpp
+++ b/test/fuzz/transformation_set_memory_operands_mask_test.cpp
@@ -93,11 +93,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Not OK: the instruction is not a memory access.
ASSERT_FALSE(TransformationSetMemoryOperandsMask(
MakeInstructionDescriptor(21, SpvOpAccessChain, 0),
@@ -338,11 +336,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
{
TransformationSetMemoryOperandsMask transformation(
MakeInstructionDescriptor(21, SpvOpCopyMemory, 0),
diff --git a/test/fuzz/transformation_set_selection_control_test.cpp b/test/fuzz/transformation_set_selection_control_test.cpp
index a6a9e33..a3b586c 100644
--- a/test/fuzz/transformation_set_selection_control_test.cpp
+++ b/test/fuzz/transformation_set_selection_control_test.cpp
@@ -103,11 +103,9 @@
const auto consumer = nullptr;
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// %44 is not a block
ASSERT_FALSE(
TransformationSetSelectionControl(44, SpvSelectionControlFlattenMask)
diff --git a/test/fuzz/transformation_split_block_test.cpp b/test/fuzz/transformation_split_block_test.cpp
index 6d94a42..f2f1c7b 100644
--- a/test/fuzz/transformation_split_block_test.cpp
+++ b/test/fuzz/transformation_split_block_test.cpp
@@ -89,11 +89,9 @@
const auto consumer = nullptr;
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// No split before OpVariable
ASSERT_FALSE(TransformationSplitBlock(
MakeInstructionDescriptor(8, SpvOpVariable, 0), 100)
@@ -202,11 +200,9 @@
const auto consumer = nullptr;
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
auto split_1 = TransformationSplitBlock(
MakeInstructionDescriptor(5, SpvOpStore, 0), 100);
ASSERT_TRUE(split_1.IsApplicable(context.get(), transformation_context));
@@ -418,11 +414,9 @@
const auto consumer = nullptr;
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Illegal to split between the merge and the conditional branch.
ASSERT_FALSE(
TransformationSplitBlock(
@@ -550,11 +544,9 @@
const auto consumer = nullptr;
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Illegal to split between the merge and the conditional branch.
ASSERT_FALSE(TransformationSplitBlock(
MakeInstructionDescriptor(9, SpvOpSwitch, 0), 100)
@@ -686,11 +678,9 @@
const auto consumer = nullptr;
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// We cannot split before OpPhi instructions, since the number of incoming
// blocks may not appropriately match after splitting.
ASSERT_FALSE(
@@ -741,11 +731,9 @@
const auto consumer = nullptr;
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
ASSERT_TRUE(
TransformationSplitBlock(MakeInstructionDescriptor(21, SpvOpPhi, 0), 100)
.IsApplicable(context.get(), transformation_context));
@@ -823,11 +811,9 @@
const auto consumer = nullptr;
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Record the fact that block 8 is dead.
transformation_context.GetFactManager()->AddFactBlockIsDead(8);
@@ -913,11 +899,9 @@
const auto consumer = nullptr;
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
auto split = TransformationSplitBlock(
MakeInstructionDescriptor(217, SpvOpImageSampleImplicitLod, 0), 500);
ASSERT_FALSE(split.IsApplicable(context.get(), transformation_context));
diff --git a/test/fuzz/transformation_store_test.cpp b/test/fuzz/transformation_store_test.cpp
index fb38aa1..e48a551 100644
--- a/test/fuzz/transformation_store_test.cpp
+++ b/test/fuzz/transformation_store_test.cpp
@@ -94,11 +94,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
transformation_context.GetFactManager()->AddFactValueOfPointeeIsIrrelevant(
27);
transformation_context.GetFactManager()->AddFactValueOfPointeeIsIrrelevant(
@@ -398,12 +396,10 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
- fact_manager.AddFactBlockIsDead(5);
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
+ transformation_context.GetFactManager()->AddFactBlockIsDead(5);
ASSERT_FALSE(
TransformationStore(15, 13, MakeInstructionDescriptor(27, SpvOpReturn, 0))
diff --git a/test/fuzz/transformation_swap_commutable_operands_test.cpp b/test/fuzz/transformation_swap_commutable_operands_test.cpp
index d042316..0d2493f 100644
--- a/test/fuzz/transformation_swap_commutable_operands_test.cpp
+++ b/test/fuzz/transformation_swap_commutable_operands_test.cpp
@@ -112,11 +112,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Tests existing commutative instructions
auto instructionDescriptor = MakeInstructionDescriptor(22, SpvOpIAdd, 0);
auto transformation =
@@ -339,11 +337,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
auto instructionDescriptor = MakeInstructionDescriptor(22, SpvOpIAdd, 0);
auto transformation =
TransformationSwapCommutableOperands(instructionDescriptor);
diff --git a/test/fuzz/transformation_swap_conditional_branch_operands_test.cpp b/test/fuzz/transformation_swap_conditional_branch_operands_test.cpp
index 76c45ef..398adfe 100644
--- a/test/fuzz/transformation_swap_conditional_branch_operands_test.cpp
+++ b/test/fuzz/transformation_swap_conditional_branch_operands_test.cpp
@@ -69,11 +69,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Invalid instruction descriptor.
ASSERT_FALSE(TransformationSwapConditionalBranchOperands(
MakeInstructionDescriptor(26, SpvOpPhi, 0), 26)
diff --git a/test/fuzz/transformation_toggle_access_chain_instruction_test.cpp b/test/fuzz/transformation_toggle_access_chain_instruction_test.cpp
index 8b097a1..754e0da 100644
--- a/test/fuzz/transformation_toggle_access_chain_instruction_test.cpp
+++ b/test/fuzz/transformation_toggle_access_chain_instruction_test.cpp
@@ -112,11 +112,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Tests existing access chain instructions
auto instructionDescriptor =
MakeInstructionDescriptor(18, SpvOpAccessChain, 0);
@@ -308,11 +306,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
auto instructionDescriptor =
MakeInstructionDescriptor(18, SpvOpAccessChain, 0);
auto transformation =
diff --git a/test/fuzz/transformation_vector_shuffle_test.cpp b/test/fuzz/transformation_vector_shuffle_test.cpp
index 71f44d9..44eb573 100644
--- a/test/fuzz/transformation_vector_shuffle_test.cpp
+++ b/test/fuzz/transformation_vector_shuffle_test.cpp
@@ -86,11 +86,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
transformation_context.GetFactManager()->AddFactDataSynonym(
MakeDataDescriptor(10, {}), MakeDataDescriptor(12, {0}));
transformation_context.GetFactManager()->AddFactDataSynonym(
@@ -489,11 +487,9 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
// Cannot insert before the OpVariables of a function.
ASSERT_FALSE(
TransformationVectorShuffle(
@@ -606,21 +602,19 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
TransformationVectorShuffle transformation(
MakeInstructionDescriptor(100, SpvOpReturn, 0), 200, 12, 112, {2, 0});
ASSERT_TRUE(
transformation.IsApplicable(context.get(), transformation_context));
transformation.Apply(context.get(), &transformation_context);
ASSERT_TRUE(IsValid(env, context.get()));
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(12, {0}),
- MakeDataDescriptor(200, {1})));
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(112, {0}),
- MakeDataDescriptor(200, {0})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(12, {0}), MakeDataDescriptor(200, {1})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(112, {0}), MakeDataDescriptor(200, {0})));
}
TEST(TransformationVectorShuffle, HandlesIrrelevantIds2) {
@@ -688,22 +682,20 @@
const auto context = BuildModule(env, consumer, shader, kFuzzAssembleOption);
ASSERT_TRUE(IsValid(env, context.get()));
- FactManager fact_manager(context.get());
spvtools::ValidatorOptions validator_options;
- TransformationContext transformation_context(&fact_manager,
- validator_options);
-
- fact_manager.AddFactIdIsIrrelevant(112);
+ TransformationContext transformation_context(
+ MakeUnique<FactManager>(context.get()), validator_options);
+ transformation_context.GetFactManager()->AddFactIdIsIrrelevant(112);
TransformationVectorShuffle transformation(
MakeInstructionDescriptor(100, SpvOpReturn, 0), 200, 12, 112, {2, 0});
ASSERT_TRUE(
transformation.IsApplicable(context.get(), transformation_context));
transformation.Apply(context.get(), &transformation_context);
ASSERT_TRUE(IsValid(env, context.get()));
- ASSERT_TRUE(fact_manager.IsSynonymous(MakeDataDescriptor(12, {0}),
- MakeDataDescriptor(200, {1})));
- ASSERT_FALSE(fact_manager.IsSynonymous(MakeDataDescriptor(112, {0}),
- MakeDataDescriptor(200, {0})));
+ ASSERT_TRUE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(12, {0}), MakeDataDescriptor(200, {1})));
+ ASSERT_FALSE(transformation_context.GetFactManager()->IsSynonymous(
+ MakeDataDescriptor(112, {0}), MakeDataDescriptor(200, {0})));
}
} // namespace