This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
suspect code in fold-const.c
- From: Kenneth Zadeck <zadeck at naturalbridge dot com>
- To: GCC Development <gcc at gcc dot gnu dot org>, Richard Sandiford <rdsandiford at googlemail dot com>, Richard Biener <rguenther at suse dot de>
- Date: Thu, 14 Nov 2013 11:16:15 -0500
- Subject: suspect code in fold-const.c
- Authentication-results: sourceware.org; auth=none
in doing the wide int conversion, i have found the following code on the
trunk which seems somewhat suspect:
this code from fold-const.c starts on line 13811.
else if (TREE_INT_CST_HIGH (arg1) == signed_max_hi
&& TREE_INT_CST_LOW (arg1) == signed_max_lo
&& TYPE_UNSIGNED (arg1_type)
/* We will flip the signedness of the comparison operator
associated with the mode of arg1, so the sign bit is
specified by this mode. Check that arg1 is the signed
max associated with this sign bit. */
&& width == GET_MODE_BITSIZE (TYPE_MODE (arg1_type))
/* signed_type does not work on pointer types. */
&& INTEGRAL_TYPE_P (arg1_type))
it seems that the check on bitsize should really be a check on the
precision of the variable. If this seems right, i will correct this on
the trunk and make the appropriate changes to the wide-int branch.
kenny