GCC 4.8, State of the Onion                       Dodji Seketeli <dodji@redhat.com>              Distro Recipes Conference...
Breakup of the talkGCC Development PlanSignificant Changes in 4.8   Diagnostic   Language support   Optimizations and Middl...
GCC Development PlanGCC Development PlanSignificant Changes in 4.8   Diagnostic   Language support   Optimizations and Midd...
GCC Development Plan     2 phases in the development time line of GCCDodji Seketeli <dodji@redhat.com> GCC 4.8, State of t...
GCC Development Plan     2 phases in the development time line of GCC             Phase 1: New features; at least 6 months...
GCC Development Plan     2 phases in the development time line of GCC             Phase 1: New features; at least 6 months...
GCC Development Plan     2 phases in the development time line of GCC             Phase 1: New features; at least 6 months...
GCC Development Plan     2 phases in the development time line of GCC             Phase 1: New features; at least 6 months...
Diagnostics changesGCC Development PlanSignificant Changes in 4.8   Diagnostic   Language support   Optimizations and Middl...
-fdiagnostics-show-caret OptionDisplays source code in diagnostic messagest.cc:4:19: fatal error: foo: No such file or dir...
-Wsizeof-pointer-memaccess OptionWarns about the suspicious use of memory access function of theC library, like in:memset ...
-ftrack-macro-location Option     First appeared in 4.7 as an unstable tech preview.Dodji Seketeli <dodji@redhat.com> GCC ...
-ftrack-macro-location Option     First appeared in 4.7 as an unstable tech preview.     Ironed out, stabilized and set by...
-ftrack-macro-location OptionOnce upon a time, an error in the expansion of a macro was pain(in the bottom of the back) to...
Option -ftrack-macro-locationNow, with this option, combined with -fdiagnostics-show-caret ourback is relieved:===========...
Changes in langage supportGCC Development PlanSignificant Changes in 4.8   Diagnostic   Language support   Optimizations an...
C++11     New version 7 of ABI introduced. But for now, version 2 of     the ABI remains the default.Dodji Seketeli <dodji...
C++11     New version 7 of ABI introduced. But for now, version 2 of     the ABI remains the default.     Better support f...
C++11     New version 7 of ABI introduced. But for now, version 2 of     the ABI remains the default.     Better support f...
C++11     New version 7 of ABI introduced. But for now, version 2 of     the ABI remains the default.     Better support f...
C++11     New version 7 of ABI introduced. But for now, version 2 of     the ABI remains the default.     Better support f...
C++11     Alignment Expressions;Dodji Seketeli <dodji@redhat.com> GCC 4.8, State of the Onion   13/23
C++11     Alignment Expressions;  struct alignas (a_type_of_5_bytes) another_type  {    char c;    int i;  };Dodji Seketel...
C++11     Inherited ConstructorsDodji Seketeli <dodji@redhat.com> GCC 4.8, State of the Onion   14/23
C++11     Inherited Constructors struct A {   A(int);   A(const char*); }; struct B : public A {   using A::A; // <-- all ...
Other languagesSupport of Fortran and Go was greatly improved too.Dodji Seketeli <dodji@redhat.com> GCC 4.8, State of the ...
Optimizations and Middle End changesGCC Development PlanSignificant Changes in 4.8   Diagnostic   Language support   Optimi...
General optimizer improvements     DWARF 4 is now default debug info format. GDB 7.5,     Valgrind 3.8.0 and elfutils 0.15...
General optimizer improvements     DWARF 4 is now default debug info format. GDB 7.5,     Valgrind 3.8.0 and elfutils 0.15...
General optimizer improvements     DWARF 4 is now default debug info format. GDB 7.5,     Valgrind 3.8.0 and elfutils 0.15...
General optimizer improvements     DWARF 4 is now default debug info format. GDB 7.5,     Valgrind 3.8.0 and elfutils 0.15...
General optimizer improvements     DWARF 4 is now default debug info format. GDB 7.5,     Valgrind 3.8.0 and elfutils 0.15...
General optimizer improvements     DWARF 4 is now default debug info format. GDB 7.5,     Valgrind 3.8.0 and elfutils 0.15...
processor supportGCC Development PlanSignificant Changes in 4.8   Diagnostic   Language support   Optimizations and Middle ...
CPUs support     AArch64, aka ARM 64. Just added for Cortex-A53 and     Cortex-A57 processors -mcpu=cortex-a53 and     -mc...
CPUs support     AArch64, aka ARM 64. Just added for Cortex-A53 and     Cortex-A57 processors -mcpu=cortex-a53 and     -mc...
CPUs support     AArch64, aka ARM 64. Just added for Cortex-A53 and     Cortex-A57 processors -mcpu=cortex-a53 and     -mc...
CPUs support     AArch64, aka ARM 64. Just added for Cortex-A53 and     Cortex-A57 processors -mcpu=cortex-a53 and     -mc...
CPUs support     AArch64, aka ARM 64. Just added for Cortex-A53 and     Cortex-A57 processors -mcpu=cortex-a53 and     -mc...
CPUs support     AArch64, aka ARM 64. Just added for Cortex-A53 and     Cortex-A57 processors -mcpu=cortex-a53 and     -mc...
x86 CPU Support, continued     Function Multi-versioning in G++: Create multiple versions of     a function, each one targ...
x86 CPU Support, continued     Function Multi-versioning in G++: Create multiple versions of     a function, each one targ...
Architecture ChangeGCC Development PlanSignificant Changes in 4.8   Diagnostic   Language support   Optimizations and Middl...
Architecture ChangesGCC is now implemented in C++03.Dodji Seketeli <dodji@redhat.com> GCC 4.8, State of the Onion   22/23
Architecture ChangesGCC is now implemented in C++03.This allows:     Doing the language change progressively. Now one coul...
Architecture ChangesGCC is now implemented in C++03.This allows:     Doing the language change progressively. Now one coul...
Architecture ChangesGCC is now implemented in C++03.This allows:     Doing the language change progressively. Now one coul...
Architecture ChangesGCC is now implemented in C++03.This allows:     Doing the language change progressively. Now one coul...
Architecture ChangesGCC is now implemented in C++03.This allows:     Doing the language change progressively. Now one coul...
Merci !http://gcc.gnu.org - Drink the Cool Aid.http://gcc.gnu.org/git - Code source repositorygit clone git://gcc.gnu.org/...
Upcoming SlideShare
Loading in...5
×

Distro Recipes 2013: What&rsquo;s new in gcc 4.8?

486

Published on

Published in: Technology, Self Improvement
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
486
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
10
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Distro Recipes 2013: What&rsquo;s new in gcc 4.8?

  1. 1. GCC 4.8, State of the Onion Dodji Seketeli <dodji@redhat.com> Distro Recipes Conference - April 2013 - Paris, FranceDodji Seketeli <dodji@redhat.com> GCC 4.8, State of the Onion 1/23
  2. 2. Breakup of the talkGCC Development PlanSignificant Changes in 4.8 Diagnostic Language support Optimizations and Middle End Processors Architecture ChangeDodji Seketeli <dodji@redhat.com> GCC 4.8, State of the Onion 2/23
  3. 3. GCC Development PlanGCC Development PlanSignificant Changes in 4.8 Diagnostic Language support Optimizations and Middle End Processors Architecture ChangeDodji Seketeli <dodji@redhat.com> GCC 4.8, State of the Onion 3/23
  4. 4. GCC Development Plan 2 phases in the development time line of GCCDodji Seketeli <dodji@redhat.com> GCC 4.8, State of the Onion 4/23
  5. 5. GCC Development Plan 2 phases in the development time line of GCC Phase 1: New features; at least 6 monthsDodji Seketeli <dodji@redhat.com> GCC 4.8, State of the Onion 4/23
  6. 6. GCC Development Plan 2 phases in the development time line of GCC Phase 1: New features; at least 6 months Phase 2: Stabilization; the time it takes.Dodji Seketeli <dodji@redhat.com> GCC 4.8, State of the Onion 4/23
  7. 7. GCC Development Plan 2 phases in the development time line of GCC Phase 1: New features; at least 6 months Phase 2: Stabilization; the time it takes. GCC 4.7 released in March 2012Dodji Seketeli <dodji@redhat.com> GCC 4.8, State of the Onion 4/23
  8. 8. GCC Development Plan 2 phases in the development time line of GCC Phase 1: New features; at least 6 months Phase 2: Stabilization; the time it takes. GCC 4.7 released in March 2012 GCC 4.8 released in March 2013Dodji Seketeli <dodji@redhat.com> GCC 4.8, State of the Onion 4/23
  9. 9. Diagnostics changesGCC Development PlanSignificant Changes in 4.8 Diagnostic Language support Optimizations and Middle End Processors Architecture ChangeDodji Seketeli <dodji@redhat.com> GCC 4.8, State of the Onion 5/23
  10. 10. -fdiagnostics-show-caret OptionDisplays source code in diagnostic messagest.cc:4:19: fatal error: foo: No such file or directory#include <foo> ^compilation terminated.This option is on by default in in 4.8! Dodji Seketeli <dodji@redhat.com> GCC 4.8, State of the Onion 6/23
  11. 11. -Wsizeof-pointer-memaccess OptionWarns about the suspicious use of memory access function of theC library, like in:memset (ptr, 0, sizeof (ptr));This option is turned on by -WallDodji Seketeli <dodji@redhat.com> GCC 4.8, State of the Onion 7/23
  12. 12. -ftrack-macro-location Option First appeared in 4.7 as an unstable tech preview.Dodji Seketeli <dodji@redhat.com> GCC 4.8, State of the Onion 8/23
  13. 13. -ftrack-macro-location Option First appeared in 4.7 as an unstable tech preview. Ironed out, stabilized and set by default in 4.8Dodji Seketeli <dodji@redhat.com> GCC 4.8, State of the Onion 8/23
  14. 14. -ftrack-macro-location OptionOnce upon a time, an error in the expansion of a macro was pain(in the bottom of the back) to diagnose:============> test.c <============== 1 #define SHIFT(OP0, OP1) 2 OP0 << OP1 3 4 int 5 main () 6 { 7 return SHIFT (1, 1.1); 8 }=========================================> Error Diagnostics <=============test.c: In function ’int main()’:test.c:7:10: error: invalid operands of types ’int’ and ’double’ to binary ’operator<<’=============================================== Dodji Seketeli <dodji@redhat.com> GCC 4.8, State of the Onion 9/23
  15. 15. Option -ftrack-macro-locationNow, with this option, combined with -fdiagnostics-show-caret ourback is relieved:============> test.c <============== 1 #define SHIFT(OP0, OP1) 2 OP0 << OP1 3 4 int 5 main () 6 { 7 return SHIFT (1, 1.1); 8 }====================================> Ce que le compilateur nous dira maintenant <========test.c: In function ’main’:test.c:2:6: error: invalid operands to binary << (have ’int’ and ’double’) OP0 << OP1 ^test.c:7:10: note: in expansion of macro ’SHIFT’ return SHIFT (1, 1.1); ^================================================= Dodji Seketeli <dodji@redhat.com> GCC 4.8, State of the Onion 10/23
  16. 16. Changes in langage supportGCC Development PlanSignificant Changes in 4.8 Diagnostic Language support Optimizations and Middle End Processors Architecture ChangeDodji Seketeli <dodji@redhat.com> GCC 4.8, State of the Onion 11/23
  17. 17. C++11 New version 7 of ABI introduced. But for now, version 2 of the ABI remains the default.Dodji Seketeli <dodji@redhat.com> GCC 4.8, State of the Onion 12/23
  18. 18. C++11 New version 7 of ABI introduced. But for now, version 2 of the ABI remains the default. Better support for the memory model of C++11.Dodji Seketeli <dodji@redhat.com> GCC 4.8, State of the Onion 12/23
  19. 19. C++11 New version 7 of ABI introduced. But for now, version 2 of the ABI remains the default. Better support for the memory model of C++11. Support of C++11 atomic operators.Dodji Seketeli <dodji@redhat.com> GCC 4.8, State of the Onion 12/23
  20. 20. C++11 New version 7 of ABI introduced. But for now, version 2 of the ABI remains the default. Better support for the memory model of C++11. Support of C++11 atomic operators. Thread variable - key word thread local thread_local int i;Dodji Seketeli <dodji@redhat.com> GCC 4.8, State of the Onion 12/23
  21. 21. C++11 New version 7 of ABI introduced. But for now, version 2 of the ABI remains the default. Better support for the memory model of C++11. Support of C++11 atomic operators. Thread variable - key word thread local thread_local int i; Generalized attributes struct [[gnu::packed]] a_type_of_5_bytes { char premier; int second; };Dodji Seketeli <dodji@redhat.com> GCC 4.8, State of the Onion 12/23
  22. 22. C++11 Alignment Expressions;Dodji Seketeli <dodji@redhat.com> GCC 4.8, State of the Onion 13/23
  23. 23. C++11 Alignment Expressions; struct alignas (a_type_of_5_bytes) another_type { char c; int i; };Dodji Seketeli <dodji@redhat.com> GCC 4.8, State of the Onion 13/23
  24. 24. C++11 Inherited ConstructorsDodji Seketeli <dodji@redhat.com> GCC 4.8, State of the Onion 14/23
  25. 25. C++11 Inherited Constructors struct A { A(int); A(const char*); }; struct B : public A { using A::A; // <-- all constructors of B are generated here };B b0("coucou"); // OKB b1(10); // OK, too.Dodji Seketeli <dodji@redhat.com> GCC 4.8, State of the Onion 14/23
  26. 26. Other languagesSupport of Fortran and Go was greatly improved too.Dodji Seketeli <dodji@redhat.com> GCC 4.8, State of the Onion 15/23
  27. 27. Optimizations and Middle End changesGCC Development PlanSignificant Changes in 4.8 Diagnostic Language support Optimizations and Middle End Processors Architecture ChangeDodji Seketeli <dodji@redhat.com> GCC 4.8, State of the Onion 16/23
  28. 28. General optimizer improvements DWARF 4 is now default debug info format. GDB 7.5, Valgrind 3.8.0 and elfutils 0.154 were updated accordingly.Dodji Seketeli <dodji@redhat.com> GCC 4.8, State of the Onion 17/23
  29. 29. General optimizer improvements DWARF 4 is now default debug info format. GDB 7.5, Valgrind 3.8.0 and elfutils 0.154 were updated accordingly. New -Og : faster compilation, good debugging experience, reasonable speed. Better than -0O.Dodji Seketeli <dodji@redhat.com> GCC 4.8, State of the Onion 17/23
  30. 30. General optimizer improvements DWARF 4 is now default debug info format. GDB 7.5, Valgrind 3.8.0 and elfutils 0.154 were updated accordingly. New -Og : faster compilation, good debugging experience, reasonable speed. Better than -0O. Better scalability on very big functions.Dodji Seketeli <dodji@redhat.com> GCC 4.8, State of the Onion 17/23
  31. 31. General optimizer improvements DWARF 4 is now default debug info format. GDB 7.5, Valgrind 3.8.0 and elfutils 0.154 were updated accordingly. New -Og : faster compilation, good debugging experience, reasonable speed. Better than -0O. Better scalability on very big functions. Better LTO support.Dodji Seketeli <dodji@redhat.com> GCC 4.8, State of the Onion 17/23
  32. 32. General optimizer improvements DWARF 4 is now default debug info format. GDB 7.5, Valgrind 3.8.0 and elfutils 0.154 were updated accordingly. New -Og : faster compilation, good debugging experience, reasonable speed. Better than -0O. Better scalability on very big functions. Better LTO support. Address Sanitizer: New fast memory error detector on intel and ppc GNU/Linux and intel/Darwin. -fsanitize=address.Dodji Seketeli <dodji@redhat.com> GCC 4.8, State of the Onion 17/23
  33. 33. General optimizer improvements DWARF 4 is now default debug info format. GDB 7.5, Valgrind 3.8.0 and elfutils 0.154 were updated accordingly. New -Og : faster compilation, good debugging experience, reasonable speed. Better than -0O. Better scalability on very big functions. Better LTO support. Address Sanitizer: New fast memory error detector on intel and ppc GNU/Linux and intel/Darwin. -fsanitize=address. Thread Sanitizer: Data race memory error detector, on x86-64 GNU/Linux. -fsanitize=thread.Dodji Seketeli <dodji@redhat.com> GCC 4.8, State of the Onion 17/23
  34. 34. processor supportGCC Development PlanSignificant Changes in 4.8 Diagnostic Language support Optimizations and Middle End Processors Architecture ChangeDodji Seketeli <dodji@redhat.com> GCC 4.8, State of the Onion 18/23
  35. 35. CPUs support AArch64, aka ARM 64. Just added for Cortex-A53 and Cortex-A57 processors -mcpu=cortex-a53 and -mcpu=cortex-a57.Dodji Seketeli <dodji@redhat.com> GCC 4.8, State of the Onion 19/23
  36. 36. CPUs support AArch64, aka ARM 64. Just added for Cortex-A53 and Cortex-A57 processors -mcpu=cortex-a53 and -mcpu=cortex-a57. Better code generation for several existing ARM chips, including better auto-vectorization.Dodji Seketeli <dodji@redhat.com> GCC 4.8, State of the Onion 19/23
  37. 37. CPUs support AArch64, aka ARM 64. Just added for Cortex-A53 and Cortex-A57 processors -mcpu=cortex-a53 and -mcpu=cortex-a57. Better code generation for several existing ARM chips, including better auto-vectorization. Better support for AVRDodji Seketeli <dodji@redhat.com> GCC 4.8, State of the Onion 19/23
  38. 38. CPUs support AArch64, aka ARM 64. Just added for Cortex-A53 and Cortex-A57 processors -mcpu=cortex-a53 and -mcpu=cortex-a57. Better code generation for several existing ARM chips, including better auto-vectorization. Better support for AVR In x86 landDodji Seketeli <dodji@redhat.com> GCC 4.8, State of the Onion 19/23
  39. 39. CPUs support AArch64, aka ARM 64. Just added for Cortex-A53 and Cortex-A57 processors -mcpu=cortex-a53 and -mcpu=cortex-a57. Better code generation for several existing ARM chips, including better auto-vectorization. Better support for AVR In x86 land Support for new Broadwell architecture.Dodji Seketeli <dodji@redhat.com> GCC 4.8, State of the Onion 19/23
  40. 40. CPUs support AArch64, aka ARM 64. Just added for Cortex-A53 and Cortex-A57 processors -mcpu=cortex-a53 and -mcpu=cortex-a57. Better code generation for several existing ARM chips, including better auto-vectorization. Better support for AVR In x86 land Support for new Broadwell architecture. New built-in functions to detect CPU type at runtime: builtin cpu is(”westmere”); and builtin cpu supports(”sse”);Dodji Seketeli <dodji@redhat.com> GCC 4.8, State of the Onion 19/23
  41. 41. x86 CPU Support, continued Function Multi-versioning in G++: Create multiple versions of a function, each one targeting a specific processor or ISA. Example: __attribute__ ((target ("default"))) int foo(void) { return 1; } __attribute__ ((target ("sse4.2"))) int foo(void) { return 2; } int main (void) { int (*p) = &foo; assert ((*p)() == foo()); return 0; }Dodji Seketeli <dodji@redhat.com> GCC 4.8, State of the Onion 20/23
  42. 42. x86 CPU Support, continued Function Multi-versioning in G++: Create multiple versions of a function, each one targeting a specific processor or ISA. Example: __attribute__ ((target ("default"))) int foo(void) { return 1; } __attribute__ ((target ("sse4.2"))) int foo(void) { return 2; } int main (void) { int (*p) = &foo; assert ((*p)() == foo()); return 0; } AMD Steamroller and Jaguar Core. -march=bdver3 and -march=btver2.Dodji Seketeli <dodji@redhat.com> GCC 4.8, State of the Onion 20/23
  43. 43. Architecture ChangeGCC Development PlanSignificant Changes in 4.8 Diagnostic Language support Optimizations and Middle End Processors Architecture ChangeDodji Seketeli <dodji@redhat.com> GCC 4.8, State of the Onion 21/23
  44. 44. Architecture ChangesGCC is now implemented in C++03.Dodji Seketeli <dodji@redhat.com> GCC 4.8, State of the Onion 22/23
  45. 45. Architecture ChangesGCC is now implemented in C++03.This allows: Doing the language change progressively. Now one could ever re-write those millions lines of code out there overnight.Dodji Seketeli <dodji@redhat.com> GCC 4.8, State of the Onion 22/23
  46. 46. Architecture ChangesGCC is now implemented in C++03.This allows: Doing the language change progressively. Now one could ever re-write those millions lines of code out there overnight. Get better abstraction in a easier manner.Dodji Seketeli <dodji@redhat.com> GCC 4.8, State of the Onion 22/23
  47. 47. Architecture ChangesGCC is now implemented in C++03.This allows: Doing the language change progressively. Now one could ever re-write those millions lines of code out there overnight. Get better abstraction in a easier manner. Strong typing implies more errors detected at compile time.Dodji Seketeli <dodji@redhat.com> GCC 4.8, State of the Onion 22/23
  48. 48. Architecture ChangesGCC is now implemented in C++03.This allows: Doing the language change progressively. Now one could ever re-write those millions lines of code out there overnight. Get better abstraction in a easier manner. Strong typing implies more errors detected at compile time. And compile time of the compiler didn’t increase! Quite the opposite.Dodji Seketeli <dodji@redhat.com> GCC 4.8, State of the Onion 22/23
  49. 49. Architecture ChangesGCC is now implemented in C++03.This allows: Doing the language change progressively. Now one could ever re-write those millions lines of code out there overnight. Get better abstraction in a easier manner. Strong typing implies more errors detected at compile time. And compile time of the compiler didn’t increase! Quite the opposite.A subset of C++ was chose, to avoid the Oil Refinery syndrome.Code review is still the better quality insurance tool.Dodji Seketeli <dodji@redhat.com> GCC 4.8, State of the Onion 22/23
  50. 50. Merci !http://gcc.gnu.org - Drink the Cool Aid.http://gcc.gnu.org/git - Code source repositorygit clone git://gcc.gnu.org/git/gcc.git - git the sources!http://news.gmane.org/gmane.comp.gcc.devel - Trolling, err,discussions, sorry.http://gcc.gnu.org/contribute.html - How to contribute. Yes, you!gcc-patches@gcc.gnu.org - Where to send patches. Yes, you again.Dodji Seketeli <dodji@redhat.com> GCC 4.8, State of the Onion 23/23
  1. Gostou de algum slide específico?

    Recortar slides é uma maneira fácil de colecionar informações para acessar mais tarde.

×