This doesn't seem like a good idea when the base is not a symbol. Should it, perhaps, be limited to base-is-symbol cases? Or does c automatically optimize such expressions?