This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
Hello, Attached is the new version of the unrolling addressing optimization patch I intend to submit. We added a new functionality which takes care of moving the initialization of the base addr (addr =&a[i]) to the preheader in case of unrolling. For simplicity the diff of loop-iv.c file includes your patches - (http://gcc.gnu.org/ml/gcc-patches/2004-04/msg00177.html, http://gcc.gnu.org/ml/gcc-patches/2004-04/msg01740.html); together with the adjustments I made on the last patch as was mentioned in my previous email. Thanks, Revital Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> 28/05/2004 18:46 To: Revital Eres/Haifa/IBM@IBMIL cc: Subject: Re: Question concerning loop-iv package Hello, > I am using the loop-iv package; which includes your latest patches; to get > the initialization expression of an induction variable. > (The patches are - http://gcc.gnu.org/ml/gcc-patches/2004-04/msg00177.html > , http://gcc.gnu.org/ml/gcc-patches/2004-04/msg01740.html) > > In some cases the initialization expression I get from iv->base is not > well formed which causes an unrecognizable instruction error. > It seems that the reason for this is that the code uses the insn's equiv > notes when analyzing the iv definition. > (extracted with find_reg_equal_equiv_note function) could you please send me the patch with that it causes the problem? Zdenek > For example; when compiling the following code on PowerPc: > > typedef unsigned char uch; > # define EXTERN(type, array) extern type array[] > EXTERN(uch, inbuf); /* input buffer */ > > int insize; > > int unlzw() > { > long posbits; > int i; > int e; > int o; > > e = insize-(o = (posbits>>3)); > > for (i = 0 ; i < e ; ++i) { > inbuf[i] = inbuf[i+o]; > } > > return 1; > } > > > The expression which represents the definition of the induction variable > 131 = inbuf+i (inbuf[i+o]) > will hold the expr_list of the following insn: > > (insn 293 281 302 3 (set (reg:SI 131) > (plus:SI (reg/v:SI 119 [ i ]) > (reg/f:SI 127))) -1 (nil) > (expr_list:REG_EQUAL (plus:SI (reg/v:SI 119 [ i ]) > (symbol_ref:SI ("inbuf") [flags 0x40] <var_decl 0x402bdd80 > inbuf>)) > (nil))) > > While the instruction I actually want is the bold insn. > > Thanks, > Revital
Attachment:
diff.1_6
Description: Binary data
Attachment:
ChangeLog_1_6
Description: Binary data
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |