Files
revng-revng/include/revng/FunctionIsolation/StructInitializers.h
Alessandro Di Federico 95a216c574 StructInitializers: add createCall; EmitBody flag
Split createReturn into a reusable createCall that emits the
struct-initializer call without wrapping it in a return. An EmitBody
flag lets callers create the declaration but skip the body, useful
when the body would later be stripped.
2026-06-09 13:50:49 +02:00

30 lines
743 B
C++

#pragma once
//
// This file is distributed under the MIT License. See LICENSE.md for details.
//
#include "revng/Support/OpaqueFunctionsPool.h"
namespace revng {
class IRBuilder;
} // namespace revng
class StructInitializers {
private:
OpaqueFunctionsPool<llvm::StructType *> Pool;
llvm::LLVMContext &Context;
bool EmitBody = true;
public:
StructInitializers(llvm::Module *M, bool EmitBody = true);
public:
llvm::CallInst *createCall(revng::IRBuilder &Builder,
llvm::StructType *ReturnType,
llvm::ArrayRef<llvm::Value *> Values);
llvm::Instruction *createReturn(revng::IRBuilder &Builder,
llvm::ArrayRef<llvm::Value *> Values);
};