May 2015 Toolchain Update

Nick Clifton
Mon May 18 09:26:00 GMT 2015

Hi Guys,

  There are several things to report this month:

    * GCC now supports targets configured to use the MUSL C library:

    * The Compiler has a new warning option: -Wmisleading-indentation
      This generates warnings when the indentation of the code does
      not reflect the block structure.  For example:

        if (some_condition ())
          foo ();
          bar ();  /* Gotcha: this is not guarded by the "if".  */

      The warning is disabled by default.

    * The Compiler also has a new shift warning: -Wshift-negative-value
      This generates warnings when left shifting a negative value.
      The warning is enabled by -Wextra in C99 and C++11 modes (and
      newer).  The warning can be suppressed by an appropriate cast.
      For example:
	val |= ~0 << loaded;		// Generates warning
	val |= (unsigned) ~0 << loaded;	// Does not warn

    * GCC supports a new option: -fno-plt

      When compiling position independent code this tells the compiler
      not to use PLT for external function calls.  Instead the address
      is loaded from the GOT and then branched to directly.  This
      leads to more efficient code by eliminating PLT stubs and
      exposing GOT load to optimizations.

      Not all architectures support this option, and some other
      optimization features, such as lazy binding, may disable it.

    * GCC's sanitizer has a new option: -fsanitize=bounds-strict

      This option enables strict instrumentation of array bounds.
      Most out of bounds accesses are detected, including flexible
      array members and flexible array member-like arrays.

    * The AArch64 backend supports a new option to enable a workaround
      for the ARM Cortex-A53 erratum number 843419.  The workaround
      itself is implemented in the linker, but it can be enabled via
      the compiler option:

      Note, specifying -mcpu=cortex-a53 is not enough to enable this
      option as not all versions of the A53 need the erratum.

    * The AArch64 backend also supports a new core type of "native".
      When used as -mcpu=native or -mtune=native it tells the backend
      to base its core selection on the host system.  If the compiler
      cannot recognise the processor of the host system then the
      option does nothing.

    * The Linker now supports the Intel MCU architecture:!topic/ia32-abi/cn7TM6J_TIg

    * GDB 7.9.1 has been released!

      GDB 7.9.1 brings the following fixes and enhancements over GDB 7.9:

     + PR build/18033 (C++ style comment used in gdb/iq2000-tdep.c and
     + PR build/18298 ("compile" command cannot find compiler if tools
       configured with triplet instead of quadruplet)
     + PR tui/18311 (Random SEGV when displaying registers in TUI mode)
     + PR python/18299 (exception when registering a global
       pretty-printer in verbose mode)
     + PR python/18066 (argument "word" seems broken in Command.complete
       (text, word))
     + PR pascal/17815 (Fix pascal behavior for class fields with testcase)
     + PR python/18285 (ptype expr-with-xmethod causes SEGV)



                 GCC Merge:

Toolchains that do not build GCC successfully:


Toolchains that do not build LIBGCC successfully:

  mep-elf:     ICE: in pre_and_rev_post_order_compute, at cfganal.c

Toolchains that do not build NEWLIB successfully:


Toolchains that do not build the target LIBIBERTY successfully:

Toolchains that do not build LIBSTDC++-V3 successfully:

  cr16-elf:    ICE: in gen_rtx_SUBREG in emit-rtl.c
  m32c-elf:    ICE: in connect_traces, at dwarf2cfi.c

Toolchains that fail to build GDB:

  Not supported:

    arc-elf		cr16-elf	epiphany-elf
    ia64-elf		mcore-elf	mmix-mmixware
    nds32le-elf		nios2-elf	pdp11-aout
    tilepro-gnu-linux	visium-elf

  No sim:

Toolchains that DO build all their target libraries and gdb:

    aarch64-elf		arm-eabi   	avr-elf
    bfin-elf		c6x-elf		cris-elf
    frv-elf		h8300-elf	i386-elf
    iq2000-elf		lm32-elf	m32r-elf
    mipsisa32-elf	mipsisa64-elf	mn10300-elf
    moxie-elf		msp430-elf	rl78-elf
    powerpc-eabispe	powerpc-elf	rx-elf
    sh-elf		sh64-elf	spu-elf
    tx39-elf		v850e-elf	visium-elf

[SIM based] GCC DG Testsuite Results

  The chart below is sorted on the number of unexpected
  failures, rather than alphabetically, in order to provide a
  small guide to toolchain quality.  [The better/worse number
  shows how the results have changed compared to last month].

    x86_64 native   ...  failures:  0    [better by 1]
    arm-eabi        ...  failures:  0
    mipsisa32-elf   ...  failures:  0    [better by 22]
    mipsisa64-elf   ...  failures:  0    [better by 24]
    sh-elf          ...  failures:  1
    mn10300-elf     ...  failures:  1    [better by 3]
    m32r-elf        ...  failures:  2    [better by 8]
    rx-elf          ...  failures:  2    [better by 7]
    msp430-elf      ...  failures:  3    [better by 5]
    frv-elf         ...  failures:  4    [better by 1]
    h8300-elf       ...  failures:  4    [better by 18]
    v850e-elf       ...  failures:  4    [better by 4]
    powerpc-eabispe ...  failures:  7    [better by 5]
    rl78-elf        ...  failures:  7    [better by 10]
    bfin-elf        ...  failures: 11    [better by 8]
    powerpc-elf     ...  failures: 11    [better by 2]
    iq2000-elf      ...  failures: 35    [better by 8]
    aarch64-elf     ...  failures: 40    [better by 28]
    mcore-elf       ...  failures: 58    [better by 36]


                x86_64 native bootstrap:


x86_64  GCC  testsuite		BEFORE		 AFTER
				------		------
  # of expected passes		110473		110955
  # of unexpected failures	   160		   161
  # of unexpected successes	    18		    18
  # of expected failures	   278		   279
  # of unresolved testcases	     7		     7
  # of unsupported tests	  1674		  1678

Tests that used to PASS but now FAIL:


x86_64  G++  testsuite		BEFORE		AFTER
				------		-----
  # of expected passes		 85278		85739
  # of unexpected failures	    54		   54
  # of unexpected successes	    12		   12
  # of expected failures	   272		  272
  # of unresolved testcases	    15		   15
  # of unsupported tests	  3623		 3637

Tests that used to PASS but now FAIL:


x86_64  GDB  testsuite	        BEFORE		AFTER
				------		-----
  # of expected passes		 22402		22415
  # of unexpected failures	   143		  230
  # of expected failures	    30		   30
  # of known failures		    53		   53
  # of unresolved testcases	     5		    5
  # of untested testcases	   120		  120
  # of unsupported tests	   100		  100

Tests that used to PASS but now FAIL:




All ports build successfully before and after the merge.

Ports which have FEWER failures after the merge: 

  mep-elf  		s390-linux

Ports that have the SAME number of failures before and after the

  aarch64-elf 		alpha-netbsd		am33_2.0-linux 
  arc-elf 		arm-eabi 		avr-elf 
  bfin-elf 		c6x-elf 		cr16-elf 
  cris-elf 		crx-elf 		dlx-elf 
  epiphany-elf 		fido-elf 		fr30-elf 
  frv-elf 		frv-uclinux 		ft32-elf 
  h8300-elf 		hppa-linux-gnu 		i386-darwin 
  i386-elf 		i386-netware 		i386-pc-go32 
  i686-pc-cygwin 	i686-pc-linux-gnu 	ia64-elf 
  iq2000-elf 		lm32-elf 		lm32-rtems4.0 
  m32c-elf 		m32r-elf 		m68hc12-elf 
  mcore-elf 		mcore-pe 		microblaze-elf 
  mingw32-pe 		mips64vr-elf 		mipsisa32-elf 
  mipsisa64-elf 	mmix-mmixware 		mn10300-elf 
  moxie-elf 		msp430-elf 		mt-elf 
  nds32le-elf 		nios2-elf 		or1k-elf 
  pdp11-aout 		powerpc-eabispe 	powerpc-elf 
  powerpc64-linux-gnu 	ppc-linux 		rl78-elf 
  rx-elf 		s390x-ibm-tpf 		sh-elf 
  sh-pe 		sh64-elf 		spu-elf 
  tic6x-elf 		tilegx-gnu-linux 	tilepro-gnu-linux 
  tx39-elf 		v850e-elf 		vax-netbsdelf 
  visium-elf 		x86_64-pc-cygwin 	x86_64-pc-linux-gnu 
  x86_64-pc-mingw64 	xstormy16-elf 		xtensa-elf 

Ports which have MORE failures after the merge:


More information about the Gcc mailing list