Commit 093e7cbe authored by zygzagZ's avatar zygzagZ

Refactor Clang-Tidy

parent f63ff4e9
...@@ -48,7 +48,7 @@ size_t ClassInfo::calculateSize() { ...@@ -48,7 +48,7 @@ size_t ClassInfo::calculateSize() {
size += var->type->size(); size += var->type->size();
} }
for (auto f : functions) { for (const auto& f : functions) {
f->offset = functionCount++; f->offset = functionCount++;
} }
......
//
// Created by zygzagz on 05.01.2021.
//
#include <cassert> #include <cassert>
#include <iostream> #include <iostream>
#include <filesystem> #include <filesystem>
...@@ -17,7 +13,7 @@ vector<BasicBlockPtr> QuadrupleGenerator::compileFunction(FunctionInfoPtr f) { ...@@ -17,7 +13,7 @@ vector<BasicBlockPtr> QuadrupleGenerator::compileFunction(FunctionInfoPtr f) {
f->block->accept(this); f->block->accept(this);
int id = 1; int id = 1;
for (auto v : vars) { for (const auto& v : vars) {
if (v->constExpr && !v->info) { if (v->constExpr && !v->info) {
v->name = to_string(v->val); v->name = to_string(v->val);
continue; continue;
...@@ -32,13 +28,13 @@ vector<BasicBlockPtr> QuadrupleGenerator::compileFunction(FunctionInfoPtr f) { ...@@ -32,13 +28,13 @@ vector<BasicBlockPtr> QuadrupleGenerator::compileFunction(FunctionInfoPtr f) {
flushBasicBlock(); flushBasicBlock();
block = nullptr; block = nullptr;
for (auto b : blocks) { for (const auto& b : blocks) {
b->finishQuads(); b->finishQuads();
} }
int label = 1; int label = 1;
for (auto b : blocks) { for (const auto& b : blocks) {
for (auto q : b->quads) { for (const auto& q : b->quads) {
if (auto l = dynamic_pointer_cast<QLabel>(q)) { if (auto l = dynamic_pointer_cast<QLabel>(q)) {
if (!l->label.empty()) if (!l->label.empty())
l->label = to_string(label++) + "_" + l->label; l->label = to_string(label++) + "_" + l->label;
...@@ -48,7 +44,7 @@ vector<BasicBlockPtr> QuadrupleGenerator::compileFunction(FunctionInfoPtr f) { ...@@ -48,7 +44,7 @@ vector<BasicBlockPtr> QuadrupleGenerator::compileFunction(FunctionInfoPtr f) {
} }
} }
for (auto v : vars) { for (const auto& v : vars) {
if (v->info) if (v->info)
v->info->loc = nullptr; v->info->loc = nullptr;
} }
...@@ -61,38 +57,6 @@ vector<BasicBlockPtr> QuadrupleGenerator::compileFunction(FunctionInfoPtr f) { ...@@ -61,38 +57,6 @@ vector<BasicBlockPtr> QuadrupleGenerator::compileFunction(FunctionInfoPtr f) {
return ret; return ret;
} }
/*
- kiedy przechodzę między blokami:
- pierwsze wejście w while/fora: ustawienie używanych wartości w pętli w zależności od ostatnich wartości przed pętlą
- dump przed wejściem w stmt fora, dump po sparsowaniu fora
- różnice ustawić w bloku przed i tak samo za nim
- if: przed ifem dump, za ifem dorobić else i ustawić diff
- ifelse: przed ifem dump, w środku dump, po elsie dump
- wszystkie poza zmienionymi w bloku ustawiamy na koniec bloku
wskazówki do implementacji:
- w momencie przypisywania do zmiennej lokalnej chcemy powiadomić najświeższy detektor zmian lokalnych
- po zakończeniu bloku detektor zmian odpowiednio poprzypisuje w pożądanych miejcach odpowiednie definicje
- po zakończeniu bloku detektor powiadomi kolejny z rzędu detektor o najnowszych instancjach zmienionych zmiennych
- detektor powinien działać ponad blokami prostymi
funkcje detektora:
- dodanie zmiennej VarInfoPtr do zbioru, przyporządkowanie jej najnowszej definicji (i zapamiętanie oryginalnej)
- umiejętność porównania dwóch zbiorów poprzez iterację
- każdy element który występuje tylko w jednym
- para jeśli el. występuje w obu zbiorach
implementacja detektora:
- map<VarInfoPtr, pair<orig, new>>
dalej: << i >> dla BB
porobić graf BB
złapać blocki i podumpować envy dookoła flow
dopisać sumę dumpów
*/
BasicBlockPtr QuadrupleGenerator::flushBasicBlock() { BasicBlockPtr QuadrupleGenerator::flushBasicBlock() {
auto ret = block; auto ret = block;
if (block) { if (block) {
......
//
// Created by zygzagz on 05.01.2021.
//
#ifndef ZAD2_QUADRUPLEGENERATOR_H #ifndef ZAD2_QUADRUPLEGENERATOR_H
#define ZAD2_QUADRUPLEGENERATOR_H #define ZAD2_QUADRUPLEGENERATOR_H
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment