emitPseudoInstruction with MCJIT on LLVM 3.2 for ARM

Hi all,
   I was wondering if anyone could help me out with my MCJIT bug on LLVM 3.2. The same code works beautifully on x86 desktop with the same version of LLVM. This is the error I've been getting on ARM platforms:

dsheffie@tegra-ubuntu:~/projects/threeFingeredJack/python_compile$ python ./vvadd.py
[ 0. 0. 0. ..., 0. 0. 0.]
ARMCodeEmitter::emitPseudoInstruction
UNREACHABLE executed at /home/dsheffie/llvm/llvm-3.2.src/lib/Target/ARM/ARMCodeEmitter.cpp:843!
Stack dump:
0. Running pass 'ARM Machine Code Emitter' on function '@tramp_4002416'
Aborted

I'm running on Ubuntu 12.04 (hard float) on a quad-core nvidia Tegra3 (4x cortex-a9) I've included my configure command. Am I misconfiguring LLVM for my system, have I done something incredibly stupid, or is something else going on?

I've configured llvm 3.2 with the following command:
"../configure --prefix=/opt/local --enable-shared --enable-jit --enable-targets=host --disable-optimized --enable-assertions"

Many thanks in advance,

david

4002416.ll (447 Bytes)

vvadd.ll (1.84 KB)

Hi David,

Stack dump:
0. Running pass 'ARM Machine Code Emitter' on function '@tramp_4002416'
Aborted

I can reproduce this failure mode if I add a dummy main to vvadd.ll
and try to run lli on it using the *old* JIT. When I add the
"-use-mcjit" option the snippet compiles successfully.

The old JIT is known to be pretty much non-functional on ARM, so
that's not surprising. The best option is to switch python over to the
MCJIT (looking in tools/lli/lli.cpp should give hints on how).

Tim.