http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55761
--- Comment #5 from Paulo J. Matos <pa...@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.