}
static
-u32 addPredBlocksSingle(
+void addPredBlocksSingle(
map<u32, vector<vector<RoseInstruction>>> &predProgramLists,
vector<RoseInstruction> &program) {
auto prog = flattenProgram(prog_blocks);
program.insert(end(program), begin(prog), end(prog));
- return 0; // No iterator.
}
static
}
static
-u32 addPredBlocksMulti(build_context &bc,
+void addPredBlocksMulti(build_context &bc,
map<u32, vector<vector<RoseInstruction>>> &predProgramLists,
vector<RoseInstruction> &program) {
assert(!predProgramLists.empty());
}
program.insert(end(program), begin(sparse_program), end(sparse_program));
-
- return iter_offset;
}
static
-u32 addPredBlocks(build_context &bc,
- map<u32, vector<vector<RoseInstruction>>> &predProgramLists,
- vector<RoseInstruction> &program,
- bool force_sparse_iter) {
+void addPredBlocks(build_context &bc,
+ map<u32, vector<vector<RoseInstruction>>> &predProgramLists,
+ vector<RoseInstruction> &program) {
const size_t num_preds = predProgramLists.size();
if (num_preds == 0) {
program = flattenProgram({program});
- return 0; // No iterator.
- } else if (!force_sparse_iter && num_preds == 1) {
- return addPredBlocksSingle(predProgramLists, program);
- } else {
- return addPredBlocksMulti(bc, predProgramLists, program);
+ return;
}
+
+ if (num_preds == 1) {
+ addPredBlocksSingle(predProgramLists, program);
+ return;
+ }
+
+ addPredBlocksMulti(bc, predProgramLists, program);
}
/**
// Add blocks to deal with non-root edges (triggered by sparse iterator or
// mmbit_isset checks). This operation will flatten the program up to this
// point.
- addPredBlocks(bc, predProgramLists, program, false);
+ addPredBlocks(bc, predProgramLists, program);
// If we have a root program, replace the END instruction with it. Note
// that the root program has already been flattened.
vector<RoseInstruction> program;
if (!predProgramLists.empty()) {
- addPredBlocks(bc, predProgramLists, program, false);
+ addPredBlocks(bc, predProgramLists, program);
}
if (hasEodAnchoredSuffix(build)) {
assert(program.back().code() == ROSE_INSTR_END);
program.pop_back();
}
- addPredBlocks(bc, predProgramLists, program, false);
+ addPredBlocks(bc, predProgramLists, program);
}
static