aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGiovanni Bajo <giovannibajo@gcc.gnu.org>2004-01-08 11:52:41 +0000
committerGiovanni Bajo <giovannibajo@gcc.gnu.org>2004-01-08 11:52:41 +0000
commit3d5ddced5629ab28ff3dfbceb1293678c9420afb (patch)
tree3184faaafa8b6c1442dbc638c2b9e93f02163461
parentbafa7fed799064bf8397c24cc55ba6a818d6784e (diff)
downloadgcc-3d5ddced5629ab28ff3dfbceb1293678c9420afb.zip
gcc-3d5ddced5629ab28ff3dfbceb1293678c9420afb.tar.gz
gcc-3d5ddced5629ab28ff3dfbceb1293678c9420afb.tar.bz2
re PR c++/12573 (ICE (segfault) with Boost.Python)
PR c++/12573 * pt.c (value_dependent_expression_p): Handle COMPONENT_REFs by looking into them recursively. They can be there because of the new __offsetof__ extension. From-SVN: r75546
-rw-r--r--gcc/cp/ChangeLog7
-rw-r--r--gcc/cp/pt.c3
2 files changed, 10 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 147ca7d..ef16d19 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,10 @@
+2004-01-08 Giovanni Bajo <giovannibajo@gcc.gnu.org>
+
+ PR c++/12573
+ * pt.c (value_dependent_expression_p): Handle COMPONENT_REFs by
+ looking into them recursively. They can be there because of the
+ new __offsetof__ extension.
+
2004-01-07 Zack Weinberg <zack@codesourcery.com>
* parser.c (cp_parser_save_member_function_body): Mark the
diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
index 3c0e7d8..6b099a1 100644
--- a/gcc/cp/pt.c
+++ b/gcc/cp/pt.c
@@ -11671,6 +11671,9 @@ value_dependent_expression_p (tree expression)
}
if (TREE_CODE (expression) == SCOPE_REF)
return dependent_scope_ref_p (expression, value_dependent_expression_p);
+ if (TREE_CODE (expression) == COMPONENT_REF)
+ return (value_dependent_expression_p (TREE_OPERAND (expression, 0))
+ || value_dependent_expression_p (TREE_OPERAND (expression, 1)));
/* A constant expression is value-dependent if any subexpression is
value-dependent. */
if (IS_EXPR_CODE_CLASS (TREE_CODE_CLASS (TREE_CODE (expression))))