47 lines
1.2 KiB
C++
47 lines
1.2 KiB
C++
#pragma once
|
|
#include "IR/IR_basic.h"
|
|
#include "cfg.h"
|
|
#include "tools.h"
|
|
|
|
void LiveAnalysis(CFGType &cfg);
|
|
|
|
namespace opt {
|
|
class ForceDef : public ActionItem {
|
|
public:
|
|
std::string var_full;
|
|
LLVMType ty;
|
|
ForceDef() = default;
|
|
void RecursivePrint(std::ostream &os) const {
|
|
throw std::runtime_error("ForceDef instruction is not an actual LLVM IR instruction");
|
|
}
|
|
};
|
|
class ForceUse : public ActionItem {
|
|
public:
|
|
std::string var_full;
|
|
ForceUse() = default;
|
|
void RecursivePrint(std::ostream &os) const {
|
|
throw std::runtime_error("ForceUse instruction is not an actual LLVM IR instruction");
|
|
}
|
|
};
|
|
class LoadSpilledArgs : public ActionItem {
|
|
public:
|
|
size_t arg_id; // [8,+inf)
|
|
std::string var_full;
|
|
LLVMType ty;
|
|
LoadSpilledArgs() = default;
|
|
void RecursivePrint(std::ostream &os) const {
|
|
throw std::runtime_error("LoadSpilledArgs instruction is not an actual LLVM IR instruction");
|
|
}
|
|
};
|
|
|
|
class StoreSpilledArgs : public ActionItem {
|
|
public:
|
|
size_t arg_id; // [8,+inf)
|
|
std::string var_full;
|
|
LLVMType ty;
|
|
StoreSpilledArgs() = default;
|
|
void RecursivePrint(std::ostream &os) const {
|
|
throw std::runtime_error("StoreSpilledArgs instruction is not an actual LLVM IR instruction");
|
|
}
|
|
};
|
|
} // namespace opt
|