From e4fb38bd17c0df57ba0dde795cf31279e51e186c Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Tue, 13 Oct 2009 15:56:07 +0200 Subject: [PATCH] re PR target/41693 (RTL Check Failure in expand_debug_expr, at cfgexpand.c:2371) PR target/41693 * rtl.h (DEBUG_EXPR_TREE_DECL): Define. * sched-vis.c (print_value): Use it. * cselib.c (cselib_hash_rtx): Likewise. * print-rtl.c (print_rtx): Likewise. * cfgexpand.c (expand_debug_rtx): Likewise. * var-tracking.c (vt_expand_loc_callback): Likewise. From-SVN: r152707 --- gcc/ChangeLog | 10 ++++++++++ gcc/cfgexpand.c | 2 +- gcc/cselib.c | 3 ++- gcc/print-rtl.c | 3 ++- gcc/rtl.h | 3 +++ gcc/sched-vis.c | 2 +- gcc/var-tracking.c | 2 +- 7 files changed, 20 insertions(+), 5 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d63029eec054..555668344e48 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,13 @@ +2009-10-13 Jakub Jelinek + + PR target/41693 + * rtl.h (DEBUG_EXPR_TREE_DECL): Define. + * sched-vis.c (print_value): Use it. + * cselib.c (cselib_hash_rtx): Likewise. + * print-rtl.c (print_rtx): Likewise. + * cfgexpand.c (expand_debug_rtx): Likewise. + * var-tracking.c (vt_expand_loc_callback): Likewise. + 2009-10-13 Richard Guenther PR lto/41565 diff --git a/gcc/cfgexpand.c b/gcc/cfgexpand.c index 31832e71c87f..6882954fab81 100644 --- a/gcc/cfgexpand.c +++ b/gcc/cfgexpand.c @@ -2368,7 +2368,7 @@ expand_debug_expr (tree exp) return op0; op0 = gen_rtx_DEBUG_EXPR (mode); - XTREE (op0, 0) = exp; + DEBUG_EXPR_TREE_DECL (op0) = exp; SET_DECL_RTL (exp, op0); return op0; diff --git a/gcc/cselib.c b/gcc/cselib.c index c26742ddf1a0..2bf466258f37 100644 --- a/gcc/cselib.c +++ b/gcc/cselib.c @@ -705,7 +705,8 @@ cselib_hash_rtx (rtx x, int create) return e->value; case DEBUG_EXPR: - hash += ((unsigned) DEBUG_EXPR << 7) + DEBUG_TEMP_UID (XTREE (x, 0)); + hash += ((unsigned) DEBUG_EXPR << 7) + + DEBUG_TEMP_UID (DEBUG_EXPR_TREE_DECL (x)); return hash ? hash : (unsigned int) DEBUG_EXPR; case CONST_INT: diff --git a/gcc/print-rtl.c b/gcc/print-rtl.c index 5ba5e634a66a..29d3ab91832f 100644 --- a/gcc/print-rtl.c +++ b/gcc/print-rtl.c @@ -321,7 +321,8 @@ print_rtx (const_rtx in_rtx) else if (i == 0 && GET_CODE (in_rtx) == DEBUG_EXPR) { #ifndef GENERATOR_FILE - fprintf (outfile, " D#%i", DEBUG_TEMP_UID (XTREE (in_rtx, 0))); + fprintf (outfile, " D#%i", + DEBUG_TEMP_UID (DEBUG_EXPR_TREE_DECL (in_rtx))); #endif } break; diff --git a/gcc/rtl.h b/gcc/rtl.h index a7be009b619e..d5dbd1eb5f1f 100644 --- a/gcc/rtl.h +++ b/gcc/rtl.h @@ -930,6 +930,9 @@ extern const char * const reg_note_name[]; #define NOTE_DURING_CALL_P(RTX) \ (RTL_FLAG_CHECK1("NOTE_VAR_LOCATION_DURING_CALL_P", (RTX), NOTE)->call) +/* DEBUG_EXPR_DECL corresponding to a DEBUG_EXPR RTX. */ +#define DEBUG_EXPR_TREE_DECL(RTX) XCTREE (RTX, 0, DEBUG_EXPR) + /* Possible initialization status of a variable. When requested by the user, this information is tracked and recorded in the DWARF debug information, along with the variable's location. */ diff --git a/gcc/sched-vis.c b/gcc/sched-vis.c index d95235ee3ec8..906e9c31f2ae 100644 --- a/gcc/sched-vis.c +++ b/gcc/sched-vis.c @@ -522,7 +522,7 @@ print_value (char *buf, const_rtx x, int verbose) cur = safe_concat (buf, cur, "]"); break; case DEBUG_EXPR: - sprintf (t, "D#%i", DEBUG_TEMP_UID (XTREE (x, 0))); + sprintf (t, "D#%i", DEBUG_TEMP_UID (DEBUG_EXPR_TREE_DECL (x))); cur = safe_concat (buf, cur, t); break; default: diff --git a/gcc/var-tracking.c b/gcc/var-tracking.c index 840128cf7c81..acc4d13d7171 100644 --- a/gcc/var-tracking.c +++ b/gcc/var-tracking.c @@ -6304,7 +6304,7 @@ vt_expand_loc_callback (rtx x, bitmap regs, int max_depth, void *data) return result; case DEBUG_EXPR: - dv = dv_from_decl (XTREE (x, 0)); + dv = dv_from_decl (DEBUG_EXPR_TREE_DECL (x)); xret = NULL; break;