MCPcopy Create free account
hub / github.com/KhronosGroup/SPIRV-Tools / Apply

Method Apply

source/fuzz/transformation_add_dead_continue.cpp:121–141  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

119}
120
121void TransformationAddDeadContinue::Apply(
122 opt::IRContext* ir_context,
123 TransformationContext* transformation_context) const {
124 auto bb_from = ir_context->cfg()->block(message_.from_block());
125 auto continue_block =
126 bb_from->IsLoopHeader()
127 ? bb_from->ContinueBlockId()
128 : ir_context->GetStructuredCFGAnalysis()->LoopContinueBlock(
129 message_.from_block());
130 assert(continue_block && "message_.from_block must be in a loop.");
131 fuzzerutil::AddUnreachableEdgeAndUpdateOpPhis(
132 ir_context, bb_from, ir_context->cfg()->block(continue_block),
133 fuzzerutil::MaybeGetBoolConstant(ir_context, *transformation_context,
134 message_.continue_condition_value(),
135 false),
136 message_.phi_id());
137
138 // Invalidate all analyses
139 ir_context->InvalidateAnalysesExceptFor(
140 opt::IRContext::Analysis::kAnalysisNone);
141}
142
143protobufs::Transformation TransformationAddDeadContinue::ToMessage() const {
144 protobufs::Transformation result;

Callers

nothing calls this directly

Calls 9

MaybeGetBoolConstantFunction · 0.85
IsLoopHeaderMethod · 0.80
ContinueBlockIdMethod · 0.80
LoopContinueBlockMethod · 0.80
blockMethod · 0.45
cfgMethod · 0.45

Tested by

no test coverage detected