tree.c (build_int_cst): Properly create canonicalized integer constants.
authorRichard Guenther <rguenther@suse.de>
Fri, 22 Apr 2011 19:29:54 +0000 (19:29 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Fri, 22 Apr 2011 19:29:54 +0000 (19:29 +0000)
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

gcc/ChangeLog
gcc/tree.c

index b334e323170380209a88aa5b8681630dd47b36e5..f837af9259d108a257de8842a27d1b0095ddd5ca 100644 (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
index b37b7f8a446df9f8bb1a7fe06a91249fc3345adb..6f93fb16336c2487532bfe31abf36ec2d2ff0e02 100644 (file)
@@ -1004,7 +1004,7 @@ copy_list (tree list)
 }
 
 \f
-/* 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)