in reply to my behavior with "NULL" declarations

As far as I can tell, the my attribute needs to be declared at compile time. Solo's example works because the trinary operator is indeed optimized away, and the parse tree looks like:

1 <0> enter 2 <;> nextstate(main 1 -e:1) v 3 <0> padsv[$foo:1,2] vPM/LVINTRO 4 <@> leave[1 ref] vKP/REFC

There is no "my" op. All "my" does is set some flags in the SV structure. The S_my_kid function in op.c doesn't seem to generate any ops - all it does it set the flags at compile time, and since that expression can't be evaluated at compile time Perl complains.