C++ PATCH for c++/50614 (ICE with NSDMI and -fcompare-debug)

Message ID 4E9885B1.5070900@redhat.com
State New
Headers show

Commit Message

Jason Merrill Oct. 14, 2011, 6:55 p.m.
On 10/13/2011 05:22 PM, Jason Merrill wrote:
> +	    DECL_INITIAL (r) = error_mark_node;

While working on 50507 I noticed that we check for error_mark_node in 
walk_field_subobs, so I'm changing the placeholder to void_zero_node.

Tested x86_64-pc-linux-gnu, applying to trunk.


commit ca436fb810b1b85abcb3bd7bc950e55df259dafd
Author: Jason Merrill <jason@redhat.com>
Date:   Thu Oct 13 21:56:23 2011 -0400

    	* pt.c (tsubst_decl) [FIELD_DECL]: Use void_zero_node
    	instead of error_mark_node as a placeholder.

diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
index 1632c01..bbe1139 100644
--- a/gcc/cp/pt.c
+++ b/gcc/cp/pt.c
@@ -10273,8 +10273,8 @@  tsubst_decl (tree t, tree args, tsubst_flags_t complain)
 	    /* Set up DECL_TEMPLATE_INFO so that we can get at the
 	       NSDMI in perform_member_init.  Still set DECL_INITIAL
-	       to error_mark_node so that we know there is one.  */
-	    DECL_INITIAL (r) = error_mark_node;
+	       so that we know there is one.  */
+	    DECL_INITIAL (r) = void_zero_node;
 	    gcc_assert (DECL_LANG_SPECIFIC (r) == NULL);
 	    retrofit_lang_decl (r);
 	    DECL_TEMPLATE_INFO (r) = build_template_info (t, args);