[llvm-dev] POssible bug in the Arm code generator

Erik de Castro Lopo via llvm-dev
Tue, 08 Sep 2015 05:29:37 -0000

Thanks to everyone who has responded so far. I'm just beginning to find
out how much I still don't know about Arm.

Renato Golin via llvm-dev wrote:

> This could be some library code

Nope, this is the core GHC binary run with the '--interactive'
command line option.

> that you're calling without using branch exchange.

Today I learned about the "bx" instruction.

> Maybe you're compiling specifically disabling
> interworking?

You mean its possible to disable Thumb instructions altogether?
I would like to try that if its as easy as passing an additional
command line parameter to llc or opt.

> Can you give us a bit more context?

The context is me debugging an illegal instruction problem that
is fully documented in all its horrid glory here:

    https://ghc.haskell.org/trac/ghc/ticket/10375

TL;DR is I have at least two different Arm boards that hit this
problem even though apart from this problem the compiler actually
does work.

> What's your CPU,

The two boards are:

 * Qualcomm APQ 8084 (Flattened Device Tree)
 * ODROID-XU3

and he CPUs are listed as

 * ARMv7 Processor rev 1 (v7l)
 * ARMv7 Processor rev 3 (v7l)

respectively, both running Debian testing and using the debian
llvm-3.6 packaged binaries.

> and what are your back-end options in GHC?

The only non-standard thing I am doing is passing `--enable-unregistererised`
to the configure script to disable GHC calling convention (because GDB
doesn't understand it (yet)).

The build process is as follows:

* Debian packaged ghc-7.8.4 builds ghc-stage1 from the git repo.
* ghc-stage1 builds ghc-stage2

and its ghc-stage2 that exhibits this problem. I can't test ghc-stage1
because the interactive command line feature is disabled in the stage1
compiler.

At ealier stanges of debugging this I though it was a problem with
GHC runtime linker. I still have not discounted that as a possibility.

Cheers,
Erik
--
----------------------------------------------------------------------
Erik de Castro Lopo