[Bug tree-optimization/55761] process_assignment assumes -1 can be created

paulo@matos-sorge.com gcc-bugzilla@gcc.gnu.org
Thu Dec 20 17:06:00 GMT 2012


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55761

--- Comment #5 from Paulo J. Matos <paulo@matos-sorge.com> 2012-12-20 17:06:04 UTC ---
As per previous comments, I looks at build_one_cst and implemented
build_minus_one_cst:
tree
build_minus_one_cst (tree type)
{
  switch (TREE_CODE (type))
    {
    case INTEGER_TYPE: case ENUMERAL_TYPE: case BOOLEAN_TYPE:
    case POINTER_TYPE: case REFERENCE_TYPE:
    case OFFSET_TYPE:
      return build_int_cst (type, -1);

    case REAL_TYPE:
      return build_real (type, dconstm1);

    case VECTOR_TYPE:
      {
    tree scalar = build_minus_one_cst (TREE_TYPE (type));

    return build_vector_from_val (type, scalar);
      }

    case COMPLEX_TYPE:
      return build_complex (type,
                build_minus_one_cst (TREE_TYPE (type)),
                build_zero_cst (TREE_TYPE (type)));

    case FIXED_POINT_TYPE:
    default:
      gcc_unreachable ();
    }
}


However, I am unsure on how to best model the FIXED_POINT_TYPE case, if at all
possible.



More information about the Gcc-bugs mailing list