]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR ada/26315 (ACATS failures c43208b c85006a c85006d cd92001)
authorEric Botcazou <ebotcazou@adacore.com>
Fri, 17 Feb 2006 16:05:46 +0000 (17:05 +0100)
committerArnaud Charlet <charlet@gcc.gnu.org>
Fri, 17 Feb 2006 16:05:46 +0000 (17:05 +0100)
2006-02-17  Eric Botcazou  <botcazou@adacore.com>

PR ada/26315

* utils2.c (find_common_type): If both input types are BLKmode and
have the same constant size, keep using the first one.

* bindgen.adb: (Gen_Versions_Ada): Revert previous workaround.

* decl.c (gnat_to_gnu_entity): Only check TREE_OVERFLOW for a constant.

* misc.c (gnat_handle_option): New case for -Woverlength-strings.

From-SVN: r111183

gcc/ada/bindgen.adb
gcc/ada/decl.c
gcc/ada/misc.c
gcc/ada/utils2.c

index ab0f839c4a85215625d4f9ea4d6df199372548a4..0b595fe044c310dad76ffe558102d35f18e3844a 100644 (file)
@@ -2538,13 +2538,7 @@ package body Bindgen is
       end loop;
 
       WBI ("");
-
-      --  We used to have more complex code: Ubuf := "u00000";
-      --  which was being miscompiled, so use simpler code instead:
-
-      for J in Ubuf'First + 1 .. Ubuf'Last loop
-         Ubuf (J) := '0';
-      end loop;
+      Ubuf := "u00000";
 
       for U in Units.First .. Units.Last loop
          Increment_Ubuf;
index 1a17c37540ebcbde7a7fc3a7712bfff532226155..2144ff2080246b9103db0d227c061cb7b6c37ae2 100644 (file)
@@ -3435,6 +3435,7 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition)
           a function that returns that type.  This usage doesn't make
           sense anyway, so give an error here.  */
        if (TYPE_SIZE_UNIT (gnu_return_type)
+           && TREE_CONSTANT (TYPE_SIZE_UNIT (gnu_return_type))
            && TREE_OVERFLOW (TYPE_SIZE_UNIT (gnu_return_type)))
          {
            post_error ("cannot return type whose size overflows",
index d1ff2c5df5a9105efdf632c49c95b2d6e1505a0e..3c4e8cba33d2de169fe0b5e307abe74cb789965d 100644 (file)
@@ -286,6 +286,7 @@ gnat_handle_option (size_t scode, const char *arg, int value ATTRIBUTE_UNUSED)
     case OPT_Wvariadic_macros:
     case OPT_Wold_style_definition:
     case OPT_Wmissing_format_attribute:
+    case OPT_Woverlength_strings:
       break;
 
       /* This is handled by the front-end.  */
index 4f38e15fdf3e6d07a1926744d8e98fd9e770a8ac..ee8dec57d4385b9835cc3fe9c716c1a64897d21e 100644 (file)
@@ -232,9 +232,10 @@ find_common_type (tree t1, tree t2)
   else if (TYPE_MODE (t2) != BLKmode)
     return t2;
 
-  /* If both types have constant size, use the smaller one.  */
+  /* If both types have constant size, use the smaller one.  Keep returning
+     T1 if we have a tie, to be consistent with the other cases.  */
   if (TREE_CONSTANT (TYPE_SIZE (t1)) && TREE_CONSTANT (TYPE_SIZE (t2)))
-    return tree_int_cst_lt (TYPE_SIZE (t1), TYPE_SIZE (t2)) ? t1 : t2;
+    return tree_int_cst_lt (TYPE_SIZE (t2), TYPE_SIZE (t1)) ? t2 : t1;
 
   /* Otherwise, if either type has a constant size, use it.  */
   else if (TREE_CONSTANT (TYPE_SIZE (t1)))