Commit 093e7cbe authored by zygzagZ's avatar zygzagZ

Refactor Clang-Tidy

parent f63ff4e9
......@@ -48,7 +48,7 @@ size_t ClassInfo::calculateSize() {
size += var->type->size();
}
for (auto f : functions) {
for (const auto& f : functions) {
f->offset = functionCount++;
}
......
//
// Created by zygzagz on 05.01.2021.
//
#include <cassert>
#include <iostream>
#include <filesystem>
......@@ -17,7 +13,7 @@ vector<BasicBlockPtr> QuadrupleGenerator::compileFunction(FunctionInfoPtr f) {
f->block->accept(this);
int id = 1;
for (auto v : vars) {
for (const auto& v : vars) {
if (v->constExpr && !v->info) {
v->name = to_string(v->val);
continue;
......@@ -32,13 +28,13 @@ vector<BasicBlockPtr> QuadrupleGenerator::compileFunction(FunctionInfoPtr f) {
flushBasicBlock();
block = nullptr;
for (auto b : blocks) {
for (const auto& b : blocks) {
b->finishQuads();
}
int label = 1;
for (auto b : blocks) {
for (auto q : b->quads) {
for (const auto& b : blocks) {
for (const auto& q : b->quads) {
if (auto l = dynamic_pointer_cast<QLabel>(q)) {
if (!l->label.empty())
l->label = to_string(label++) + "_" + l->label;
......@@ -48,7 +44,7 @@ vector<BasicBlockPtr> QuadrupleGenerator::compileFunction(FunctionInfoPtr f) {
}
}
for (auto v : vars) {
for (const auto& v : vars) {
if (v->info)
v->info->loc = nullptr;
}
......@@ -61,38 +57,6 @@ vector<BasicBlockPtr> QuadrupleGenerator::compileFunction(FunctionInfoPtr f) {
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() {
auto ret = block;
if (block) {
......
//
// Created by zygzagz on 05.01.2021.
//
#ifndef 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