From: Martin Liska Date: Wed, 25 Apr 2018 07:41:25 +0000 (+0200) Subject: Backport r259429 X-Git-Tag: releases/gcc-6.5.0~353 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8ba54b29af99a3b068a9e5f3dd6b7bb0ce3d03e9;p=thirdparty%2Fgcc.git Backport r259429 2018-04-25 Martin Liska Backport from mainline 2018-04-17 Jan Hubicka PR lto/85405 * ipa-devirt.c (odr_types_equivalent_p): Handle bit fields. From-SVN: r259633 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c75e50dbca0a..b7bb3d436f9d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2018-04-25 Martin Liska + + Backport from mainline + 2018-04-17 Jan Hubicka + + PR lto/85405 + * ipa-devirt.c (odr_types_equivalent_p): Handle bit fields. + 2018-04-23 Aaron Sawdey Backport from mainline diff --git a/gcc/ipa-devirt.c b/gcc/ipa-devirt.c index 9853c4a499c2..b4d2a94858fd 100644 --- a/gcc/ipa-devirt.c +++ b/gcc/ipa-devirt.c @@ -1576,8 +1576,15 @@ odr_types_equivalent_p (tree t1, tree t2, bool warn, bool *warned, "in another translation unit")); return false; } - gcc_assert (DECL_NONADDRESSABLE_P (f1) - == DECL_NONADDRESSABLE_P (f2)); + if (DECL_BIT_FIELD (f1) != DECL_BIT_FIELD (f2)) + { + warn_odr (t1, t2, f1, f2, warn, warned, + G_ ("one field is bitfield while other is not ")); + return false; + } + else + gcc_assert (DECL_NONADDRESSABLE_P (f1) + == DECL_NONADDRESSABLE_P (f2)); } /* If one aggregate has more fields than the other, they