]> git.ipfire.org Git - thirdparty/gcc.git/blobdiff - gcc/analyzer/region-model-manager.cc
analyzer: casting all zeroes should give all zeroes [PR113333]
[thirdparty/gcc.git] / gcc / analyzer / region-model-manager.cc
index fc3523f8815c7f44b34e57567593e1781218afe5..62f808a81c2028fa99594ea48d410728dca87ae7 100644 (file)
@@ -457,6 +457,12 @@ region_model_manager::maybe_fold_unaryop (tree type, enum tree_code op,
              && region_sval->get_type ()
              && POINTER_TYPE_P (region_sval->get_type ()))
            return get_ptr_svalue (type, region_sval->get_pointee ());
+
+       /* Casting all zeroes should give all zeroes.  */
+       if (type
+           && arg->all_zeroes_p ()
+           && (INTEGRAL_TYPE_P (type) || POINTER_TYPE_P (type)))
+         return get_or_create_int_cst (type, 0);
       }
       break;
     case TRUTH_NOT_EXPR: