fix bug of big stack cost
This commit is contained in:
@ -12,6 +12,7 @@ class IRBuilder : public ASTNodeVirturalVisitor {
|
||||
std::shared_ptr<ModuleItem> prog;
|
||||
std::shared_ptr<TypeDefItem> cur_class;
|
||||
std::shared_ptr<FunctionDefItem> cur_func;
|
||||
std::shared_ptr<BlockItem> cur_alloca_block;
|
||||
std::shared_ptr<BlockItem> cur_block;
|
||||
std::shared_ptr<BlockItem> main_init_block;
|
||||
std::string cur_class_name;
|
||||
|
39
include/naivebackend/naivebackend.h
Normal file
39
include/naivebackend/naivebackend.h
Normal file
@ -0,0 +1,39 @@
|
||||
#pragma once
|
||||
#include <ios>
|
||||
#include <memory>
|
||||
#include <ostream>
|
||||
#include <string>
|
||||
#include "IR/IR_basic.h"
|
||||
class RISCVAsmItemBase {
|
||||
public:
|
||||
RISCVAsmItemBase() = default;
|
||||
virtual ~RISCVAsmItemBase() = default;
|
||||
virtual void RecursivePrint(std::ostream &os) const = 0;
|
||||
};
|
||||
namespace NaiveBackend {
|
||||
class RISCVConstStrItem : public RISCVAsmItemBase {
|
||||
public:
|
||||
RISCVConstStrItem() = default;
|
||||
~RISCVConstStrItem() = default;
|
||||
void RecursivePrint(std::ostream &os) const override;
|
||||
};
|
||||
class RISCVGlobalVarItem : public RISCVAsmItemBase {
|
||||
public:
|
||||
RISCVGlobalVarItem() = default;
|
||||
~RISCVGlobalVarItem() = default;
|
||||
void RecursivePrint(std::ostream &os) const override;
|
||||
};
|
||||
class RISCVFuncItem : public RISCVAsmItemBase {
|
||||
public:
|
||||
RISCVFuncItem() = default;
|
||||
~RISCVFuncItem() = default;
|
||||
void RecursivePrint(std::ostream &os) const override;
|
||||
};
|
||||
class RISCVProgItem : public RISCVAsmItemBase {
|
||||
public:
|
||||
RISCVProgItem() = default;
|
||||
~RISCVProgItem() = default;
|
||||
void RecursivePrint(std::ostream &os) const override;
|
||||
};
|
||||
}
|
||||
void GenerateNaiveASM(std::ostream &os, std::shared_ptr<ModuleItem> prog);
|
Reference in New Issue
Block a user