Hi, on behalf of Controls and Data Services, AdaCore would like to contribute a port of the GCC to the Visium. This is a 32-bit RISC architecture with an Extended Arithmetic Module implementing some 64-bit operations and an FPU designed for embedded systems. The binutils port has already been contributed and the ultimate goal is to contribute a port of the entire toolchain with simulator, debugger and embedded libc.
The original port had been written by employees of CDS or companies that are now part of CDS, and AdaCore contributed enhancements and modifications on top of it. Both companies have a copyright assignment on file with the FSF for the various components of the toolchain. The Visium is a classic 32-bit RISC architecture whose branches have a delay slot and whose arithmetic and logical instructions all set the flags, and they comprise the moves between GP registers (which are inclusive ORs under the hood in the traditional RISC fashion). The port is nevertheless MODE_CC and it generates code that is as good as the original cc0 implementation with the help of the post-reload compare elimination pass (modulo a small patch for the reorg pass that I'll submit separately). The GCC port is split into 4 patches (toplevel, libgcc, gcc, gcc/testsuite) and is C-only for now, and 'make -k check-c' reports the following results: Target is visium-unknown-elf Host is x86_64-suse-linux-gnu === gcc tests === Running target visium-sim FAIL: gcc.dg/torture/builtin-explog-1.c -O1 (test for excess errors) FAIL: gcc.dg/torture/builtin-explog-1.c -O2 (test for excess errors) FAIL: gcc.dg/torture/builtin-explog-1.c -O2 -flto -fno-use-linker-plugin - flto-partition=none (test for excess errors) FAIL: gcc.dg/torture/builtin-explog-1.c -O3 -fomit-frame-pointer (test for excess errors) FAIL: gcc.dg/torture/builtin-explog-1.c -O3 -g (test for excess errors) FAIL: gcc.dg/torture/builtin-explog-1.c -Os (test for excess errors) === gcc Summary for visium-sim === # of expected passes 81007 # of unexpected failures 6 # of expected failures 94 # of unsupported tests 1796 Running target visium-sim/-mcpu=gr6 FAIL: gcc.dg/torture/builtin-explog-1.c -O1 (test for excess errors) FAIL: gcc.dg/torture/builtin-explog-1.c -O2 (test for excess errors) FAIL: gcc.dg/torture/builtin-explog-1.c -O2 -flto -fno-use-linker-plugin - flto-partition=none (test for excess errors) FAIL: gcc.dg/torture/builtin-explog-1.c -O3 -fomit-frame-pointer (test for excess errors) FAIL: gcc.dg/torture/builtin-explog-1.c -O3 -g (test for excess errors) FAIL: gcc.dg/torture/builtin-explog-1.c -Os (test for excess errors) === gcc Summary for visium-sim/-mcpu=gr6 === # of expected passes 81007 # of unexpected failures 6 # of expected failures 94 # of unsupported tests 1796 === gcc Summary === # of expected passes 162014 # of unexpected failures 12 # of expected failures 188 # of unsupported tests 3592 /home/eric/build/gcc/visium-elf/gcc/xgcc version 5.0.0 20141211 (experimental) [trunk revision 218617] (GCC) after they are applied (on a x86_64-linux host). I think that the failures are common to all newlib targets and very likely related to: https://gcc.gnu.org/ml/gcc-patches/2014-12/msg00357.html OK for the mainline? -- Eric Botcazou