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/13 21:06] freescale [Agenda] Added LLVM directory layout link |
sesiuni:compiler [2014/07/15 08:07] (current) freescale [Required software] |
||
---|---|---|---|
Line 37: | Line 37: | ||
== Agenda == | == Agenda == | ||
- | * C/C++ Build Tools: Preprocessor, Compiler, Assembler, Linker | + | * [[sesiuni:compiler:intro| Introduction]] |
- | * General Compiler Structure: Front-end, Back-end, Optimizations | + | * [[sesiuni:compiler:layout| The LLVM Directory Layout]] |
- | * Front-end: Lexical Analysis, Syntax Analysis, Semantic Analysis | + | * [[sesiuni:compiler:libtooling | Clang LibTooling]] |
- | * [[llvmlayout | The LLVM Directory Layout]] | + | * [[sesiuni:compiler:ast | The Clang AST]] |
- | * Clang LibTooling | + | * [[sesiuni:compiler:highlighting | C Syntax Highlighting]] |
- | * The Clang AST | + | * [[sesiuni:compiler:ir | The LLVM IR]] |
- | * C Syntax Highlighting | + | * [[sesiuni:compiler:opt | The LLVM Optimization Engine]] |
- | * The LLVM IR | + | |
- | * The LLVM Optimization Engine | + | |
* C Tips & Tricks | * C Tips & Tricks | ||
Line 80: | Line 78: | ||
* An IDE is recommended | * An IDE is recommended | ||
* 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 | * 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 ==== |