summaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorgiovannibajo <giovannibajo@138bc75d-0d04-0410-961f-82ee72b054a4>2003-12-02 12:02:21 +0000
committergiovannibajo <giovannibajo@138bc75d-0d04-0410-961f-82ee72b054a4>2003-12-02 12:02:21 +0000
commit880527e93c626913b7337ee811157892a9d039cb (patch)
treecc58377e248b034c6f784b938254d81344065788 /gcc
parent2aea9e36612b77fa729862a644deb9b7673bd8d8 (diff)
downloadgcc-880527e93c626913b7337ee811157892a9d039cb.tar.gz
PR c++/12573
* pt.c (value_dependent_expression_p): Handle COMPONENT_REFs by looking into them recursively. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@74172 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog6
-rw-r--r--gcc/cp/pt.c3
2 files changed, 9 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index b4d1df938b8..972396880d0 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,9 @@
+2003-12-02 Giovanni Bajo <giovannibajo@gcc.gnu.org>
+
+ PR c++/12573
+ * pt.c (value_dependent_expression_p): Handle COMPONENT_REFs by
+ looking into them recursively.
+
2003-12-02 Richard Henderson <rth@redhat.com>
* name-lookup.h (struct cp_binding_level): Use ENUM_BITFIELD.
diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
index edfb8a52e2f..93d790bc818 100644
--- a/gcc/cp/pt.c
+++ b/gcc/cp/pt.c
@@ -11713,6 +11713,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))))