Porting LLVM, clang et al. to GNU/Hurd
lists.cs.uiuc.edu
lists.cs.uiuc.edu
clang -m64 -march=native -mtune=native -O3 -I/home/schiptsov/Compile/otp/erts/x86_64-unknown-linux-gnu -D_GNU_SOURCE -DERTS_SMP -DHAVE_CONFIG_H -Wall -Wstrict-prototypes -Wmissing-prototypes -Wdeclaration-after-statement -DUSE_THREADS -D_THREAD_SAFE -D_REENTRANT -DPOSIX_THREADS -D_POSIX_THREAD_SAFE_FUNCTIONS -Ix86_64-unknown-linux-gnu/opt/smp -Ibeam -Isys/unix -Isys/common -Ix86_64-unknown-linux-gnu -Izlib -Ipcre -Ihipe -I../include -I../include/x86_64-unknown-linux-gnu -I../include/internal -I../include/internal/x86_64-unknown-linux-gnu -c beam/beam_emu.c -o obj/x86_64-unknown-linux-gnu/opt/smp/beam_emu.o
clang: /home/schiptsov/Compile/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp:2050: bool <anonymous namespace>::LoopVectorizationLegality::canVectorize(): Assertion `TheLoop->getLoopPreheader() && "No preheader!!"' failed. CC libavcodec/flashsvenc.o
clang: /home/schiptsov/Compile/llvm/lib/Analysis/LazyValueInfo.cpp:613: bool <anonymous namespace>::LazyValueInfoCache::solveBlockValueNonLocal(<anonymous>::LVILatticeVal &, llvm::Value *, llvm::BasicBlock *): Assertion `isa<Argument>(Val) && "Unknown live-in to the entry block"' failed.And I do not believe that they have sacrificed anything to support both C and C++ (including partial support for their '11 variants). The codebase is abstracted away from the C/C++ differences where it makes sense. It is an impressively comprehensible compiler!
There's also Arch Hurd: https://en.wikipedia.org/wiki/Arch_Hurd
Personally I want Hurd and Minix 3 to gain support, as I feel that micro-kernels are the way to improve operating system security.
The only successfully commercial attempts so far have been Symbian and QNX.
\def\Hurd{GNU/Hurd}
\usepackage{xspace}
\def\Linux{GNU/Linux\xspace}
\def\Hurd{GNU/Hurd\xspace}