HOST_WIDE_INT offset;
HOST_WIDE_INT current_offset;
unsigned HOST_WIDE_INT align;
- unsigned HOST_WIDE_INT max_align;
bool saw_equiv;
common_segment = NULL;
offset = 0;
current_offset = 0;
align = 1;
- max_align = 1;
saw_equiv = false;
/* Add symbols to the segment. */
if (gfc_option.flag_align_commons)
offset = align_segment (&align);
- if (offset & (max_align - 1))
+ if (offset)
{
/* The required offset conflicts with previous alignment
requirements. Insert padding immediately before this
/* Apply the offset to the new segments. */
apply_segment_offset (current_segment, offset);
current_offset += offset;
- if (max_align < align)
- max_align = align;
/* Add the new segments to the common block. */
common_segment = add_segments (common_segment, current_segment);
if (common_segment->offset != 0 && gfc_option.warn_align_commons)
{
if (strcmp (common->name, BLANK_COMMON_NAME))
- gfc_warning ("COMMON '%s' at %L requires %d bytes of padding at start; "
+ gfc_warning ("COMMON '%s' at %L requires %d bytes of padding; "
"reorder elements or use -fno-align-commons",
common->name, &common->where, (int)common_segment->offset);
else
- gfc_warning ("COMMON at %L requires %d bytes of padding at start; "
+ gfc_warning ("COMMON at %L requires %d bytes of padding; "
"reorder elements or use -fno-align-commons",
&common->where, (int)common_segment->offset);
}
+2011-10-09 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/45044
+ * gfortran.dg/common_14.f90: Compile with -Wno-align-commons.
+ * gfortran.dg/common_16.f90: New.
+
2011-10-09 Tobias Burnus <burnus@net-b.de>
* gfortran.dg/iso_c_binding_param_1.f90: New.