The following code;
unsigned b = (unsigned) &a;
using: sdcc --model-large --main-return --fomit-frame-pointer --opt-code-size --nostdlib
Generates an error 2: Initializer element is not constant
True for sdcc 2.90 & 3.1.0
Presumably because a pointer is larger than unsigned in large model.
The error message is misleading and should relate the correct cause.