[cpl] [Wiki] Sugestii de editare

Diana Picus diana.picus at gmail.com
Fri Nov 6 12:57:40 EET 2015


Buna,

Multumim pentru feedback :)

2015-11-06 11:39 GMT+02:00 Marius Ungureanu via cpl <cpl at cursuri.cs.pub.ro>:
>
>
> 1. Eliminarea GetElementPtrConstantExpr din cadrul laboratorului, si
> inlocuirea lui cu GetElementPtrInst (unde e aplicabil).
> GetElementPtrConstantExpr este o clasa interna llvm, nu poate fi
> accesata in cadrul generarii de IR de catre utilizatorul API-ului.
>
>  ** expresiile constante (BinaryConstantExpr, GetElementPtrConstantExpr etc).
>
>  ** va trebui să îi calculați adresa folosind o constantă de tip GEP
> (GetElementPtrConstantExpr).

Mi se pare destul de importanta distinctia dintre
GetElementPtrConstantExpr si GetElementPtrInst - primul se calculeaza
la compilare, al doilea la rulare. Desigur, daca generati
GetElementPtrInst si rulati opt cu O3 probabil va deveni
GetElementPtrConstantExpr, dar asta nu inseamna ca nu e bine sa stiti
despre expresiile constante. Uneori le veti vedea inlined in cadrul
altor instructiuni in reprezentarea textuala.

Legat de API - instantele de expresii constante se obtin prin metodele
statice ale lui ConstantExpr. Initial pusesem ConstantExpr in
laborator, nu stiu de ce l-am scos. My bad, l-am pus la loc, sper ca e
mai ok acum.

>
>
> 2. Introducerea unei note prin care se explica faptul ca o expresie de
> tip instructiune reprezinta valoarea operatiei. De exemplu, un
> BinaryOperator reprezinta valoarea sumei celor 2 int32-uri.

Am adaugat si asta.

>
>
> 3. Modificarea script-ului 'clang -S -emit-llvm' in 'clang -S
> -emit-llvm main.c -o main.ll | opt -S -mem2reg main.ll'. Din moment ce
> codul generat de noi nu va trebui sa contina alocari, ar fi de
> preferat sa avem script-ul in forma necesara pentru laborator.

E mult spus script pt ce era acolo, tinand cont ca nici macar nu era o
comanda completa :) Era doar o sugestie, in nici un caz nu exista
asteptarea sa generati fix ce genereaza clang - ideea era ca puteti sa
va uitati la ce face clang pt inspiratie.

Anyway, am pus si o comanda completa (nitpick: poti folosi '-o -' ca
sa ii spui lui clang sa scrie la stdout, in felul asta chiar
functioneaza pipe-ul catre opt si nu mai trebuie sa folosesti un
fisier intermediar).

>
>
> 4. Linkurile din laborator catre documentatia doxygen llvm sunt
> incorecte. Segmentele 'docs/' si 'html' din urmatoarele linkuri sunt
> in plus:
>
>  ** http://llvm.org/docs/doxygen/html/classllvm_1_1Instruction.html ->
> http://llvm.org/doxygen/classllvm_1_1Instruction.html
>
>  ** http://llvm.org/docs/doxygen/html/classllvm_1_1Type.html ->
> http://llvm.org/doxygen/classllvm_1_1Type.html
>
>  ** http://llvm.org/docs/doxygen/html/classllvm_1_1Value.html ->
> http://llvm.org/doxygen/classllvm_1_1Value.html
>

Interesting. Le-am modificat si pe alea.

Mai asteptam si alte sugestii :)

Numai bine,
Diana

>
> Mersi,
> Marius
>
> [0] - http://ocw.cs.pub.ro/courses/cpl/labs/05
> _______________________________________________
> cpl mailing list
> cpl at cursuri.cs.pub.ro
> http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/cpl


More information about the cpl mailing list