gcc/
authorkazu <kazu@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 28 Aug 2006 17:18:29 +0000 (17:18 +0000)
committerkazu <kazu@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 28 Aug 2006 17:18:29 +0000 (17:18 +0000)
PR middle-end/26632
* convert.c (convert_to_integer): Set TREE_NO_WARNING to 1 on
an implicit conversion.

gcc/testsuite/
PR middle-end/26632
* gcc.dg/pr26632.c: New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@116510 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/convert.c
gcc/testsuite/ChangeLog

index 745c642..733fa47 100644 (file)
@@ -1,3 +1,9 @@
+2006-08-28  Kazu Hirata  <kazu@codesourcery.com>
+
+       PR middle-end/26632
+       * convert.c (convert_to_integer): Set TREE_NO_WARNING to 1 on
+       an implicit conversion.
+
 2006-08-28  Prafulla Thakare  <prafullat@kpitcummins.com>
 
        * config/h8300/h8300.c (TARGET_DEFAULT_TARGET_FLAGS): New.
index 2757195..118889f 100644 (file)
@@ -487,6 +487,7 @@ convert_to_integer (tree type, tree expr)
       else if (outprec >= inprec)
        {
          enum tree_code code;
+         tree tem;
 
          /* If the precision of the EXPR's type is K bits and the
             destination mode has more bits, and the sign is changing,
@@ -504,7 +505,13 @@ convert_to_integer (tree type, tree expr)
          else
            code = NOP_EXPR;
 
-         return fold_build1 (code, type, expr);
+         tem = fold_unary (code, type, expr);
+         if (tem)
+           return tem;
+
+         tem = build1 (code, type, expr);
+         TREE_NO_WARNING (tem) = 1;
+         return tem;
        }
 
       /* If TYPE is an enumeral type or a type with a precision less
index 65900a7..767f94e 100644 (file)
@@ -1,3 +1,8 @@
+2006-08-28  Kazu Hirata  <kazu@codesourcery.com>
+
+       PR middle-end/26632
+       * gcc.dg/pr26632.c: New.
+
 2006-08-27  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
 
        PR libgfortran/28354