How is llvm-avr backound integration going?

How is the llvm-avr backend integration going ? Will it be functional ( experimental ) in the 3.8 release ? Will Clang recognize options for avr ?

thanks.

Allen

Hey Allen,

Progress is slow but it is happening. It will take a number of more releases until it is ready.

Currently the backend is marked as an ‘experimental’ target, which means the only way it can be used is by compiling LLVM from source and passing ‘-DLLVM_EXPERIMENTAL_TARGETS=AVR’ to CMake.

At the moment almost no AVR-specific code has been merged, including clang support, which should come after the backend is functional.

How is the llvm-avr backend integration going ? Will it be functional ( experimental ) in the 3.8 release ? Will Clang recognize options for avr ?

thanks.

Allen

To those interested in AVR backend additions to LLVM, the LLVM review tools “Phabricator” ( don’t ask me to say that 3 times fast ), allows easy searching. Go to http://reviews.llvm.org/ and type in AVR in the search entry. This will give you a list of the commits, and resolutions. From my understanding ( NO Expert ), a large part of the skeleton code has been added. The leave the rest of the skeleton,and all the fleshy bits. Good progress Dylan!.

You can view the current status of the in-tree AVR backend here.

Allen is right when he says that a good amount of the skeleton code has been added so far. The backend is probably about 40% in tree currently. There are a few things that will need to be fixed before the merge is completed however.

  • We have three 16-bit pointer registers: X, Y, and Z. If a function allocates on the stack, Z must be used for the stack pointer. Currently we have a hack which hooks into the regalloc, undoing all uses of the Z register in a function once it allocates. It is messy, and touches some of the generic regalloc code.
  • TableGen related modifications

There is a list of ‘upstream-blocking’ issues detailed here.