On Thu, Feb 21, 2013 at 7:16 PM, Bin.Cheng <amker.ch...@gmail.com> wrote: > Hi, > GCCINT says that nop_expr is used to represent conversions that do not > require any code generation, while function tree_strip_nop_conversions > calls tree_nop_conversion, which returns false even for NOP_EXPR node > like "(unsigned int)a", where a has type int.
Are you sure a has the type of int? The code does: if ((INTEGRAL_TYPE_P (outer_type) || POINTER_TYPE_P (outer_type) || TREE_CODE (outer_type) == OFFSET_TYPE) && (INTEGRAL_TYPE_P (inner_type) || POINTER_TYPE_P (inner_type) || TREE_CODE (inner_type) == OFFSET_TYPE)) return TYPE_PRECISION (outer_type) == TYPE_PRECISION (inner_type); Which will return true for the case you mentioned. Also NOP_EXPR and CONVERT_EXPR are handled almost the same through out the whole compiler. Thanks, Andrew pinski > > Did I miss something? Thanks > > -- > Best Regards.