Hi,
I went through excercise of running LTO bootstrap with ODR verification on.
There are some typename clashes
I guess we want to fix. I wonder what approach is preferred, do we want to
introduce anonymous
namespaces for those?
Honza
../../gcc/tlink.c:62:16: warning: type ‘struct file_hash_entry’ violates one
definition rule [-Wodr]
typedef struct file_hash_entry
^
../../libcpp/files.c:143:8: note: a different type is defined in another
translation unit
struct file_hash_entry
^
../../gcc/tlink.c:64:15: note: the first difference of corresponding
definitions is field ‘key’
const char *key;
^
../../libcpp/files.c:145:27: note: a field with different name is defined in
another translation unit
struct file_hash_entry *next;
^
../../gcc/ipa-devirt.c:2674:0: warning: type ‘struct type_change_info’ violates
one definition rule [-Wodr]
struct type_change_info
^
../../gcc/ipa-prop.c:595:0: note: a different type is defined in another
translation unit
struct type_change_info
^
../../gcc/ipa-devirt.c:2681:0: note: the first difference of corresponding
definitions is field ‘instance’
tree instance;
^
../../gcc/ipa-prop.c:602:0: note: a field with different name is defined in
another translation unit
tree object;
^
../../gcc/gcse.c:294:0: warning: type ‘struct occr’ violates one definition
rule [-Wodr]
struct occr
^
../../gcc/postreload-gcse.c:160:0: note: a different type is defined in another
translation unit
struct occr
^
../../gcc/gcse.c:297:0: note: the first difference of corresponding definitions
is field ‘next’
struct occr *next;
^
../../gcc/postreload-gcse.c:163:0: note: a field of same name but different
type is defined in another translation unit
struct occr *next;
^
../../gcc/gcse.c:259:0: warning: type ‘struct expr’ violates one definition
rule [-Wodr]
struct expr
^
../../gcc/postreload-gcse.c:92:0: note: a different type is defined in another
translation unit
struct expr
^
../../gcc/gcse.c:264:0: note: the first difference of corresponding definitions
is field ‘bitmap_index’
int bitmap_index;
^
../../gcc/postreload-gcse.c:98:0: note: a field with different name is defined
in another translation unit
hashval_t hash;
^
../../gcc/predict.c:2499:0: warning: type ‘struct block_info_def’ violates one
definition rule [-Wodr]
typedef struct block_info_def
^
../../gcc/reg-stack.c:208:0: note: a different type is defined in another
translation unit
typedef struct block_info_def
^
../../gcc/predict.c:2502:0: note: the first difference of corresponding
definitions is field ‘frequency’
sreal frequency;
^
../../gcc/reg-stack.c:210:0: note: a field with different name is defined in
another translation unit
struct stack_def stack_in; /* Input stack configuration. */
^
../../gcc/lra-eliminations.c:80:0: warning: type ‘struct elim_table’ violates
one definition rule [-Wodr]
struct elim_table
^
../../gcc/reload1.c:264:0: note: a different type is defined in another
translation unit
struct elim_table
^
../../gcc/lra-eliminations.c:88:0: note: the first difference of corresponding
definitions is field ‘previous_offset’
HOST_WIDE_INT previous_offset;
^
../../gcc/reload1.c:268:0: note: a field with different name is defined in
another translation unit
HOST_WIDE_INT initial_offset; /* Initial difference between values. */
^
../../gcc/tree-ssa-ccp.c:169:0: warning: type ‘struct prop_value_d’ violates
one definition rule [-Wodr]
struct prop_value_d {
^
../../gcc/tree-ssa-copy.c:79:0: note: a different type is defined in another
translation unit
struct prop_value_d {
^
../../gcc/tree-ssa-ccp.c:171:0: note: the first difference of corresponding
definitions is field ‘lattice_val’
ccp_lattice_t lattice_val;
^
../../gcc/tree-ssa-copy.c:81:0: note: a field with different name is defined in
another translation unit
tree value;
^
../../gcc/profile.h:26:0: warning: type ‘struct edge_info’ violates one
definition rule [-Wodr]
struct edge_info
^
../../gcc/tree-ssa-dom.c:113:0: note: a different type is defined in another
translation unit
struct edge_info
^
../../gcc/profile.h:28:0: note: the first difference of corresponding
definitions is field ‘count_valid’
unsigned int count_valid:1;
^
../../gcc/tree-ssa-dom.c:117:0: note: a field with different name is defined in
another translation unit
tree lhs;
^
../../gcc/tree-ssa-loop-im.c:119:0: warning: type ‘struct mem_ref’ violates one
definition rule [-Wodr]
typedef struct mem_ref
^
../../gcc/tree-ssa-loop-prefetch.c:271:0: note: a different type is defined in
another translation unit
struct mem_ref
^
../../gcc/tree-ssa-loop-im.c:121:0: note: the first difference of corresponding
definitions is field ‘id’
unsigned id; /* ID assigned to the memory reference
^
../../gcc/tree-ssa-loop-prefetch.c:273:0: note: a field with different name is
defined in another translation unit
gimple stmt; /* Statement in that the reference appears. */
^
../../gcc/bitmap.c:2146:8: warning: type ‘struct output_info’ violates one
definition rule [-Wodr]
struct output_info
^
../../gcc/alloc-pool.c:342:0: note: a different type is defined in another
translation unit
struct output_info
^
../../gcc/bitmap.c:2148:12: note: the first difference of corresponding
definitions is field ‘size’
uint64_t size;
^
../../gcc/alloc-pool.c:344:0: note: a field with different name is defined in
another translation unit
unsigned long total_created;
^
../../gcc/gcse.c:320:0: warning: type ‘struct hash_table_d’ violates one
definition rule [-Wodr]
struct hash_table_d
^
../../gcc/cprop.c:96:0: note: a different type is defined in another
translation unit
struct hash_table_d
^
../../gcc/gcse.c:324:0: note: the first difference of corresponding definitions
is field ‘table’
struct expr **table;
^
../../gcc/cprop.c:100:0: note: a field of same name but different type is
defined in another translation unit
struct expr **table;
^
../../gcc/profile.c:77:0: warning: type ‘struct bb_info’ violates one
definition rule [-Wodr]
struct bb_info {
^
../../gcc/dse.c:424:0: note: a different type is defined in another translation
unit
struct bb_info
^
../../gcc/profile.c:78:0: note: the first difference of corresponding
definitions is field ‘count_valid’
unsigned int count_valid : 1;
^
../../gcc/dse.c:430:0: note: a field with different name is defined in another
translation unit
insn_info_t last_insn;
^
../../gcc/tree-ssa-structalias.c:1526:0: warning: type ‘struct topo_info’
violates one definition rule [-Wodr]
struct topo_info
^
../../gcc/ipa-cp.c:577:0: note: a different type is defined in another
translation unit
{
^
../../gcc/tree-ssa-structalias.c:1529:0: note: the first difference of
corresponding definitions is field ‘visited’
sbitmap visited;
^
../../gcc/ipa-cp.c:577:0: note: a field with different name is defined in
another translation unit
{
^
../../gcc/ggc-common.c:945:0: warning: type ‘struct ptr_hash_entry’ violates
one definition rule [-Wodr]
struct ptr_hash_entry
^
../../gcc/vec.c:83:0: note: a different type is defined in another translation
unit
void *ptr;
^
../../gcc/ggc-common.c:948:0: note: the first difference of corresponding
definitions is field ‘loc’
struct loc_descriptor *loc;
^
../../gcc/vec.c:83:0: note: a field of same name but different type is defined
in another translation unit
void *ptr;
^
../../gcc/cp/mangle.c:93:0: warning: type ‘struct globals’ violates one
definition rule [-Wodr]
typedef struct GTY(()) globals {
^
../../gcc/ggc-page.c:381:0: note: a different type is defined in another
translation unit
static struct globals
^
../../gcc/cp/mangle.c:96:0: note: the first difference of corresponding
definitions is field ‘substitutions’
vec<tree, va_gc> *substitutions;
^
../../gcc/ggc-page.c:387:0: note: a field with different name is defined in
another translation unit
page_entry *pages[NUM_ORDERS];
^
../../gcc/alloc-pool.c:342:0: warning: type ‘struct output_info’ violates one
definition rule [-Wodr]
struct output_info
^
../../gcc/bitmap.c:2146:0: note: a different type is defined in another
translation unit
struct output_info
^
../../gcc/alloc-pool.c:344:0: note: the first difference of corresponding
definitions is field ‘total_created’
unsigned long total_created;
^
../../gcc/bitmap.c:2148:0: note: a field with different name is defined in
another translation unit
uint64_t size;
^
../../gcc/ipa-devirt.c:2674:0: warning: type ‘struct type_change_info’ violates
one definition rule [-Wodr]
struct type_change_info
^
../../gcc/ipa-prop.c:595:0: note: a different type is defined in another
translation unit
struct type_change_info
^
../../gcc/ipa-devirt.c:2681:0: note: the first difference of corresponding
definitions is field ‘instance’
tree instance;
^
../../gcc/ipa-prop.c:602:0: note: a field with different name is defined in
another translation unit
tree object;
^
../../gcc/gcse.c:294:0: warning: type ‘struct occr’ violates one definition
rule [-Wodr]
struct occr
^
../../gcc/postreload-gcse.c:160:0: note: a different type is defined in another
translation unit
struct occr
^
../../gcc/gcse.c:297:0: note: the first difference of corresponding definitions
is field ‘next’
struct occr *next;
^
../../gcc/postreload-gcse.c:163:0: note: a field of same name but different
type is defined in another translation unit
struct occr *next;
^
../../gcc/gcse.c:259:0: warning: type ‘struct expr’ violates one definition
rule [-Wodr]
struct expr
^
../../gcc/postreload-gcse.c:92:0: note: a different type is defined in another
translation unit
struct expr
^
../../gcc/gcse.c:264:0: note: the first difference of corresponding definitions
is field ‘bitmap_index’
int bitmap_index;
^
../../gcc/postreload-gcse.c:98:0: note: a field with different name is defined
in another translation unit
hashval_t hash;
^
../../gcc/predict.c:2499:0: warning: type ‘struct block_info_def’ violates one
definition rule [-Wodr]
typedef struct block_info_def
^
../../gcc/reg-stack.c:208:0: note: a different type is defined in another
translation unit
typedef struct block_info_def
^
../../gcc/predict.c:2502:0: note: the first difference of corresponding
definitions is field ‘frequency’
sreal frequency;
^
../../gcc/reg-stack.c:210:0: note: a field with different name is defined in
another translation unit
struct stack_def stack_in; /* Input stack configuration. */
^
../../gcc/lra-eliminations.c:80:0: warning: type ‘struct elim_table’ violates
one definition rule [-Wodr]
struct elim_table
^
../../gcc/reload1.c:264:0: note: a different type is defined in another
translation unit
struct elim_table
^
../../gcc/lra-eliminations.c:88:0: note: the first difference of corresponding
definitions is field ‘previous_offset’
HOST_WIDE_INT previous_offset;
^
../../gcc/reload1.c:268:0: note: a field with different name is defined in
another translation unit
HOST_WIDE_INT initial_offset; /* Initial difference between values. */
^
../../gcc/cp/semantics.c:4075:0: warning: type ‘struct nrv_data’ violates one
definition rule [-Wodr]
struct nrv_data
^
../../gcc/tree-nrv.c:58:0: note: a different type is defined in another
translation unit
struct nrv_data
^
../../gcc/cp/semantics.c:4081:0: note: the first difference of corresponding
definitions is field ‘visited’
hash_table<pointer_hash <tree_node> > visited;
^
../../gcc/tree-nrv.c:67:0: note: a field with different name is defined in
another translation unit
int modified;
^
../../gcc/tree-ssa-ccp.c:169:0: warning: type ‘struct prop_value_d’ violates
one definition rule [-Wodr]
struct prop_value_d {
^
../../gcc/tree-ssa-copy.c:79:0: note: a different type is defined in another
translation unit
struct prop_value_d {
^
../../gcc/tree-ssa-ccp.c:171:0: note: the first difference of corresponding
definitions is field ‘lattice_val’
ccp_lattice_t lattice_val;
^
../../gcc/tree-ssa-copy.c:81:0: note: a field with different name is defined in
another translation unit
tree value;
^
../../gcc/profile.h:26:0: warning: type ‘struct edge_info’ violates one
definition rule [-Wodr]
struct edge_info
^
../../gcc/tree-ssa-dom.c:113:0: note: a different type is defined in another
translation unit
struct edge_info
^
../../gcc/profile.h:28:0: note: the first difference of corresponding
definitions is field ‘count_valid’
unsigned int count_valid:1;
^
../../gcc/tree-ssa-dom.c:117:0: note: a field with different name is defined in
another translation unit
tree lhs;
^
../../gcc/tree-ssa-loop-im.c:119:0: warning: type ‘struct mem_ref’ violates one
definition rule [-Wodr]
typedef struct mem_ref
^
../../gcc/tree-ssa-loop-prefetch.c:271:0: note: a different type is defined in
another translation unit
struct mem_ref
^
../../gcc/tree-ssa-loop-im.c:121:0: note: the first difference of corresponding
definitions is field ‘id’
unsigned id; /* ID assigned to the memory reference
^
../../gcc/tree-ssa-loop-prefetch.c:273:0: note: a field with different name is
defined in another translation unit
gimple stmt; /* Statement in that the reference appears. */
^
../../gcc/gcse.c:320:0: warning: type ‘struct hash_table_d’ violates one
definition rule [-Wodr]
struct hash_table_d
^
../../gcc/cprop.c:58:0: note: a different type is defined in another
translation unit
struct occr
^
../../gcc/gcse.c:324:0: note: the first difference of corresponding definitions
is field ‘table’
struct expr **table;
^
../../gcc/cprop.c:58:0: note: a field of same name but different type is
defined in another translation unit
struct occr
^
../../gcc/profile.c:77:0: warning: type ‘struct bb_info’ violates one
definition rule [-Wodr]
struct bb_info {
^
../../gcc/dse.c:1079:0: note: a different type is defined in another
translation unit
free_read_records (bb_info_t bb_info)
^
../../gcc/profile.c:78:0: note: the first difference of corresponding
definitions is field ‘count_valid’
unsigned int count_valid : 1;
^
../../gcc/dse.c:1079:0: note: a field with different name is defined in another
translation unit
free_read_records (bb_info_t bb_info)
^
../../gcc/tree-ssa-structalias.c:1526:0: warning: type ‘struct topo_info’
violates one definition rule [-Wodr]
struct topo_info
^
../../gcc/ipa-cp.c:577:0: note: a different type is defined in another
translation unit
{
^
../../gcc/tree-ssa-structalias.c:1529:0: note: the first difference of
corresponding definitions is field ‘visited’
sbitmap visited;
^
../../gcc/ipa-cp.c:577:0: note: a field with different name is defined in
another translation unit
{
^
../../gcc/ggc-common.c:945:0: warning: type ‘struct ptr_hash_entry’ violates
one definition rule [-Wodr]
struct ptr_hash_entry
^
../../gcc/vec.c:83:0: note: a different type is defined in another translation
unit
void *ptr;
^
../../gcc/ggc-common.c:948:0: note: the first difference of corresponding
definitions is field ‘loc’
struct loc_descriptor *loc;
^
../../gcc/vec.c:83:0: note: a field of same name but different type is defined
in another translation unit
void *ptr;
^
../../gcc/cp/call.c:83:8: warning: type ‘struct conversion’ violates one
definition rule [-Wodr]
struct conversion {
^
../../libcpp/charset.c:613:0: note: a different type is defined in another
translation unit
const char *pair;
^
../../gcc/cp/call.c:85:19: note: the first difference of corresponding
definitions is field ‘kind’
conversion_kind kind;
^
../../libcpp/charset.c:613:0: note: a field with different name is defined in
another translation unit
const char *pair;
^
../../gcc/alloc-pool.c:342:0: warning: type ‘struct output_info’ violates one
definition rule [-Wodr]
struct output_info
^
../../gcc/bitmap.c:2146:0: note: a different type is defined in another
translation unit
struct output_info
^
../../gcc/alloc-pool.c:344:0: note: the first difference of corresponding
definitions is field ‘total_created’
unsigned long total_created;
^
../../gcc/bitmap.c:2148:0: note: a field with different name is defined in
another translation unit
uint64_t size;
^
../../gcc/ipa-devirt.c:2674:0: warning: type ‘struct type_change_info’ violates
one definition rule [-Wodr]
struct type_change_info
^
../../gcc/ipa-prop.c:595:0: note: a different type is defined in another
translation unit
struct type_change_info
^
../../gcc/ipa-devirt.c:2681:0: note: the first difference of corresponding
definitions is field ‘instance’
tree instance;
^
../../gcc/ipa-prop.c:602:0: note: a field with different name is defined in
another translation unit
tree object;
^
../../gcc/gcse.c:294:0: warning: type ‘struct occr’ violates one definition
rule [-Wodr]
struct occr
^
../../gcc/postreload-gcse.c:160:0: note: a different type is defined in another
translation unit
struct occr
^
../../gcc/gcse.c:297:0: note: the first difference of corresponding definitions
is field ‘next’
struct occr *next;
^
../../gcc/postreload-gcse.c:163:0: note: a field of same name but different
type is defined in another translation unit
struct occr *next;
^
../../gcc/gcse.c:259:0: warning: type ‘struct expr’ violates one definition
rule [-Wodr]
struct expr
^
../../gcc/postreload-gcse.c:92:0: note: a different type is defined in another
translation unit
struct expr
^
../../gcc/gcse.c:264:0: note: the first difference of corresponding definitions
is field ‘bitmap_index’
int bitmap_index;
^
../../gcc/postreload-gcse.c:98:0: note: a field with different name is defined
in another translation unit
hashval_t hash;
^
../../gcc/predict.c:2499:0: warning: type ‘struct block_info_def’ violates one
definition rule [-Wodr]
typedef struct block_info_def
^
../../gcc/reg-stack.c:208:0: note: a different type is defined in another
translation unit
typedef struct block_info_def
^
../../gcc/predict.c:2502:0: note: the first difference of corresponding
definitions is field ‘frequency’
sreal frequency;
^
../../gcc/reg-stack.c:210:0: note: a field with different name is defined in
another translation unit
struct stack_def stack_in; /* Input stack configuration. */
^
../../gcc/lra-eliminations.c:80:0: warning: type ‘struct elim_table’ violates
one definition rule [-Wodr]
struct elim_table
^
../../gcc/reload1.c:264:0: note: a different type is defined in another
translation unit
struct elim_table
^
../../gcc/lra-eliminations.c:88:0: note: the first difference of corresponding
definitions is field ‘previous_offset’
HOST_WIDE_INT previous_offset;
^
../../gcc/reload1.c:268:0: note: a field with different name is defined in
another translation unit
HOST_WIDE_INT initial_offset; /* Initial difference between values. */
^
../../gcc/tree-ssa-ccp.c:169:0: warning: type ‘struct prop_value_d’ violates
one definition rule [-Wodr]
struct prop_value_d {
^
../../gcc/tree-ssa-copy.c:79:0: note: a different type is defined in another
translation unit
struct prop_value_d {
^
../../gcc/tree-ssa-ccp.c:171:0: note: the first difference of corresponding
definitions is field ‘lattice_val’
ccp_lattice_t lattice_val;
^
../../gcc/tree-ssa-copy.c:81:0: note: a field with different name is defined in
another translation unit
tree value;
^
../../gcc/profile.h:26:0: warning: type ‘struct edge_info’ violates one
definition rule [-Wodr]
struct edge_info
^
../../gcc/tree-ssa-dom.c:113:0: note: a different type is defined in another
translation unit
struct edge_info
^
../../gcc/profile.h:28:0: note: the first difference of corresponding
definitions is field ‘count_valid’
unsigned int count_valid:1;
^
../../gcc/tree-ssa-dom.c:117:0: note: a field with different name is defined in
another translation unit
tree lhs;
^
../../gcc/tree-ssa-loop-im.c:119:0: warning: type ‘struct mem_ref’ violates one
definition rule [-Wodr]
typedef struct mem_ref
^
../../gcc/tree-ssa-loop-prefetch.c:271:0: note: a different type is defined in
another translation unit
struct mem_ref
^
../../gcc/tree-ssa-loop-im.c:121:0: note: the first difference of corresponding
definitions is field ‘id’
unsigned id; /* ID assigned to the memory reference
^
../../gcc/tree-ssa-loop-prefetch.c:273:0: note: a field with different name is
defined in another translation unit
gimple stmt; /* Statement in that the reference appears. */
^
../../gcc/gcse.c:320:0: warning: type ‘struct hash_table_d’ violates one
definition rule [-Wodr]
struct hash_table_d
^
../../gcc/cprop.c:58:0: note: a different type is defined in another
translation unit
struct occr
^
../../gcc/gcse.c:324:0: note: the first difference of corresponding definitions
is field ‘table’
struct expr **table;
^
../../gcc/cprop.c:58:0: note: a field of same name but different type is
defined in another translation unit
struct occr
^
../../gcc/profile.c:77:0: warning: type ‘struct bb_info’ violates one
definition rule [-Wodr]
struct bb_info {
^
../../gcc/dse.c:1079:0: note: a different type is defined in another
translation unit
free_read_records (bb_info_t bb_info)
^
../../gcc/profile.c:78:0: note: the first difference of corresponding
definitions is field ‘count_valid’
unsigned int count_valid : 1;
^
../../gcc/dse.c:1079:0: note: a field with different name is defined in another
translation unit
free_read_records (bb_info_t bb_info)
^
../../gcc/tree-ssa-structalias.c:1526:0: warning: type ‘struct topo_info’
violates one definition rule [-Wodr]
struct topo_info
^
../../gcc/ipa-cp.c:577:0: note: a different type is defined in another
translation unit
{
^
../../gcc/tree-ssa-structalias.c:1529:0: note: the first difference of
corresponding definitions is field ‘visited’
sbitmap visited;
^
../../gcc/ipa-cp.c:577:0: note: a field with different name is defined in
another translation unit
{
^
../../gcc/ggc-common.c:945:0: warning: type ‘struct ptr_hash_entry’ violates
one definition rule [-Wodr]
struct ptr_hash_entry
^
../../gcc/vec.c:83:0: note: a different type is defined in another translation
unit
void *ptr;
^
../../gcc/ggc-common.c:948:0: note: the first difference of corresponding
definitions is field ‘loc’
struct loc_descriptor *loc;
^
../../gcc/vec.c:83:0: note: a field of same name but different type is defined
in another translation unit
void *ptr;
^
/usr/bin/ld.gold.real: warning: using 'GLIBCXX_3.4' as version for
'_ZNKSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strEv' which is also named
in version 'GLIBCXX_3.4.6' in script
/usr/bin/ld.gold.real: warning: using 'GLIBCXX_3.4' as version for
'_ZNKSs11_M_disjunctEPKc' which is also named in version 'GLIBCXX_3.4.5' in
script
/usr/bin/ld.gold.real: warning: using 'GLIBCXX_3.4' as version for
'_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw' which is also named in
version 'GLIBCXX_3.4.5' in script
make[2]: *** [compare] Error 1
make[1]: *** [stage3-bubble] Error 2
make: *** [all] Error 2