Sometimes C++ gives smaller code (please no religious wars; I have examples here). It is unlikely the original bootloader author used any C++ features that used much memory.
First, understand what is consuming the memory (from the MAP / LOC). If, and only if, C++ RTL is chewing up much space consider recoding.
Changing toolchains could easily be a major undertaking; certainly all assembler and/or hardware-access code would need a revisit.
First, understand what is currently consuming memory...
Hope that helps! Best Regards, Dave