aboutsummaryrefslogtreecommitdiff
path: root/source/20-codegen-compiler/CodegenDecl.cpp
diff options
context:
space:
mode:
authorrtk0c <[email protected]>2022-07-17 23:09:00 -0700
committerrtk0c <[email protected]>2022-07-17 23:09:00 -0700
commit8c2b1bd5bd85667a2ea24ec3aa85cbdd97f9ea1c (patch)
tree80b12277b667747aa4f18ebcc3931c2ea618cb1e /source/20-codegen-compiler/CodegenDecl.cpp
parentc6e57dc94e532442ffa0bd57a16206217adbca92 (diff)
Changeset: 85 Work on codegen (a big blob of changes about various things, giving up on writing a clear commit message)
- stuff along the lines of cleaning up store process - remove completed TODOs - move code generation out of parser loop - ^^^ also introduce some weird bugs of DeclXxx::name field disappearing -- maybe fixed, maybe didn't, can't reliably reproduce - add infra to mangle (not included in codegen yet, also not tested) - convert SourceFile storage map to node map, ensuring pointer stability (was broken before) - buildsystem asan and UBsan applying to all targest
Diffstat (limited to 'source/20-codegen-compiler/CodegenDecl.cpp')
-rw-r--r--source/20-codegen-compiler/CodegenDecl.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/source/20-codegen-compiler/CodegenDecl.cpp b/source/20-codegen-compiler/CodegenDecl.cpp
index 7cf21ce..9e88cfb 100644
--- a/source/20-codegen-compiler/CodegenDecl.cpp
+++ b/source/20-codegen-compiler/CodegenDecl.cpp
@@ -1,7 +1,23 @@
#include "CodegenDecl.hpp"
+#include "CodegenUtils.hpp"
+
#include <Utils.hpp>
+const std::string& DeclStruct::GetMangledName() const {
+ if (mangledName.empty()) {
+ mangledName = Utils::MakeMangledName(name, container);
+ }
+ return mangledName;
+}
+
+const std::string& DeclEnum::GetMangledName() const {
+ if (mangledName.empty()) {
+ mangledName = Utils::MakeMangledName(name, container);
+ }
+ return mangledName;
+}
+
static EnumValuePattern NextPattern(EnumValuePattern val) {
return (EnumValuePattern)(val + 1);
}