diff options
author | CoprDistGit <infra@openeuler.org> | 2024-08-01 14:23:42 +0000 |
---|---|---|
committer | CoprDistGit <infra@openeuler.org> | 2024-08-01 14:23:42 +0000 |
commit | 82711f6567ef069eebb942e382e2c3fa61fbf538 (patch) | |
tree | 22200b7326b32ca672ffb6e4ce6d19a09dc476e5 /gcc48-pr77375.patch | |
parent | 5d624aa0d36abe76a344f0593eae5cf36d083b15 (diff) |
automatic import of compat-libgfortran-48openeuler24.03_LTSopeneuler23.09
Diffstat (limited to 'gcc48-pr77375.patch')
-rw-r--r-- | gcc48-pr77375.patch | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/gcc48-pr77375.patch b/gcc48-pr77375.patch new file mode 100644 index 0000000..09158e2 --- /dev/null +++ b/gcc48-pr77375.patch @@ -0,0 +1,37 @@ +2017-05-30 Jakub Jelinek <jakub@redhat.com> + + Backported from mainline + 2016-09-16 Jakub Jelinek <jakub@redhat.com> + + PR c++/77375 + * class.c (check_bases): Set CLASSTYPE_HAS_MUTABLE if any + TYPE_HAS_MUTABLE_P for any bases. + + * g++.dg/cpp0x/mutable1.C: New test. + +--- gcc/cp/class.c 2017-10-17 17:27:32.287980595 +0200 ++++ gcc/cp/class.c 2017-10-17 17:29:11.104213281 +0200 +@@ -1479,6 +1479,8 @@ check_bases (tree t, + |= CLASSTYPE_CONTAINS_EMPTY_CLASS_P (basetype); + TYPE_HAS_COMPLEX_DFLT (t) |= (!TYPE_HAS_DEFAULT_CONSTRUCTOR (basetype) + || TYPE_HAS_COMPLEX_DFLT (basetype)); ++ if (TYPE_HAS_MUTABLE_P (basetype)) ++ CLASSTYPE_HAS_MUTABLE (t) = 1; + + /* A standard-layout class is a class that: + ... +--- /dev/null ++++ gcc/testsuite/g++.dg/cpp0x/mutable1.C +@@ -0,0 +1,12 @@ ++// PR c++/77375 ++// { dg-do run { target c++11 } } ++ ++struct Base { mutable int i; }; ++struct Derived : Base {}; ++const Derived foo{}; ++ ++int ++main () ++{ ++ foo.i = 42; ++} |