From 758333d566eedc849236c5900d579bd03e67a5fd Mon Sep 17 00:00:00 2001
From: Nathan Sidwell <nathan@codesourcery.com>
Date: Wed, 11 Jan 2006 16:31:44 +0000
Subject: [PATCH] tree.c (lvalue_p_1): Any part of a COMPONENT_REF affects
 packedness.

	* tree.c (lvalue_p_1): Any part of a COMPONENT_REF affects
	packedness.

	* g++.dg/ext/packed3.C: Add expected packed error.

From-SVN: r109590
---
 gcc/cp/ChangeLog                   | 5 +++++
 gcc/cp/tree.c                      | 3 ---
 gcc/testsuite/ChangeLog            | 4 ++++
 gcc/testsuite/g++.dg/ext/packed3.C | 2 +-
 4 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 0680fed17ecc..180c926b7ea7 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,8 @@
+2006-01-11  Nathan Sidwell  <nathan@codesourcery.com>
+
+	* tree.c (lvalue_p_1): Any part of a COMPONENT_REF affects
+	packedness.
+
 2006-01-06  Gabriel Dos Reis  <gdr@integrablesolutions.net>
 
 	* parser.c (cp_parser_primary_expression): Document the grammar
diff --git a/gcc/cp/tree.c b/gcc/cp/tree.c
index df59f5003def..96b461ce66fd 100644
--- a/gcc/cp/tree.c
+++ b/gcc/cp/tree.c
@@ -87,9 +87,6 @@ lvalue_p_1 (tree ref,
     case COMPONENT_REF:
       op1_lvalue_kind = lvalue_p_1 (TREE_OPERAND (ref, 0),
 				    treat_class_rvalues_as_lvalues);
-      /* In an expression of the form "X.Y", the packed-ness of the
-	 expression does not depend on "X".  */
-      op1_lvalue_kind &= ~clk_packed;
       /* Look at the member designator.  */
       if (!op1_lvalue_kind
 	  /* The "field" can be a FUNCTION_DECL or an OVERLOAD in some
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 202512cb0ecd..efd6594e8ac7 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2006-01-11  Nathan Sidwell  <nathan@codesourcery.com>
+
+	* g++.dg/ext/packed3.C: Add expected packed error.
+
 2006-01-11  Hans-Peter Nilsson  <hp@axis.com>
 
 	PR target/25706
diff --git a/gcc/testsuite/g++.dg/ext/packed3.C b/gcc/testsuite/g++.dg/ext/packed3.C
index 3494ff4c31ee..880b5d9b4692 100644
--- a/gcc/testsuite/g++.dg/ext/packed3.C
+++ b/gcc/testsuite/g++.dg/ext/packed3.C
@@ -20,6 +20,6 @@ struct  __attribute__ ((packed)) Packed
 void Foo (Packed &p)
 {
   Ref (p.i); // { dg-error "cannot bind packed field" "" { target { ! default_packed } } }
-  Ref (p.u.i);
+  Ref (p.u.i); // { dg-error "cannot bind packed field" "" { target { ! default_packed } } }
   Ref (p.u); // { dg-error "cannot bind packed field" "" { target { ! default_packed } } }
 }
-- 
GitLab