[LLVMdev] C embedded extensions and LLVM
John Regehr
regehr at cs.utah.edu
Wed Nov 14 12:48:42 PST 2007
> This should just be a bitcast from one pointer to another pointer type.
Here's a likely counterexample: the AVR (8 bit embedded) has a
byte-addressed data space and word-addressed code space.
Legal C code involving pointer casts can confuse all known versions of
avr-gcc into generating bad function pointer code that jumps to twice the
address of the intended target. Last I heard there's no real plan to fix
this.
While the embedded C standard permits a way out where the compiler
understands that code space and data space pointers are different, I don't
see any way that pointer casts (for example, from an unqualified pointer
to either code ptr or data ptr) can be nops.
John Regehr
More information about the llvm-dev
mailing list