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] | |
A detailed description of the problem can be found here:
http://gcc.gnu.org/ml/gcc/2005-08/msg00320.html
The bottom line is that during loop-peeling we can't update the ssa-form
for variables that are not in loop-closed-ssa-form, and virtual-variables
are not guaranteed to be in loop-closed-form. The solution is to mark these
virtual variables for renaming.
Because there's a call to delete_update_ssa() between the point where
peeling takes place and the call to update_ssa(), we don't mark the
variables for renaming directly during peeling, but just record them in a
bitmap, and mark them for renaming later, just before the call to
update_ssa().
Bootstrapped (with vectorization enabled) on powerpc-darwin, tested on the
vectorizer testcases.
Verified that the testcases from PR22543 and PR22228 are solved both on
powerpc-darwin and i686-pc-linux-gnu.
ok to commit?
thanks,
dorit
:ADDPATCH SSA:
Changelog:
PR tree-optimization/22228
* tree-ssa-loop (pass_vectorize): Replace PROP_ssa with
TODO_verify_loops in required properties for this pass.
* tree-vect-transform.c (vect_transform_loop): Mark the variables
that
are recorded in vect_vnames_to_rename for renaming.
* tree-vectorizer.c (vect_vnames_to_rename): New global bitmap.
(slpeel_update_phi_nodes_for_guard1): Record virtual vars for
renaming
in vect_vnames_to_rename.
(vectorize_loops): Allocate and free the vect_vnames_to_rename
bitmap.
* tree-vectorizer.h (vect_vnames_to_rename): New extern variable.
Patch:
(See attached file: aug14.updatessa_patch)Attachment:
aug14.updatessa_patch
Description: Binary data
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |