On 26/02/2025 23:51, Peter Xu wrote: > On Wed, Feb 26, 2025 at 02:30:42PM +0800, Li Zhijian wrote: >> control_save_page() is for RDMA only, unfold it to make the code more >> clear. >> In addition: >> - Similar to other branches style in ram_save_target_page(), involve RDMA >> only if the condition 'migrate_rdma()' is true. >> - Further simplify the code by removing the RAM_SAVE_CONTROL_NOT_SUPP. >> >> Signed-off-by: Li Zhijian <lizhij...@fujitsu.com> > > [...] > >> @@ -56,7 +55,7 @@ static inline >> int rdma_control_save_page(QEMUFile *f, ram_addr_t block_offset, >> ram_addr_t offset, size_t size) >> { >> - return RAM_SAVE_CONTROL_NOT_SUPP; >> + g_assert_not_reached(); >> } > > Not sure if some compiler will be unhappy on the retval not provided, but > anyway we'll see..
There is no problem in fedora 40(gcc 14.2.1) and ubuntu2204(gcc 11.4.0) with --disable-rdma. I also noticed we have a few existing same usage: 1708 bool ram_write_tracking_compatible(void) 1709 { 1710 g_assert_not_reached(); 1711 } 1712 1713 int ram_write_tracking_start(void) 1714 { 1715 g_assert_not_reached(); 1716 } 1717 1718 void ram_write_tracking_stop(void) 1719 { 1720 g_assert_not_reached(); 1721 } I also asked the AI/Deepseek-R1, pasted a piece of his answer ``` 3. Why No Warning for Missing return? 🚨 Typical case: A non-void function missing a return triggers -Wreturn-type warnings (enabled by -Wall). This case: The noreturn annotation ensures no execution path exists beyond g_assert_not_reached(). Because the compiler recognizes this, no warning is necessary. Conclusion GCC trusts the noreturn annotation of g_assert_not_reached(), recognizing that the function’s control flow ends there. Thus, no warning is emitted. For code safety, ensure assertions are active or add fallback code if needed. ``` > > Reviewed-by: Peter Xu <pet...@redhat.com> > >> #endif >> #endif >> -- >> 2.44.0 >> >