re PR c++/20022 (-fno-access-control is broken)
authorAlexandre Oliva <aoliva@redhat.com>
Thu, 17 Feb 2005 16:42:09 +0000 (16:42 +0000)
committerAlexandre Oliva <aoliva@gcc.gnu.org>
Thu, 17 Feb 2005 16:42:09 +0000 (16:42 +0000)
gcc/cp/ChangeLog:
PR c++/20022
* semantics.c (perform_deferred_access_checks): Use
get_deferred_access_checks to get the top of the stack.
gcc/testsuite/ChangeLog:
PR c++/20022
* g++.dg/other/access3.C: New.

From-SVN: r95174

gcc/cp/ChangeLog
gcc/cp/semantics.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/other/access3.C [new file with mode: 0644]

index 91cbb9039dd87fa65c670ed46f0773303a647d84..f1406be7438301f5e4263d4bd665ca09d6d5d8dd 100644 (file)
@@ -1,3 +1,9 @@
+2005-02-17  Alexandre Oliva  <aoliva@redhat.com>
+
+       PR c++/20022
+       * semantics.c (perform_deferred_access_checks): Use
+       get_deferred_access_checks to get the top of the stack.
+
 2005-02-15  Alexandre Oliva  <aoliva@redhat.com>
 
        PR c++/17788
index ebc213d7812c7ce917bc716b55bb6f536b42014b..fcffb3ddfa66903e01ecb0566eebcac00ef87ff4 100644 (file)
@@ -285,8 +285,7 @@ perform_deferred_access_checks (void)
 {
   tree deferred_check;
 
-  for (deferred_check = (VEC_last (deferred_access, deferred_access_stack)
-                        ->deferred_access_checks);
+  for (deferred_check = get_deferred_access_checks ();
        deferred_check;
        deferred_check = TREE_CHAIN (deferred_check))
     /* Check access.  */
index 7b678a37dfe7ef07ad4e37b3da2a028d35c007a9..4d58a1082335a2227f8b87c897753a407426d448 100644 (file)
@@ -1,3 +1,8 @@
+2005-02-17  Alexandre Oliva  <aoliva@redhat.com>
+
+       PR c++/20022
+       * g++.dg/other/access3.C: New.
+
 2005-02-17  Ira Rosen  <irar@il.ibm.com>
 
        * gcc.dg/vect/vect-98.c: New test.
diff --git a/gcc/testsuite/g++.dg/other/access3.C b/gcc/testsuite/g++.dg/other/access3.C
new file mode 100644 (file)
index 0000000..2c21c1e
--- /dev/null
@@ -0,0 +1,13 @@
+// { dg-do compile }
+// { dg-options "-fno-access-control" }
+
+// PR c++/20022
+
+// Make sure -fno-access-control doesn't crash, and actually grants at
+// least some access.
+
+class B {
+  enum A {};
+};
+
+B::A r;