The problem is that unlike their name suggest is_..._city_tile() functions return a pointer, not a boolean. That has worked under earlier C standard versions.
No S2_6 patch yet - have to confirm if one is needed. Review period for later branches running anyway.
Testing with gcc-13 in c2x (likely c23) standard mode: S3_1 pf_attack_possible() assignment from is_non_allied_city_tile() to non_allied_city gives error about converting pointer to int.