https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119222
--- Comment #13 from Gwen Fu <gwen3293940943 at gmail dot com> --- When executing the conversion_warning function, if you do not add any of the three compilation options -Warn-conversion or -Warn_sign_conversion or -Warn-float-conversion, the function will return directly. This function is the key function for issuing warnings about type conversion during compilation. Therefore, if you need to issue a warning during type conversion, you must add one of the three options. On this basis, I have made some modifications to the conversion_warning function. Only in: switch (TREE_CODE (expr)) { case EQ_EXPR: case NE_EXPR: case LE_EXPR: ...... case RDIV_EXPR: /*Issue a warning about infinity conversion to int*/ if( TREE_CODE(type) == INTEGER_TYPE && TREE_CODE (TREE_OPERAND(expr,1)) == REAL_CST && real_zerop (TREE_OPERAND(expr,1))) warning_at(loc, OPT_Wfloat_conversion, "conversion from %qT to %qT changes infinity to maximum or minimum integer value", expr_type , type) ; arith_ops = 2; goto default_; Make the above modifications to case RDIV_EXPR Compile after modification: gwne@gwne-KLVG-XX:~/github_repo/gcc/test$ ../objdir/gcc/cc1plus -Wall -Wextra -Wfloat-conversion 119222.cc int main()119222.cc:4:14: warning: conversion from ‘double’ to ‘int’ changes infinity to maximum or minimum integer value [-Wfloat-conversion] 4 | int a = 1/static_cast<double>(0); | ~^~~~~~~~~~~~~~~~~~~~~~~ 119222.cc:4:9: warning: unused variable ‘a’ [-Wunused-variable] 4 | int a = 1/static_cast<double>(0); | ^