It cannot be done in the front-end, but has to happen during value propagation in the middle-end. But the middle-end only handles known *_EXPR and built-ins. So this would require adding either a POWINT_EXPR or a type-generic __builtin_powint. No small task.
I think there is already a PR for that (at the very least, I have looked into it and discussed it with some middle-end experts before). I cannot look it up right now, it's the interlude of Don Govanni at Paris Opera :) FX