Question concerning loop-iv package
Revital Eres
ERES@il.ibm.com
Tue Jun 1 16:16:00 GMT 2004
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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: diff.1_6
Type: application/octet-stream
Size: 68061 bytes
Desc: not available
URL: <https://gcc.gnu.org/pipermail/gcc/attachments/20040601/d95dedba/attachment.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: ChangeLog_1_6
Type: application/octet-stream
Size: 1498 bytes
Desc: not available
URL: <https://gcc.gnu.org/pipermail/gcc/attachments/20040601/d95dedba/attachment-0001.obj>
More information about the Gcc
mailing list