Hi Marek, > All right. I'll commit the patch on Monday.
this patch caused quite some breakage: Ada, Solaris/x86 and SPARC don't bootstrap any longer. The following patch allows i386-pc-solaris2.12 and sparc-sun-solaris2.12 bootstraps continue. Strangely, I needed to use gcc_fallthrough () in i386.c; a mere /* FALLTHRU */ had no effect. Ok for mainline if the bootstraps pass (with appropriate changelog entries, of course)? Rainer
diff --git a/gcc/ada/gcc-interface/decl.c b/gcc/ada/gcc-interface/decl.c --- a/gcc/ada/gcc-interface/decl.c +++ b/gcc/ada/gcc-interface/decl.c @@ -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; diff --git a/gcc/ada/gcc-interface/misc.c b/gcc/ada/gcc-interface/misc.c --- a/gcc/ada/gcc-interface/misc.c +++ b/gcc/ada/gcc-interface/misc.c @@ -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: @@ -486,13 +486,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); diff --git a/gcc/ada/gcc-interface/trans.c b/gcc/ada/gcc-interface/trans.c --- a/gcc/ada/gcc-interface/trans.c +++ b/gcc/ada/gcc-interface/trans.c @@ -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)) diff --git a/gcc/ada/gcc-interface/utils.c b/gcc/ada/gcc-interface/utils.c --- a/gcc/ada/gcc-interface/utils.c +++ b/gcc/ada/gcc-interface/utils.c @@ -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; @@ -4271,6 +4271,8 @@ convert (tree type, tree expr) return expr; } + /* fall through */ + case CONSTRUCTOR: /* If we are converting a CONSTRUCTOR to a mere type variant, or to another padding type around the same type, just make a new one in @@ -4508,7 +4510,7 @@ convert (tree type, tree expr) convert (TREE_TYPE (type), TYPE_MIN_VALUE (type)))); - /* ... fall through ... */ + /* fall through */ case ENUMERAL_TYPE: case BOOLEAN_TYPE: @@ -4585,7 +4587,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. @@ -4701,7 +4703,7 @@ convert_to_index_type (tree expr) break; } - /* ... fall through ... */ + /* fall through */ case NON_LVALUE_EXPR: return fold_build1 (code, sizetype, diff --git a/gcc/ada/gcc-interface/utils2.c b/gcc/ada/gcc-interface/utils2.c --- a/gcc/ada/gcc-interface/utils2.c +++ b/gcc/ada/gcc-interface/utils2.c @@ -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); diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -17917,6 +17917,7 @@ ix86_print_operand (FILE *file, rtx x, i #ifdef HAVE_AS_IX86_CMOV_SUN_SYNTAX if (ASSEMBLER_DIALECT == ASM_ATT) putc ('.', file); + gcc_fallthrough (); #endif case 'C': diff --git a/gcc/config/sparc/sparc.c b/gcc/config/sparc/sparc.c --- a/gcc/config/sparc/sparc.c +++ b/gcc/config/sparc/sparc.c @@ -3832,6 +3832,7 @@ check_pic (int i) || (GET_CODE (XEXP (op, 0)) == MINUS && XEXP (XEXP (op, 0), 0) == sparc_got () && GET_CODE (XEXP (XEXP (op, 0), 1)) == CONST))); + /* fallthrough */ case 2: default: return 1; @@ -8371,6 +8372,7 @@ epilogue_renumber (register rtx *where, return 1; if (! test && REGNO (*where) >= 24 && REGNO (*where) < 32) *where = gen_rtx_REG (GET_MODE (*where), OUTGOING_REGNO (REGNO(*where))); + /* fallthrough */ case SCRATCH: case CC0: case PC:
-- ----------------------------------------------------------------------------- Rainer Orth, Center for Biotechnology, Bielefeld University