diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d5ca26c35d9c..1043d2d84d12 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2001-11-24 Hans-Peter Nilsson + + * genextract.c (main): Set ro_loc for peepholes. + Sat Nov 24 17:04:10 2001 Douglas B. Rupp * fix-header.c (main): Move inf_buffer termination and inf_limit diff --git a/gcc/genextract.c b/gcc/genextract.c index 7c111368c03e..ae77ac9ba7ba 100644 --- a/gcc/genextract.c +++ b/gcc/genextract.c @@ -434,9 +434,11 @@ from the machine description file `md'. */\n\n"); /* The vector in the insn says how many operands it has. And all it contains are operands. In fact, the vector was - created just for the sake of this function. */ + created just for the sake of this function. We need to set the + location of the operands for sake of simplifications after + extraction, like eliminating subregs. */ printf (" for (i = XVECLEN (pat, 0) - 1; i >= 0; i--)\n"); - printf (" ro[i] = XVECEXP (pat, 0, i);\n"); + printf (" ro[i] = *(ro_loc[i] = &XVECEXP (pat, 0, i));\n"); printf (" break;\n\n"); }