[LLVMdev] big bitcode files producing bad ARM asm

Eric Christopher echristo at apple.com
Mon Apr 25 18:17:39 PDT 2011


On Apr 25, 2011, at 6:01 PM, Alexander MacDonald wrote:

> I have a rather large bitcode file which when run through "llc -march arm -O0" produces an asm file of about 500Mb. Trying to assemble this file with the ios assembler on osx gives me lots of "branch out of range" errors thanks to jump instructions overflowing the +/-32Mb relative jump limit.
> 
> I've tried running llc with the hidden "-arm-long-calls" option, which solves the problem but forces everything to be an indirect branch. That feels a bit like overkill, does anybody have a suggestion for what the right solution might be?

I think that writing smaller functions or optimize it to be smaller are about your only options. We have a constant island pass in the compiler that'll let it figure out constant displacements, but the branch island bits is only in the linker - and if you've got branches inside a single function of more than 32MB you're just asking for trouble on the architecture.

-eric



More information about the llvm-dev mailing list