This is the mail archive of the gcc-patches@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] | |
Hi,
This is a followup patch better handling below case:
for (i = 0; i < n; i++)
{
a[i] = 1;
a[i+2] = 2;
}
Instead of generating root variables by loading from memory and propagating with PHI
nodes, like:
t0 = a[0];
t1 = a[1];
for (i = 0; i < n; i++)
{
a[i] = 1;
t2 = 2;
t0 = t1;
t1 = t2;
}
a[n] = t0;
a[n+1] = t1;
We can simply store loop invariant values after loop body if we know loop iterates more
than chain->length times, like:
for (i = 0; i < n; i++)
{
a[i] = 1;
}
a[n] = 2;
a[n+1] = 2;
Bootstrap(O2/O3) in patch series on x86_64 and AArch64. Is it OK?
Thanks,
bin
2017-06-21 Bin Cheng <bin.cheng@arm.com>
* tree-predcom.c: (struct chain): Handle store-store chain in which
stores for elimination only store loop invariant values.
(execute_pred_commoning_chain): Ditto.
(prepare_initializers_chain_store_elim): Ditto.
(prepare_finalizers): Ditto.
(is_inv_store_elimination_chain): New function.
(initialize_root_vars_store_elim_1): New function.Attachment:
inv-store-elimination-20170621.txt
Description: inv-store-elimination-20170621.txt
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |