Bug 51784 - LLVM compile on ARMv71
Summary: LLVM compile on ARMv71
Status: NEW
Alias: None
Product: Runtime
Classification: Mono
Component: General (show other bugs)
Version: 4.8.0 (C9)
Hardware: All Linux
: --- normal
Target Milestone: ---
Assignee: Bugzilla
Depends on:
Reported: 2017-01-26 13:59 UTC by jm
Modified: 2017-08-28 15:54 UTC (History)
5 users (show)

See Also:
Is this bug a regression?: ---
Last known good build:


Description jm 2017-01-26 13:59:13 UTC
I compiled with:
LLVM: ./configure --prefix="/mono" --enable-optimized --enable-targets=arm;
Mono 4.8: ./autogen.sh --prefix="/mono" --enable-optimized --enable-targets=arm --enable-llvm=yes --with-sgen=yes --with-gc=sgen --enable-minimal=debug,logging,profiler,softdebug;

uname -a gives:
Linux pa-com2 4.4.38-std-1 #1 SMP Mon Dec 12 10:42:40 UTC 2016 armv7l armv7l armv7l GNU/Linux

I then used:
for i in /mono/lib/mono/gac/*/*/*.dll; do /mono/bin/mono -O=all --aot --llvm $i; done;

It resulted in the following (for all *.dlls):
Mono Ahead of Time compiler - compiling assembly /mono/lib/mono/gac/I18N.Other/
AOTID E6ED613D-A7BB-D52D-B1E5-DC5313ED726E
Executing opt: "opt" -f -targetlibinfo -no-aa -basicaa -notti -instcombine -simplifycfg -inline-cost -inline -sroa -domtree -early-cse -lazy-value-info -correlated-propagation -simpl                   ifycfg -instcombine -simplifycfg -reassociate -domtree -loops -loop-simplify -lcssa -loop-rotate -licm -lcssa -loop-unswitch -instcombine -scalar-evolution -loop-simplify -lcssa -ind                   vars -loop-idiom -loop-deletion -loop-unroll -memdep -gvn -memdep -memcpyopt -sccp -instcombine -lazy-value-info -correlated-propagation -domtree -memdep -adce -simplifycfg -instcomb                   ine -strip-dead-prototypes -domtree -verify -o "temp.opt.bc" "temp.bc"
Executing llc: "llc"  -mattr=+vfp2,-neon,+d16 -float-abi=hard -asm-verbose=false -disable-gnu-eh-frame -enable-mono-eh-frame -mono-eh-frame-symbol=mono_aot_I18N_Other_eh_frame -reloc                   ation-model=pic -filetype=obj -o "temp-llvm.o" "temp.opt.bc"
Unsupported calling convention
UNREACHABLE executed at ARMISelLowering.cpp:1273!
Stack dump:
0.      Program arguments: llc -mattr=+vfp2,-neon,+d16 -float-abi=hard -asm-verbose=false -disable-gnu-eh-frame -enable-mono-eh-frame -mono-eh-frame-symbol=mono_aot_I18N_Other_eh_fra                   me -relocation-model=pic -filetype=obj -o temp-llvm.o temp.opt.bc
1.      Running pass 'Function Pass Manager' on module 'temp.opt.bc'.
2.      Running pass 'ARM Instruction Selection' on function '@I18N_Other_CP1251__ctor'
AOT of image /mono/lib/mono/gac/I18N.Other/ failed.

As long as i pass the --llvm command the error remains. On x86_64 Systems will it run without problems with the same command.
Comment 1 jm 2017-01-29 23:54:26 UTC
Please tell me if you need more information. If i am able to contribute i will do my best. I am very interested in using llvm on the arm device.


Note You need to log in before you can comment on or make changes to this bug.