diff options
| author | Richard-Qin-X <richard.qin.001@gmail.com> | 2026-08-09 18:31:49 +0800 |
|---|---|---|
| committer | Richard-Qin-X <richard.qin.001@gmail.com> | 2026-08-09 18:31:49 +0800 |
| commit | 379ff50dcc7ccf977379aee68fa9d10f69065d23 (patch) | |
| tree | e0fac3952d46d0bbcaea32bcfc6087c95fff2992 /backend/include/rcc/CodeGen/CompilationUnit.h | |
| parent | 495c675771f43cfa12ab7a426a538be72fec1805 (diff) | |
| download | rcc-project-379ff50dcc7ccf977379aee68fa9d10f69065d23.tar.gz rcc-project-379ff50dcc7ccf977379aee68fa9d10f69065d23.tar.xz | |
[MC] Implement RV64GC assembly emission
Diffstat (limited to 'backend/include/rcc/CodeGen/CompilationUnit.h')
| -rw-r--r-- | backend/include/rcc/CodeGen/CompilationUnit.h | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/backend/include/rcc/CodeGen/CompilationUnit.h b/backend/include/rcc/CodeGen/CompilationUnit.h index d798438..14fd86f 100644 --- a/backend/include/rcc/CodeGen/CompilationUnit.h +++ b/backend/include/rcc/CodeGen/CompilationUnit.h @@ -3,6 +3,7 @@ #ifndef RCC_CODEGEN_COMPILATIONUNIT_H #define RCC_CODEGEN_COMPILATIONUNIT_H +#include "rcc/CodeGen/GlobalObject.h" #include "rcc/CodeGen/StableID.h" #include "rcc/Support/Error.h" @@ -28,6 +29,7 @@ public: ~CompilationUnit(); [[nodiscard]] Expected<MachineFunction *> createMachineFunction(std::string Name); + [[nodiscard]] Expected<GlobalObjectDesc *> addGlobalObject(GlobalObjectDesc Object); [[nodiscard]] std::size_t functionCount() const noexcept { return Functions.size(); @@ -40,6 +42,15 @@ public: [[nodiscard]] MachineFunction *function(MachineFunctionStableID ID) noexcept; [[nodiscard]] const MachineFunction *function(MachineFunctionStableID ID) const noexcept; + [[nodiscard]] std::size_t globalObjectCount() const noexcept { + return GlobalObjects.size(); + } + + [[nodiscard]] GlobalObjectDesc *globalObjectAt(std::size_t Index) noexcept; + [[nodiscard]] const GlobalObjectDesc *globalObjectAt(std::size_t Index) const noexcept; + [[nodiscard]] GlobalObjectDesc *globalObject(std::string_view Name) noexcept; + [[nodiscard]] const GlobalObjectDesc *globalObject(std::string_view Name) const noexcept; + [[nodiscard]] Expected<void> verify() const; private: @@ -53,6 +64,8 @@ private: std::vector<std::unique_ptr<MachineFunction>> Functions; std::unordered_map<std::string, std::size_t, StringHash, std::equal_to<>> FunctionNameToIndex; + std::vector<std::unique_ptr<GlobalObjectDesc>> GlobalObjects; + std::unordered_map<std::string, std::size_t, StringHash, std::equal_to<>> GlobalNameToIndex; StableIDGenerator<MachineFunctionStableID> FunctionIDGenerator; }; |
