diff options
author | Jan Hubicka <hubicka@ucw.cz> | 2018-11-21 03:38:43 +0100 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2018-11-21 02:38:43 +0000 |
commit | 48d1f31d1b7131e8f809ede8256e4f1eb6c5c3ae (patch) | |
tree | d9521deeb7ea397d51336ba8b4f0c535f582706b /gcc | |
parent | d3d684c642943cb5a481fcc38e0ee46ee8b1223c (diff) | |
download | gcc-48d1f31d1b7131e8f809ede8256e4f1eb6c5c3ae.zip gcc-48d1f31d1b7131e8f809ede8256e4f1eb6c5c3ae.tar.gz gcc-48d1f31d1b7131e8f809ede8256e4f1eb6c5c3ae.tar.bz2 |
re PR lto/84044 (Spurious -Wodr warning with -flto)
PR lto/84044
* ipa-devirt.c (odr_types_equivalent_p): Use operand_equal_p to
compare ENUM values.
* g++.dg/lto/odr-4_0.C: New testcase.
* g++.dg/lto/odr-4_1.C: New testcase.
From-SVN: r266334
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/ipa-devirt.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/lto/odr-4_0.C | 11 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/lto/odr-4_1.C | 9 |
5 files changed, 33 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index aece559..3075648 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2018-11-20 Jan Hubicka <hubicka@ucw.cz> + + PR lto/84044 + * ipa-devirt.c (odr_types_equivalent_p): Use operand_equal_p to + compare ENUM values. + 2018-11-20 Jakub Jelinek <jakub@redhat.com> PR tree-optimization/87895 diff --git a/gcc/ipa-devirt.c b/gcc/ipa-devirt.c index 229eebc..b72789c 100644 --- a/gcc/ipa-devirt.c +++ b/gcc/ipa-devirt.c @@ -1343,7 +1343,7 @@ odr_types_equivalent_p (tree t1, tree t2, bool warn, bool *warned, " is defined in another translation unit")); return false; } - if (TREE_VALUE (v1) != TREE_VALUE (v2)) + if (!operand_equal_p (TREE_VALUE (v1), TREE_VALUE (v2), 0)) { warn_odr (t1, t2, NULL, NULL, warn, warned, G_("an enum with different values is defined" diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 9f1edce..d3ebbf0 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2018-11-20 Jan Hubicka <hubicka@ucw.cz> + + PR lto/84044 + * g++.dg/lto/odr-4_0.C: New testcase. + * g++.dg/lto/odr-4_1.C: New testcase. + 2018-11-20 Jakub Jelinek <jakub@redhat.com> PR c++/88110 diff --git a/gcc/testsuite/g++.dg/lto/odr-4_0.C b/gcc/testsuite/g++.dg/lto/odr-4_0.C new file mode 100644 index 0000000..5f0cf8d --- /dev/null +++ b/gcc/testsuite/g++.dg/lto/odr-4_0.C @@ -0,0 +1,11 @@ +// { dg-lto-do link } +// { dg-lto-options { -O2 -flto } } +struct B { + enum class E { V0, V1 }; + virtual ~B(); + E e; +}; + +B b; + +int main() {} diff --git a/gcc/testsuite/g++.dg/lto/odr-4_1.C b/gcc/testsuite/g++.dg/lto/odr-4_1.C new file mode 100644 index 0000000..d1d3858 --- /dev/null +++ b/gcc/testsuite/g++.dg/lto/odr-4_1.C @@ -0,0 +1,9 @@ +struct B { + enum class E { V0, V1 }; + virtual ~B(); + E e; +}; + +B::~B() = default; + + |