From 8c2b1bd5bd85667a2ea24ec3aa85cbdd97f9ea1c Mon Sep 17 00:00:00 2001 From: rtk0c Date: Sun, 17 Jul 2022 23:09:00 -0700 Subject: 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 --- source/20-codegen-compiler/CodegenDecl.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'source/20-codegen-compiler/CodegenDecl.cpp') 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 +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); } -- cgit v1.2.3-70-g09d2