Pagini
Workshops
Parteneri
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
sesiuni:compiler [2014/07/06 14:11] mbarbulescu [When and where] |
sesiuni:compiler [2014/07/15 08:07] (current) freescale [Required software] |
||
---|---|---|---|
Line 2: | Line 2: | ||
== When and where == | == When and where == | ||
- | === **Time** 14 July 2014 - 18 July 2014, 18:00-21:00 === | + | ===== Time 14 July 2014 - 18 July 2014, 18:00-21:00 ===== |
- | === **Place** //EG306// === | + | ===== Room EG306 ===== |
== Introduction == | == Introduction == | ||
LLVM is an open-source compiler infrastructure used in many [[http://llvm.org/Users.html|commercial and academic projects ]]. It is written in C++ and it has a very modular design which allows all sorts of tools to be built on top of it: compilers, interpreters, static analyzers and so on. | LLVM is an open-source compiler infrastructure used in many [[http://llvm.org/Users.html|commercial and academic projects ]]. It is written in C++ and it has a very modular design which allows all sorts of tools to be built on top of it: compilers, interpreters, static analyzers and so on. | ||
Line 35: | Line 36: | ||
* Good knowledge of C/C++ | * Good knowledge of C/C++ | ||
- | == Registration == | + | == Agenda == |
- | **Registration is open until Sunday, 28 June 2014.** | + | * [[sesiuni:compiler:intro| Introduction]] |
+ | * [[sesiuni:compiler:layout| The LLVM Directory Layout]] | ||
+ | * [[sesiuni:compiler:libtooling | Clang LibTooling]] | ||
+ | * [[sesiuni:compiler:ast | The Clang AST]] | ||
+ | * [[sesiuni:compiler:highlighting | C Syntax Highlighting]] | ||
+ | * [[sesiuni:compiler:ir | The LLVM IR]] | ||
+ | * [[sesiuni:compiler:opt | The LLVM Optimization Engine]] | ||
+ | * C Tips & Tricks | ||
+ | |||
+ | == Feedback == | ||
+ | You can use these forms to tell us what you thought about the content presented each day, what you did or didn't understand, what you'd like us to discuss again the following day etc. Any suggestions or comments are more than welcome. | ||
+ | * [[https://docs.google.com/forms/d/1kpgT56cChl-44F7uPGRwV8rc76ADmLjnPwmnKkeLCjM/viewform?usp=send_form | Feedback Day 1]] | ||
+ | * [[https://docs.google.com/forms/d/1LKtL6GH-sVQwwYkXPHwSqSObeevL7LDoMzjEd3iu17A/viewform?usp=send_form | Feedback Day 2]] | ||
+ | * [[https://docs.google.com/forms/d/1fZRGdToeOVUnvK3r6nyrjxUUnBlFcXG279qdOvuRHp4/viewform?usp=send_form | Feedback Day 3]] | ||
+ | * [[https://docs.google.com/forms/d/1qzxeN7UfuMxgOuUPIgHkrQkOpfQKrDxXNtWETINAGSo/viewform?usp=send_form | Feedback Day 4]] | ||
+ | * [[https://docs.google.com/forms/d/1eIsIcot03bUlHzdv31MWEVOGwrG462q98ojoc-bVPGU/viewform?usp=send_form | Feedback Day 5]] | ||
- | Please fill in [[https://docs.google.com/forms/d/1KED9bX12uAjitUaFPvgpGO9_OQqQvH3gywOdyqyTTEI/viewform?usp=send_form|this form]]. | + | == Participants == |
+ | | Mihnea Dobrescu-Balaur | | ||
+ | | Adrian Nitu | | ||
+ | | Gabriel Florentin Balaban | | ||
+ | | Radu Stoenescu | | ||
+ | | Ionel Popescu | | ||
+ | | Dan-Stefan Dragan | | ||
+ | | Andrei Preda | | ||
+ | | Nurberdiyev Pudak | | ||
+ | | Cristina-Ioana Brinza | | ||
+ | | Albert Zaharovits | | ||
+ | | Stefan Stamate | | ||
+ | | Roxana Istrate | | ||
+ | | Roberta Dobrescu | | ||
+ | | Calin-Cristian Cruceru | | ||
+ | | Cozmin Velciu | | ||
== Required software == | == Required software == | ||
The required software will be installed on the stations in the lab, but in case you want to bring your laptop you should try to install the following: | The required software will be installed on the stations in the lab, but in case you want to bring your laptop you should try to install the following: | ||
* LLVM (you can use the instructions [[http://clang.llvm.org/get_started.html|here]] - note that you can generate files for several IDEs using [[http://llvm.org/docs/CMake.html|CMake]]) | * LLVM (you can use the instructions [[http://clang.llvm.org/get_started.html|here]] - note that you can generate files for several IDEs using [[http://llvm.org/docs/CMake.html|CMake]]) | ||
+ | * Something for viewing .dot files (you can use XDot on Linux or GVEdit on Windows) | ||
* An IDE is recommended | * An IDE is recommended | ||
- | <note warning>Note that this list is subject to additions as more content is added to this page</note> | + | * Nice to have: LLVM IR syntax highlighting - alternatives include [[http://amishne.github.io/llvm-ir-editor/|this Eclipse plugin]], the vim plugin in the llvm/utils/vim directory and respectively the Emacs plugin in llvm/utils/emacs |
+ | <note warning>You should use a Debug build of LLVM. If you're not sure, try to run | ||
+ | <code bash> | ||
+ | clang -S -emit-llvm file.c -o file.ll | ||
+ | opt -loop-unroll -debug-pass=Structure file.ll -S -o file.ll | ||
+ | </code> | ||
+ | You should get an output similar to this: | ||
+ | <code> | ||
+ | Pass Arguments: -targetlibinfo -datalayout -notti -basictti -x86tti -domtree -loops -loop-simplify -lcssa -scalar-evolution -loop-simplify -lcssa -loop-unroll -preverify -verify -print-module | ||
+ | Target Library Information | ||
+ | Data Layout | ||
+ | No target information | ||
+ | Target independent code generator's TTI | ||
+ | X86 Target Transform Info | ||
+ | ModulePass Manager | ||
+ | FunctionPass Manager | ||
+ | Dominator Tree Construction | ||
+ | Natural Loop Information | ||
+ | Loop Pass Manager | ||
+ | Canonicalize natural loops | ||
+ | Loop-Closed SSA Form Pass | ||
+ | Scalar Evolution Analysis | ||
+ | Loop Pass Manager | ||
+ | Canonicalize natural loops | ||
+ | Loop-Closed SSA Form Pass | ||
+ | Unroll loops | ||
+ | Preliminary module verification | ||
+ | Module Verifier | ||
+ | Print module to stderr | ||
+ | </code> | ||
+ | </note> | ||
== Organizers == | == Organizers == | ||
==== Diana Vasile ==== | ==== Diana Vasile ==== |