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] |