aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/gcc-interface/misc.c
diff options
context:
space:
mode:
authorBin Cheng <bin.cheng@linux.alibaba.com>2020-11-06 16:19:40 -0500
committerJeff Law <law@torsion.usersys.redhat.com>2020-11-06 16:21:11 -0500
commit7987a8d29a78eb373b5e054d539e332d75e92e92 (patch)
treeb4197947306fbb473293ef3b951a8b0c5b31cad6 /gcc/ada/gcc-interface/misc.c
parent887515acd27e49c176395ab76d5826959d89cb9b (diff)
downloadgcc-7987a8d29a78eb373b5e054d539e332d75e92e92.zip
gcc-7987a8d29a78eb373b5e054d539e332d75e92e92.tar.gz
gcc-7987a8d29a78eb373b5e054d539e332d75e92e92.tar.bz2
Improve uninitialized warning with value range info
Function use_pred_not_overlap_with_undef_path_pred of pass_late_warn_uninitialized checks if predicate of variable use overlaps with predicate of undefined control flow path. For now, it only checks ssa_var comparing against constant, this can be improved where ssa_var compares against another ssa_var with value range info, as described in comment: + /* Check value range info of rhs, do following transforms: + flag_var < [min, max] -> flag_var < max + flag_var > [min, max] -> flag_var > min + + We can also transform LE_EXPR/GE_EXPR to LT_EXPR/GT_EXPR: + flag_var <= [min, max] -> flag_var < [min, max+1] + flag_var >= [min, max] -> flag_var > [min-1, max] + if no overflow/wrap. */ gcc/ * tree-ssa-uninit.c (find_var_cmp_const): New function. (use_pred_not_overlap_with_undef_path_pred): Call above.
Diffstat (limited to 'gcc/ada/gcc-interface/misc.c')
0 files changed, 0 insertions, 0 deletions