Here is a trivial patch that improves the debuggability of recog_data. Without this p recog_data in gdb on linux, didn't seem to work at all. My fingers were not amused. :-)
Checked it in a obvious.
2013-05-14 Mike Stump <mikest...@comcast.net> * recog.h: Rename struct recog_data to Recog_data. * recog.c: Likewise. * reload.c (can_reload_into): Likewise. * config/picochip/picochip.c: Likewise. Index: config/picochip/picochip.c =================================================================== --- config/picochip/picochip.c (revision 198896) +++ config/picochip/picochip.c (working copy) @@ -187,7 +187,7 @@ struct vliw_state picochip_current_vliw_ /* Save/restore recog_data. */ static int picochip_saved_which_alternative; -static struct recog_data picochip_saved_recog_data; +static struct Recog_data picochip_saved_recog_data; /* Determine which ALU to use for the instruction in picochip_current_prescan_insn. */ @@ -3150,7 +3150,7 @@ picochip_save_recog_data (void) { picochip_saved_which_alternative = which_alternative; memcpy (&picochip_saved_recog_data, &recog_data, - sizeof (struct recog_data)); + sizeof (struct Recog_data)); } /* Restore some of the contents of global variable recog_data. */ @@ -3159,7 +3159,7 @@ picochip_restore_recog_data (void) { which_alternative = picochip_saved_which_alternative; memcpy (&recog_data, &picochip_saved_recog_data, - sizeof (struct recog_data)); + sizeof (struct Recog_data)); } /* Ensure that no var tracking notes are emitted in the middle of a Index: recog.c =================================================================== --- recog.c (revision 198896) +++ recog.c (working copy) @@ -70,7 +70,7 @@ static rtx split_insn (rtx); int volatile_ok; -struct recog_data recog_data; +struct Recog_data recog_data; /* Contains a vector of operand_alternative structures for every operand. Set up by preprocess_constraints. */ Index: recog.h =================================================================== --- recog.h (revision 198896) +++ recog.h (working copy) @@ -179,7 +179,7 @@ extern int which_alternative; /* The following vectors hold the results from insn_extract. */ -struct recog_data +struct Recog_data { /* It is very tempting to make the 5 operand related arrays into a structure and index on that. However, to be source compatible @@ -245,7 +245,7 @@ struct recog_data rtx insn; }; -extern struct recog_data recog_data; +extern struct Recog_data recog_data; /* Contains a vector of operand_alternative structures for every operand. Set up by preprocess_constraints. */ Index: reload.c =================================================================== --- reload.c (revision 198896) +++ reload.c (working copy) @@ -895,7 +895,7 @@ can_reload_into (rtx in, int regno, enum { rtx dst, test_insn; int r = 0; - struct recog_data save_recog_data; + struct Recog_data save_recog_data; /* For matching constraints, we often get notional input reloads where we want to use the original register as the reload register. I.e. ------------------------------