[Bug lto/67357] New: -Wodr warnings from types in anonymous namespace
rogero at howzatt dot demon.co.uk
gcc-bugzilla@gcc.gnu.org
Wed Aug 26 08:49:00 GMT 2015
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67357
Bug ID: 67357
Summary: -Wodr warnings from types in anonymous namespace
Product: gcc
Version: 5.2.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: lto
Assignee: unassigned at gcc dot gnu.org
Reporter: rogero at howzatt dot demon.co.uk
Target Milestone: ---
The following code generates -Wodr warnings wih gcc 5.2.0
$ cat common.hxx
template <typename T>
struct values{
typedef T const CT;
};
$ cat test1.cxx
#include "common.hxx"
extern void test2();
namespace {
struct P {
bool One;
};
}
values<P> test1;
int main() { }
$ cat test2.cxx
#include "common.hxx"
namespace {
struct P {
int Two;
};
}
values<P> test2;
$ /opt/gcc-5.2.0/bin/g++ -flto -Wodr test1.cxx test2.cxx
common.hxx:3:21: warning: type 'const struct CT' violates one definition rule
[-Wodr]
typedef T const CT;
^
common.hxx:3:21: note: a different type is defined in another translation unit
typedef T const CT;
^
test1.cxx:7:14: note: the first difference of corresponding definitions is
field 'One'
bool One;
^
test2.cxx:5:13: note: a field with different name is defined in another
translation unit
int Two;
Where
$ /opt/gcc-5.2.0/bin/g++ -v
Using built-in specs.
COLLECT_GCC=/opt/gcc-5.2.0/bin/g++
COLLECT_LTO_WRAPPER=/opt/gcc-5.2.0/libexec/gcc/x86_64-unknown-linux-gnu/5.2.0/lto-wrapper
Target: x86_64-unknown-linux-gnu
Configured with: ../gcc-5.2.0/configure --prefix=/opt/gcc-5.2.0
--enable-cloog-backend --enable-lto --enable-languages=c,c++
--enable-libstdcxx-time --enable-gold --enable-plugins --disable-multilib
Thread model: posix
gcc version 5.2.0 (GCC)
Note: this maybe related to 66180 although (a) this is a gcc 5.2.0 problem and
(b) the sample code in comment 5 of that ticket does compile and link cleanly
with gcc 5.2.0
More information about the Gcc-bugs
mailing list