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;
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",
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. */
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)))