aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJan Hubicka <hubicka@ucw.cz>2018-11-21 03:38:43 +0100
committerJan Hubicka <hubicka@gcc.gnu.org>2018-11-21 02:38:43 +0000
commit48d1f31d1b7131e8f809ede8256e4f1eb6c5c3ae (patch)
treed9521deeb7ea397d51336ba8b4f0c535f582706b /gcc
parentd3d684c642943cb5a481fcc38e0ee46ee8b1223c (diff)
downloadgcc-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/ChangeLog6
-rw-r--r--gcc/ipa-devirt.c2
-rw-r--r--gcc/testsuite/ChangeLog6
-rw-r--r--gcc/testsuite/g++.dg/lto/odr-4_0.C11
-rw-r--r--gcc/testsuite/g++.dg/lto/odr-4_1.C9
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;
+
+