PR c++/12573
authorgiovannibajo <giovannibajo@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 8 Jan 2004 11:52:41 +0000 (11:52 +0000)
committergiovannibajo <giovannibajo@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 8 Jan 2004 11:52:41 +0000 (11:52 +0000)
* pt.c (value_dependent_expression_p): Handle COMPONENT_REFs by
looking into them recursively. They can be there because of the
new __offsetof__ extension.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@75546 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/cp/ChangeLog
gcc/cp/pt.c

index 147ca7d..ef16d19 100644 (file)
@@ -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
index 3c0e7d8..6b099a1 100644 (file)
@@ -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))))