diff options
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/tree.c | 13 |
2 files changed, 9 insertions, 10 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b334e32..f837af9 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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 @@ -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) |