Your SlideShare is downloading. ×
GCC, GNU compiler collection
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

GCC, GNU compiler collection

1,848
views

Published on

Published in: Technology

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,848
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
42
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. GCC : GNU compilers collection Alberto Bustamante Reyes ( www.albertobustamante.com ) Author:
  • 2. Brief introduction
    • Compiler system developed by GNU Project
    • 3. Distributed by FSF under GPL License
    • 4. Written in C / C++
    • 5. Default compiler for Unix and Mac OS X
    • 6. Also ported to Windows (MinGW)
  • 7. Brief introduction
    • Originally developed for C language
    • 8. Several front-ends added to support different languages:
      • C / C++ (gcc / g++)
      • 9. Java (gcj)
      • 10. Objective-C / Objective-C++ (gobjc / gobjc++ )
      • 11. Fortran (gfortran)
  • 12. Structure
    • Generic compiler:
    • GCC compiler:
  • 16. Structure
    • GCC Compiler (before 2005)
    Source code AST RTL RTL Object code FRONT END BACK END
  • 17. Structure
    • GCC Compiler (before 2005)
    Source code AST RTL RTL Object code FRONT END BACK END
  • 18. Structure
    • GCC Compiler (before 2005)
    Source code AST RTL RTL Object code FRONT END BACK END SSA Tree project: OPTIMIZATIONS
  • 19. Structure
    • GCC Compiler (after 2005)
    Source code AST GENERIC GIMPLE RTL FRONT END
  • 20. Structure
    • GCC Compiler (after 2005)
    Source code AST GENERIC GIMPLE RTL FRONT END Language dependent Language independent
  • 21. Structure
    • GCC Compiler (after 2005)
    Source code AST GENERIC GIMPLE RTL FRONT END Language dependent Language independent MIDDLE END
  • 22. Structure: GENERIC & GIMPLE
    • Why two kinds of trees?
      • GIMPLE is a simplified subset of GENERIC
    GIMPLE GENERIC
  • 23. Structure: GENERIC & GIMPLE
    • GENERIC -> (Gimplifier) -> GIMPLE
    GIMPLIFIER if (foo ( a + b, c)) c = b ++ / a end if return c t1 = a +b t2 = foo (t1, c) If (t2 != 0 ) <L1, L2> L1: t3 = b b = b + 1 c = t3 / a goto L3 L2: L3: return c
  • 24. Structure: GENERIC & GIMPLE
    • Developed by SSA Tree Project
    • 25. SSA
      • Developed by IBM in 1980
      • 26. Single Static Assignment
      • 27. Example:
    y := 1 y := 2 x := y y1 := 1 y2 := 2 x1 := y2
  • 28. Structure: Middle end GIMPLE Tree SSA Optimizer RTL
  • 29. Structure:Middle end
    • SSA Tree Optimization
      • Dead code elimination
    y := 1 y := 2 x := y y1 := 1 y2 := 2 x1 := y2
  • 30. Structure:Middle end
    • SSA Tree Optimization
      • Dead code elimination
      • 31. Partial redundancy elimination
    if (some_condition) { // some code y = x + 4; }else { // other code } z = x + 4; if (some_condition) { // some code y = x + 4; t = y; }else { // other code t = x + 4; } z = t;
  • 32. Structure:Middle end
    • SSA Tree Optimization
      • Dead code elimination
      • 33. Partial redundancy elimination
      • 34. Global value numbering
    w := 3 x := 3 y := x + 4 z := w + 4 w := 3 x := w y := w + 4 z := y
  • 35. Structure:Middle end
    • SSA Tree Optimization
      • Dead code elimination
      • 36. Partial redundancy elimination
      • 37. Global value numbering
      • 38. Sparse conditional constant propagation
  • 39. Structure:Middle end
    • SSA Tree Optimization
      • Dead code elimination
      • 40. Partial redundancy elimination
      • 41. Global value numbering
      • 42. Sparse conditional constant propagation
      • 43. Scalar replacement of aggregates
  • 44. Structure: RTL
    • Output of the Middle End
    • 45. Processor dependent
    • 46. Looks like Lisp S-expressions:
    (set:SI (reg:SI 140) (plus:SI (reg:SI 138) (reg:SI 139)))
  • 47. Structure: summary Source code AST GENERIC GIMPLE Tree SSA Optimizer RTL Optimized RTL Object code FRONT END MIDDLE END BACK END
  • 48. Advantages of using GCC
    • Reliable
      • Suppported by GNU & FSF
      • 49. Active and noumerous developer team
      • 50. One of the most popular compilers
      • 51. Lots of test cases (users)
    • Several front ends
    • 52. Free!!
  • 53. More information available at…
    • GCC : http://gcc.gnu.org
    • 54. GCC Wiki : http://gcc.gnu.org/wiki
    • 55. SSA Tree Project: http://gcc.gnu.org/projects/tree-ssa/
    • 56. GNU : http://www.gnu.org
    • 57. Free Software Foundation : http://www.fsf.org
    • 58. MinGW: http://www.mingw.org
  • 59. The End Thanks for watching
  • 60. GCC : GNU compilers collection Alberto Bustamante Reyes ( www.albertobustamante.com ) Author: