Change default armhf target to a newer architecture
Currently the default llvm-targets file specifies the default arm-unknown-linux-gnueabihf
target to be using -mcpu=arm1176jzf-s
. Which is an Armv6
architecture.
This has the problem that it's generating memory barriers using CP15
instructions that are deprecated in Armv7
and removed in Armv8
.
Because of this there's no way to run the binaries being produced by GHC HQ on Armv8 CPUs without having kernel support for CP15 Barrier emulation.
which is slow.
We're also not taking advantage of new Armv8 instructions this way.
The debian folks have a bug report about this as well https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=864847
This means that GHC cannot work on most boards people have/can easily buy today.
I think the default target should be an Armv7
architecture at the very least. But realistically Armv8
would probably be ok as well as I doubt many people use GHC to compile on older cores.
Trac metadata
Trac field | Value |
---|---|
Version | 8.5 |
Type | Task |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | Compiler (CodeGen) |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | |
Operating system | |
Architecture |