lvalue decay casts need to change the backend type
expr_is_lval is a virtual expr function

This allows structs that come from functions to assert themselves as
non-lvalues.