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