Jörg Sonnenberger

Clang on SPARC

Why SPARC?

  • Strict alignment architecture
  • Register windows
  • Big Endian

The history of the SPARC target in LLVM

  • Older than Clang
  • ...much older than clang: first commit in 2004
  • No commercial backing, for-fun development only
  • 2013: initial SPARCv9 support
  • 2014, 2015: much polishing

Current situation

  • SPARCv8 is assumed
  • GNU as bug for FP branch instructions — adds extra nops
  • Integrated Assembler: mostly working
  • ...missing ASI support kind of kills it for NetBSD
  • Code generator: atomics require SPARCv8+
  • ...and SPARC64 only supports atomics for 32bit and 64bit types

Clang 3.8.0

  • 32bit SPARC missing va_arg support for struct / union
  • Personality routines build do not work correctly
  • Merges pending

NetBSD and Clang on SPARC

  • Kernel and boot loader currently crash in qemu
  • SPARC64 userland on top of GCC-build kernel
  • Userland: ATF run shows 33 unexpected failures
  • ...some of them qemu issues
  • ...more of them bad test cases unable to deal with lack of gcc
  • Second ATF run: down to 20 unexpected failurse
  • ...still two no-gcc cases

Q&A