compile with -fwarn-safe