tree.c (build_int_cst): Properly create canonicalized integer constants.

2011-04-22  Richard Guenther  <rguenther@suse.de>

	* tree.c (build_int_cst): Properly create canonicalized integer
	constants.
	(build_int_cst_type): Remove scary comments.

From-SVN: r172871
This commit is contained in:
Richard Guenther 2011-04-22 19:29:54 +00:00 committed by Richard Biener
parent ae01169c69
commit 1df5b0db1c
2 changed files with 9 additions and 10 deletions

View file

@ -1,3 +1,9 @@
2011-04-22 Richard Guenther <rguenther@suse.de>
* tree.c (build_int_cst): Properly create canonicalized integer
constants.
(build_int_cst_type): Remove scary comments.
2011-04-22 Xinliang David Li <davidxl@google.com>
* toplev.c (process_options): Enable -Werror=coverage-mismatch

View file

@ -1004,7 +1004,7 @@ copy_list (tree list)
}
/* Create an INT_CST node with a LOW value sign extended. */
/* Create an INT_CST node with a LOW value sign extended to TYPE. */
tree
build_int_cst (tree type, HOST_WIDE_INT low)
@ -1013,17 +1013,10 @@ build_int_cst (tree type, HOST_WIDE_INT low)
if (!type)
type = integer_type_node;
return build_int_cst_wide (type, low, low < 0 ? -1 : 0);
return double_int_to_tree (type, shwi_to_double_int (low));
}
/* Create an INT_CST node with a LOW value in TYPE. The value is sign extended
if it is negative. This function is similar to build_int_cst, but
the extra bits outside of the type precision are cleared. Constants
with these extra bits may confuse the fold so that it detects overflows
even in cases when they do not occur, and in general should be avoided.
We cannot however make this a default behavior of build_int_cst without
more intrusive changes, since there are parts of gcc that rely on the extra
precision of the integer constants. */
/* Create an INT_CST node with a LOW value sign extended to TYPE. */
tree
build_int_cst_type (tree type, HOST_WIDE_INT low)