From 2dbbe435fe16ecf0bca1e5f5b97374d41e233b29 Mon Sep 17 00:00:00 2001 From: Hans-Peter Nilsson Date: Sat, 24 Nov 2001 22:57:28 +0000 Subject: [PATCH] * genextract.c (main): Set ro_loc for peepholes. From-SVN: r47308 --- gcc/ChangeLog | 4 ++++ gcc/genextract.c | 6 ++++-- 2 files changed, 8 insertions(+), 2 deletions(-) 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"); }