PR bootstrap/69513 incidentally reports a -Wodr warning during LTO bootstrap:
../../../../../../../opt/devel/gnu/src/gcc/gcc-6.0.0-test/gcc/ada/gcc-
interface/gigi.h:345:6: warning: type ‘attr_type’ violates the C++ One
Definition Rule [-Wodr]
enum attr_type
^
./insn-attr-common.h:8:0: note: an enum with different value name is defined
in another translation unit
Fixed thusly, tested on x86_64-suse-linux, applied on the mainline.
2016-01-28 Eric Botcazou <ebotca...@adacore.com>
* gcc-interface/gigi.h (enum attr_type): Rename into...
(enum attrib_type): ...this.
(struct attrib): Adjust.
* gcc-interface/decl.c (prepend_one_attribute): Likewise.
--
Eric Botcazou
Index: gcc-interface/decl.c
===================================================================
--- gcc-interface/decl.c (revision 232884)
+++ gcc-interface/decl.c (working copy)
@@ -151,7 +151,7 @@ struct value_annotation_hasher : ggc_cac
static GTY ((cache)) hash_table<value_annotation_hasher> *annotate_value_cache;
static void prepend_one_attribute (struct attrib **,
- enum attr_type, tree, tree, Node_Id);
+ enum attrib_type, tree, tree, Node_Id);
static void prepend_one_attribute_pragma (struct attrib **, Node_Id);
static void prepend_attributes (struct attrib **, Entity_Id);
static tree elaborate_expression (Node_Id, Entity_Id, const char *, bool, bool,
@@ -6258,14 +6258,14 @@ elaborate_entity (Entity_Id gnat_entity)
static void
prepend_one_attribute (struct attrib **attr_list,
- enum attr_type attr_type,
+ enum attrib_type attrib_type,
tree attr_name,
tree attr_args,
Node_Id attr_error_point)
{
struct attrib * attr = (struct attrib *) xmalloc (sizeof (struct attrib));
- attr->type = attr_type;
+ attr->type = attrib_type;
attr->name = attr_name;
attr->args = attr_args;
attr->error_point = attr_error_point;
@@ -6281,7 +6281,7 @@ prepend_one_attribute_pragma (struct att
{
const Node_Id gnat_arg = Pragma_Argument_Associations (gnat_pragma);
tree gnu_arg0 = NULL_TREE, gnu_arg1 = NULL_TREE;
- enum attr_type etype;
+ enum attrib_type etype;
/* Map the pragma at hand. Skip if this isn't one we know how to handle. */
switch (Get_Pragma_Id (Chars (Pragma_Identifier (gnat_pragma))))
Index: gcc-interface/gigi.h
===================================================================
--- gcc-interface/gigi.h (revision 232884)
+++ gcc-interface/gigi.h (working copy)
@@ -342,7 +342,7 @@ extern bool fp_arith_may_widen;
/* Data structures used to represent attributes. */
-enum attr_type
+enum attrib_type
{
ATTR_MACHINE_ATTRIBUTE,
ATTR_LINK_ALIAS,
@@ -356,7 +356,7 @@ enum attr_type
struct attrib
{
struct attrib *next;
- enum attr_type type;
+ enum attrib_type type;
tree name;
tree args;
Node_Id error_point;