> testing completed successfully, so I've installed the patch with this
> ChangeLog entry:
>
> 2016-09-26 Rainer Orth <r...@cebitec.uni-bielefeld.de>
>
> gcc:
> * config/i386/i386.c (ix86_print_operand)
> [HAVE_AS_IX86_CMOV_SUN_SYNTAX]: Add gcc_fallthrough.
> * config/sparc/sparc.c (check_pic): Add fallthrough comment.
> (epilogue_renumber): Likewise.
>
> gcc/ada:
> * gcc-interface/decl.c: Fix fall through comment formatting.
> * gcc-interface/misc.c: Likewise.
> * gcc-interface/trans.c: Likewise.
> * gcc-interface/utils.c: Likewise.
> * gcc-interface/utils2.c: Likewise.
This is a revealing example of how excessive pickiness in warnings can be
counter-productive: after Jakub's latest patches (thanks!) accepting the
original formatting of gcc-interface, I reverted part #2 of the above patch...
only to discover that bootstrap was still broken because of a -Wimplicit-
fallthrough warning, but this time for a missing break:
Index: gcc-interface/utils.c
===================================================================
--- gcc-interface/utils.c (revision 324591)
+++ gcc-interface/utils.c (working copy)
@@ -4289,6 +4289,7 @@ convert (tree type, tree expr)
TREE_TYPE (expr) = type;
return expr;
}
+ break;
case CONSTRUCTOR:
/* If we are converting a CONSTRUCTOR to a mere type variant, or to
So the issue went unnoticed among the slew of false positives the first time
and a genuine error was overlooked...
Tested on x86_64-suse-linux, applied on the mainline.
2016-10-08 Eric Botcazou <ebotca...@adacore.com>
* gcc-interface/utils.c (convert) <VECTOR_CST>: Add missing break.
Revert
2016-09-26 Rainer Orth <r...@cebitec.uni-bielefeld.de>
* gcc-interface/decl.c: Fix fall through comment formatting.
* gcc-interface/misc.c: Likewise.
* gcc-interface/trans.c: Likewise.
* gcc-interface/utils.c: Likewise.
* gcc-interface/utils2.c: Likewise.
--
Eric Botcazou
Index: gcc-interface/decl.c
===================================================================
--- gcc-interface/decl.c (revision 240888)
+++ gcc-interface/decl.c (working copy)
@@ -596,7 +596,7 @@ gnat_to_gnu_entity (Entity_Id gnat_entit
gnu_expr
= gnat_to_gnu_external (Expression (Declaration_Node (gnat_entity)));
- /* fall through */
+ /* ... fall through ... */
case E_Exception:
case E_Loop_Parameter:
@@ -3369,7 +3369,7 @@ gnat_to_gnu_entity (Entity_Id gnat_entit
break;
}
- /* fall through */
+ /* ... fall through ... */
case E_Record_Subtype:
/* If Cloned_Subtype is Present it means this record subtype has
@@ -3804,7 +3804,7 @@ gnat_to_gnu_entity (Entity_Id gnat_entit
break;
}
- /* fall through */
+ /* ... fall through ... */
case E_Allocator_Type:
case E_Access_Type:
@@ -6882,7 +6882,7 @@ choices_to_gnu (tree operand, Node_Id ch
break;
}
- /* fall through */
+ /* ... fall through ... */
case N_Character_Literal:
case N_Integer_Literal:
@@ -8089,7 +8089,7 @@ annotate_value (tree gnu_size)
else
return Uint_Minus_1;
- /* fall through */
+ /* Fall through... */
default:
return No_Uint;
Index: gcc-interface/misc.c
===================================================================
--- gcc-interface/misc.c (revision 240888)
+++ gcc-interface/misc.c (working copy)
@@ -157,7 +157,7 @@ gnat_handle_option (size_t scode, const
case OPT_gant:
warning (0, "%<-gnat%> misspelled as %<-gant%>");
- /* fall through */
+ /* ... fall through ... */
case OPT_gnat:
case OPT_gnatO:
@@ -485,13 +485,13 @@ gnat_print_type (FILE *file, tree node,
else
print_node (file, "index type", TYPE_INDEX_TYPE (node), indent + 4);
- /* fall through */
+ /* ... fall through ... */
case ENUMERAL_TYPE:
case BOOLEAN_TYPE:
print_node_brief (file, "RM size", TYPE_RM_SIZE (node), indent + 4);
- /* fall through */
+ /* ... fall through ... */
case REAL_TYPE:
print_node_brief (file, "RM min", TYPE_RM_MIN_VALUE (node), indent + 4);
Index: gcc-interface/trans.c
===================================================================
--- gcc-interface/trans.c (revision 240888)
+++ gcc-interface/trans.c (working copy)
@@ -844,7 +844,7 @@ lvalue_required_p (Node_Id gnat_node, tr
&& Ekind (Entity (gnat_temp)) == E_Enumeration_Literal))
return 1;
- /* fall through */
+ /* ... fall through ... */
case N_Slice:
/* Only the array expression can require an lvalue. */
@@ -890,7 +890,7 @@ lvalue_required_p (Node_Id gnat_node, tr
if (!constant)
return 1;
- /* fall through */
+ /* ... fall through ... */
case N_Type_Conversion:
case N_Qualified_Expression:
@@ -914,7 +914,7 @@ lvalue_required_p (Node_Id gnat_node, tr
get_unpadded_type (Etype (gnat_parent)),
true, false, true);
- /* fall through */
+ /* ... fall through ... */
default:
return 0;
@@ -1681,7 +1681,7 @@ Attribute_to_gnu (Node_Id gnat_node, tre
break;
}
- /* fall through */
+ /* ... fall through ... */
case Attr_Access:
case Attr_Unchecked_Access:
@@ -1938,7 +1938,7 @@ Attribute_to_gnu (Node_Id gnat_node, tre
break;
}
- /* fall through */
+ /* ... fall through ... */
case Attr_Length:
{
@@ -2393,7 +2393,7 @@ Attribute_to_gnu (Node_Id gnat_node, tre
/* We treat Model as identical to Machine. This is true for at least
IEEE and some other nice floating-point systems. */
- /* fall through */
+ /* ... fall through ... */
case Attr_Machine:
/* The trick is to force the compiler to store the result in memory so
@@ -2537,7 +2537,7 @@ Case_Statement_to_gnu (Node_Id gnat_node
break;
}
- /* fall through */
+ /* ... fall through ... */
case N_Character_Literal:
case N_Integer_Literal:
@@ -4007,7 +4007,7 @@ node_is_atomic (Node_Id gnat_node)
&& Has_Atomic_Components (Entity (Prefix (gnat_node))))
return true;
- /* fall through */
+ /* ... fall through ... */
case N_Explicit_Dereference:
return Is_Atomic (Etype (gnat_node));
@@ -4123,7 +4123,7 @@ atomic_access_required_p (Node_Id gnat_n
/* Nothing to do if we are the prefix of an attribute, since we do not
want an atomic access for things like 'Size. */
- /* fall through */
+ /* ... fall through ... */
case N_Reference:
/* The N_Reference node is like an attribute. */
@@ -6580,7 +6580,7 @@ gnat_to_gnu (Node_Id gnat_node)
break;
}
- /* fall through */
+ /* ... fall through ... */
case N_Op_Eq:
case N_Op_Ne:
@@ -6747,7 +6747,7 @@ gnat_to_gnu (Node_Id gnat_node)
break;
}
- /* fall through */
+ /* ... fall through ... */
case N_Op_Minus:
case N_Op_Abs:
@@ -8344,7 +8344,7 @@ gnat_gimplify_expr (tree *expr_p, gimple
break;
}
- /* fall through */
+ /* ... fall through ... */
default:
return GS_UNHANDLED;
@@ -9867,7 +9867,7 @@ set_gnu_expr_location_from_node (tree no
if (EXPR_P (TREE_OPERAND (node, 1)))
set_gnu_expr_location_from_node (TREE_OPERAND (node, 1), gnat_node);
- /* fall through */
+ /* ... fall through ... */
default:
if (!REFERENCE_CLASS_P (node) && !EXPR_HAS_LOCATION (node))
Index: gcc-interface/utils.c
===================================================================
--- gcc-interface/utils.c (revision 240888)
+++ gcc-interface/utils.c (working copy)
@@ -3166,7 +3166,7 @@ create_subprog_decl (tree name, tree asm
NULL_TREE, NULL_TREE),
ATTR_FLAG_TYPE_IN_PLACE);
- /* fall through */
+ /* ... fall through ... */
case is_enabled:
DECL_DECLARED_INLINE_P (subprog_decl) = 1;
@@ -4270,8 +4270,7 @@ convert (tree type, tree expr)
TREE_TYPE (expr) = type;
return expr;
}
-
- /* fall through */
+ break;
case CONSTRUCTOR:
/* If we are converting a CONSTRUCTOR to a mere type variant, or to
@@ -4510,7 +4509,7 @@ convert (tree type, tree expr)
convert (TREE_TYPE (type),
TYPE_MIN_VALUE (type))));
- /* fall through */
+ /* ... fall through ... */
case ENUMERAL_TYPE:
case BOOLEAN_TYPE:
@@ -4587,7 +4586,7 @@ convert (tree type, tree expr)
return gnat_build_constructor (type, v);
}
- /* fall through */
+ /* ... fall through ... */
case ARRAY_TYPE:
/* In these cases, assume the front-end has validated the conversion.
@@ -4703,7 +4702,7 @@ convert_to_index_type (tree expr)
break;
}
- /* fall through */
+ /* ... fall through ... */
case NON_LVALUE_EXPR:
return fold_build1 (code, sizetype,
Index: gcc-interface/utils2.c
===================================================================
--- gcc-interface/utils2.c (revision 240888)
+++ gcc-interface/utils2.c (working copy)
@@ -180,7 +180,7 @@ known_alignment (tree exp)
return known_alignment (t);
}
- /* fall through */
+ /* ... fall through ... */
default:
/* For other pointer expressions, we assume that the pointed-to object
@@ -1011,7 +1011,7 @@ build_binary_op (enum tree_code op_code,
if (!operation_type)
operation_type = TREE_TYPE (left_type);
- /* fall through */
+ /* ... fall through ... */
case ARRAY_RANGE_REF:
/* First look through conversion between type variants. Note that
@@ -1230,7 +1230,7 @@ build_binary_op (enum tree_code op_code,
op_code = MINUS_EXPR;
modulus = NULL_TREE;
- /* fall through */
+ /* ... fall through ... */
case PLUS_EXPR:
case MINUS_EXPR:
@@ -1244,7 +1244,7 @@ build_binary_op (enum tree_code op_code,
= gnat_type_for_mode (TYPE_MODE (operation_type),
TYPE_UNSIGNED (operation_type));
- /* fall through */
+ /* ... fall through ... */
default:
common:
@@ -1466,7 +1466,7 @@ build_unary_op (enum tree_code op_code,
return build_unary_op (ADDR_EXPR, result_type,
TREE_OPERAND (operand, 0));
- /* fallthru */
+ /* ... fallthru ... */
case VIEW_CONVERT_EXPR:
/* If this just a variant conversion or if the conversion doesn't
@@ -1487,7 +1487,7 @@ build_unary_op (enum tree_code op_code,
case CONST_DECL:
operand = DECL_CONST_CORRESPONDING_VAR (operand);
- /* fall through */
+ /* ... fall through ... */
default:
common:
@@ -1648,7 +1648,7 @@ build_unary_op (enum tree_code op_code,
}
}
- /* fall through */
+ /* ... fall through ... */
default:
gcc_assert (operation_type == base_type);