C Integer Promotion on 8-bit MCUs
Long story short:

The integer promotion to 16 bits always takes place - the C standard enforces this. But the compiler is allowed to optimize the calculation back down to 8 bits (embedded systems compilers are usually pretty good at such optimizations), if it can deduce that the sign will be the same as it would have been if the type had been promoted.

This is not always the case! Implicit signedness changes caused by integer promotion are a common source of bugs in embedded systems.

Detailed explanation can be found here: Implicit type promotion rules.