public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug tree-optimization/23940] New: SSA_NAMEs are not released after no longer being used.
@ 2005-09-18  0:50 pinskia at gcc dot gnu dot org
  2005-09-19 14:03 ` [Bug tree-optimization/23940] " amacleod at redhat dot com
                   ` (10 more replies)
  0 siblings, 11 replies; 19+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2005-09-18  0:50 UTC (permalink / raw)
  To: gcc-bugs

See <http://gcc.gnu.org/ml/gcc-patches/2005-08/msg01433.html>
and <http://gcc.gnu.org/ml/gcc/2005-08/msg00689.html>.



Note this could also be considered a compile time hog for checking enabled case.

-- 
           Summary: SSA_NAMEs are not released after no longer being used.
           Product: gcc
           Version: 4.1.0
            Status: UNCONFIRMED
          Keywords: memory-hog
          Severity: normal
          Priority: P2
         Component: tree-optimization
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: pinskia at gcc dot gnu dot org
                CC: gcc-bugs at gcc dot gnu dot org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23940


^ permalink raw reply	[flat|nested] 19+ messages in thread

* [Bug tree-optimization/23940] SSA_NAMEs are not released after no longer being used.
  2005-09-18  0:50 [Bug tree-optimization/23940] New: SSA_NAMEs are not released after no longer being used pinskia at gcc dot gnu dot org
@ 2005-09-19 14:03 ` amacleod at redhat dot com
  2005-09-19 15:24 ` pinskia at gcc dot gnu dot org
                   ` (9 subsequent siblings)
  10 siblings, 0 replies; 19+ messages in thread
From: amacleod at redhat dot com @ 2005-09-19 14:03 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From amacleod at redhat dot com  2005-09-19 14:03 -------
I thought there was a discussion in 

http://gcc.gnu.org/ml/gcc/2005-08/msg00692.html

where the solution for dealing with releasing ssa names now that we have
immediate use data available all the time is to simply add a lightning fast pass
which removes unused ssa_names by zipping through the ssa_name table and
releasing any which have no uses. 

I dont see much point in continuing to find places and add calls to release_defs
when we can simply fix it for once and for all.

we can add it as a pass, or simply as a TODO flag.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23940


^ permalink raw reply	[flat|nested] 19+ messages in thread

* [Bug tree-optimization/23940] SSA_NAMEs are not released after no longer being used.
  2005-09-18  0:50 [Bug tree-optimization/23940] New: SSA_NAMEs are not released after no longer being used pinskia at gcc dot gnu dot org
  2005-09-19 14:03 ` [Bug tree-optimization/23940] " amacleod at redhat dot com
@ 2005-09-19 15:24 ` pinskia at gcc dot gnu dot org
  2005-09-19 15:45 ` amacleod at redhat dot com
                   ` (8 subsequent siblings)
  10 siblings, 0 replies; 19+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2005-09-19 15:24 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From pinskia at gcc dot gnu dot org  2005-09-19 15:23 -------
(In reply to comment #1)
> where the solution for dealing with releasing ssa names now that we have
> immediate use data available all the time is to simply add a lightning fast pass
> which removes unused ssa_names by zipping through the ssa_name table and
> releasing any which have no uses. 

That will not work as there is no way to tell if a SSA_NAME is used or not as the statement might have 
been removed too which is what all those release_defs do
I have a pass which is not fast as it does a pass over the IR which removes unused/no alive SSA_NAMEs 
and I really don't want another pass over the IR going in as a TODO.

I really only filed this bug to track this issue.

Also an old point to this discussion where we do release_defs:
http://gcc.gnu.org/ml/gcc-patches/2004-09/msg00252.html
http://gcc.gnu.org/ml/gcc-patches/2004-09/msg01511.html

In fact Diego added release_defs:
http://gcc.gnu.org/ml/gcc-patches/2004-07/msg02132.html

I don't know why people go back and forth on this issue without cleaning up.

-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23940


^ permalink raw reply	[flat|nested] 19+ messages in thread

* [Bug tree-optimization/23940] SSA_NAMEs are not released after no longer being used.
  2005-09-18  0:50 [Bug tree-optimization/23940] New: SSA_NAMEs are not released after no longer being used pinskia at gcc dot gnu dot org
  2005-09-19 14:03 ` [Bug tree-optimization/23940] " amacleod at redhat dot com
  2005-09-19 15:24 ` pinskia at gcc dot gnu dot org
@ 2005-09-19 15:45 ` amacleod at redhat dot com
  2005-09-19 15:50 ` pinskia at gcc dot gnu dot org
                   ` (7 subsequent siblings)
  10 siblings, 0 replies; 19+ messages in thread
From: amacleod at redhat dot com @ 2005-09-19 15:45 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From amacleod at redhat dot com  2005-09-19 15:45 -------
Did you read the original thread?

We aren't going back and forth over anything.


Diego added release_defs  in 08/2004 because we did not have immediate_use
information freely available at the time. The current immeidate use code was
added in spring of 2005, or something like that, so it is now freely available.

All we need to do now is do a quick loop through the ssa_name table between
selected (or even all) passes, and if there are no uses associated with that
ssa_name we *know* it is unused since we are between passes.  Then you simply
call release_ssa_name() directly on that node.

There are no passes over the IL and release_defs will go away too. 

-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23940


^ permalink raw reply	[flat|nested] 19+ messages in thread

* [Bug tree-optimization/23940] SSA_NAMEs are not released after no longer being used.
  2005-09-18  0:50 [Bug tree-optimization/23940] New: SSA_NAMEs are not released after no longer being used pinskia at gcc dot gnu dot org
                   ` (2 preceding siblings ...)
  2005-09-19 15:45 ` amacleod at redhat dot com
@ 2005-09-19 15:50 ` pinskia at gcc dot gnu dot org
  2005-09-19 15:59 ` amacleod at redhat dot com
                   ` (6 subsequent siblings)
  10 siblings, 0 replies; 19+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2005-09-19 15:50 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From pinskia at gcc dot gnu dot org  2005-09-19 15:49 -------
(In reply to comment #3)
> Did you read the original thread?

Well then you do it since you made this mess in the first place.

-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23940


^ permalink raw reply	[flat|nested] 19+ messages in thread

* [Bug tree-optimization/23940] SSA_NAMEs are not released after no longer being used.
  2005-09-18  0:50 [Bug tree-optimization/23940] New: SSA_NAMEs are not released after no longer being used pinskia at gcc dot gnu dot org
                   ` (3 preceding siblings ...)
  2005-09-19 15:50 ` pinskia at gcc dot gnu dot org
@ 2005-09-19 15:59 ` amacleod at redhat dot com
  2005-09-19 16:05 ` pinskia at physics dot uc dot edu
                   ` (5 subsequent siblings)
  10 siblings, 0 replies; 19+ messages in thread
From: amacleod at redhat dot com @ 2005-09-19 15:59 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From amacleod at redhat dot com  2005-09-19 15:59 -------
I don't understand.  Exactly what mess did I make?

We also probably have to set SSA_NAME_DEF_STMT to NULL in bsi_remove in order to
be sure that an SSA name with no uses isn't actually associated with a stmt any
more (you can have valid defs with no uses). It is set when the SSA_NAME is
created, but I don't think that field ever gets cleared anywhere else.

 

-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23940


^ permalink raw reply	[flat|nested] 19+ messages in thread

* [Bug tree-optimization/23940] SSA_NAMEs are not released after no longer being used.
  2005-09-18  0:50 [Bug tree-optimization/23940] New: SSA_NAMEs are not released after no longer being used pinskia at gcc dot gnu dot org
                   ` (4 preceding siblings ...)
  2005-09-19 15:59 ` amacleod at redhat dot com
@ 2005-09-19 16:05 ` pinskia at physics dot uc dot edu
  2005-09-19 16:33 ` amacleod at redhat dot com
                   ` (4 subsequent siblings)
  10 siblings, 0 replies; 19+ messages in thread
From: pinskia at physics dot uc dot edu @ 2005-09-19 16:05 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From pinskia at physics dot uc dot edu  2005-09-19 16:05 -------
Subject: Re:  SSA_NAMEs are not released after no longer being used.


On Sep 19, 2005, at 11:59 AM, amacleod at redhat dot com wrote:

> We also probably have to set SSA_NAME_DEF_STMT to NULL in bsi_remove 
> in order to
> be sure that an SSA name with no uses isn't actually associated with a 
> stmt any
> more (you can have valid defs with no uses). It is set when the 
> SSA_NAME is
> created, but I don't think that field ever gets cleared anywhere else.

Except that does not work as mentioned before as people do bsi_remove
and then bsi_insert on the same staement when moving the statement 
around.
And isn't that the same thing as adding release_defs in bsi_remove?

And that will not work for the SSA_NAMEs used for aliasing and then the
variable becomes a gimple register.


-- Pinski



-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23940


^ permalink raw reply	[flat|nested] 19+ messages in thread

* [Bug tree-optimization/23940] SSA_NAMEs are not released after no longer being used.
  2005-09-18  0:50 [Bug tree-optimization/23940] New: SSA_NAMEs are not released after no longer being used pinskia at gcc dot gnu dot org
                   ` (5 preceding siblings ...)
  2005-09-19 16:05 ` pinskia at physics dot uc dot edu
@ 2005-09-19 16:33 ` amacleod at redhat dot com
  2005-09-19 16:44 ` pinskia at physics dot uc dot edu
                   ` (3 subsequent siblings)
  10 siblings, 0 replies; 19+ messages in thread
From: amacleod at redhat dot com @ 2005-09-19 16:33 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From amacleod at redhat dot com  2005-09-19 16:33 -------
Its not the same thing since we arent actually releasing an SSA_NAME until
between passes. All we are doing is clearing the SSA_NAME_DEF_STMT field.
 
True that inserting a stmt after bsi_remove will not set the SSA_NAME_DEF_STMT
field back, but we could set it during the bsi_insert and bsi_replace routines.
 The operand scanner now sets all the defs, so its just a matter of loping over
the defs and setting the field.


I don't understand the last bit of your comment:

"And that will not work for the SSA_NAMEs used for aliasing and then the
variable becomes a gimple register."

If we set SSA_NAME_DEF_FOR_STMT during inserts, and clear it during bsi_remove,
does that resolve the issues you are referring to?


Im simply trying to have a maintenance free mechanism for handling releasing
ssa_names that doesn't involve having to find all the locations where they are
free and calling a routine to free them. That is undesirable. 

We originally wanted to be able to just free them, but ran into some issues that
couldn't be resolved at the time. I believe those problems can now be resolved.  

We had lazy updating of statements back then as well which made doing this fix
during inserts impossible. That restriction is no longer present either. (except
in DOM... it has a hacked up loop to allow lazy updating until it is fixed. I
dont know if there is an issue there or not. The DOM fixup loop might also have
to set SSA_NAME_DEF_FOR_STMT if it is cleared on modified stmts, I'm not sure.

-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23940


^ permalink raw reply	[flat|nested] 19+ messages in thread

* [Bug tree-optimization/23940] SSA_NAMEs are not released after no longer being used.
  2005-09-18  0:50 [Bug tree-optimization/23940] New: SSA_NAMEs are not released after no longer being used pinskia at gcc dot gnu dot org
                   ` (6 preceding siblings ...)
  2005-09-19 16:33 ` amacleod at redhat dot com
@ 2005-09-19 16:44 ` pinskia at physics dot uc dot edu
  2005-09-19 18:10 ` amacleod at redhat dot com
                   ` (2 subsequent siblings)
  10 siblings, 0 replies; 19+ messages in thread
From: pinskia at physics dot uc dot edu @ 2005-09-19 16:44 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From pinskia at physics dot uc dot edu  2005-09-19 16:44 -------
Subject: Re:  SSA_NAMEs are not released after no longer being used.


On Sep 19, 2005, at 12:33 PM, amacleod at redhat dot com wrote:

> "And that will not work for the SSA_NAMEs used for aliasing and then 
> the
> variable becomes a gimple register."
>
> If we set SSA_NAME_DEF_FOR_STMT during inserts, and clear it during 
> bsi_remove,
> does that resolve the issues you are referring to?

We don't call bsi_remove for those statements so SSA_NAME_DEF_FOR_STMT 
is always
set to that statement even though the SSA_NAME is unused.

The testcase (-O1 -fno-tree-fre) from my orginal email on the subject:
int f(void)
{
int i;
int *j = &i;
i = 1;
return *j;
}

SSA form right before .alias2:
   #   i_4 = V_MUST_DEF <i_3>;
   i = tt_2;
   D.1274_5 = tt_2;
   return tt_2;

After:
   i_1 = tt_2;
   D.1274_5 = tt_2;
   return tt_2;


Note that i_4 is not freed and its SSA_NAME_DEF_FOR_STMT is NULLd.

Thanks,
Andrew Pinski



-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23940


^ permalink raw reply	[flat|nested] 19+ messages in thread

* [Bug tree-optimization/23940] SSA_NAMEs are not released after no longer being used.
  2005-09-18  0:50 [Bug tree-optimization/23940] New: SSA_NAMEs are not released after no longer being used pinskia at gcc dot gnu dot org
                   ` (7 preceding siblings ...)
  2005-09-19 16:44 ` pinskia at physics dot uc dot edu
@ 2005-09-19 18:10 ` amacleod at redhat dot com
  2005-09-19 20:34 ` amacleod at redhat dot com
  2005-09-30 14:58 ` amacleod at redhat dot com
  10 siblings, 0 replies; 19+ messages in thread
From: amacleod at redhat dot com @ 2005-09-19 18:10 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From amacleod at redhat dot com  2005-09-19 18:10 -------
Do you mean SSA_NAME_DEF_FOR_STMT for i_4 would NOT be NULLed since we didnt
call bsi_remove on it? 

if it is NULL, then it has no uses and we can simply remove it with the trip
through the SSA_NAME table.

If it isn't NULL is when we have the problem that needs resolving. The operand
cache has a list of any virtual defs that are being thrown away after processing
each  statement, we might be able to catch them all there, I'd have to check it out.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23940


^ permalink raw reply	[flat|nested] 19+ messages in thread

* [Bug tree-optimization/23940] SSA_NAMEs are not released after no longer being used.
  2005-09-18  0:50 [Bug tree-optimization/23940] New: SSA_NAMEs are not released after no longer being used pinskia at gcc dot gnu dot org
                   ` (8 preceding siblings ...)
  2005-09-19 18:10 ` amacleod at redhat dot com
@ 2005-09-19 20:34 ` amacleod at redhat dot com
  2005-09-30 14:58 ` amacleod at redhat dot com
  10 siblings, 0 replies; 19+ messages in thread
From: amacleod at redhat dot com @ 2005-09-19 20:34 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From amacleod at redhat dot com  2005-09-19 20:34 -------
Actually, it occurs to me that we might be able to make the entire
SSA_NAME_DEF_STMT process completely transparent, including the setting of it. 
The operand cache knows whenever an SSA_NAME is added to any stmt in the IL,
either real or virtual. It also knows when one is removed.  Between passes would
then be appropriate time to remove any which are no longer in the IL. This
should resolve any issues with trying find the right places to set or reset
SSA_NAME_DEF_STMT

In theory. :-) 

I'll take a look at it shortly and see what happens.  

-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23940


^ permalink raw reply	[flat|nested] 19+ messages in thread

* [Bug tree-optimization/23940] SSA_NAMEs are not released after no longer being used.
  2005-09-18  0:50 [Bug tree-optimization/23940] New: SSA_NAMEs are not released after no longer being used pinskia at gcc dot gnu dot org
                   ` (9 preceding siblings ...)
  2005-09-19 20:34 ` amacleod at redhat dot com
@ 2005-09-30 14:58 ` amacleod at redhat dot com
  10 siblings, 0 replies; 19+ messages in thread
From: amacleod at redhat dot com @ 2005-09-30 14:58 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From amacleod at redhat dot com  2005-09-30 14:53 -------
I'm fine with the releasessaname.diff.txt

you aren't doing anything different than we normally do now. I prefer this over
adding a flag to bsi_remove for sure.

I looked into an alternative which follows up on the thread we had going. A
better longer term solution is to have it all taken care of automatically. I got
most of the way through implementing the automatic setting and clearing of
SSA_NAME_DEF_STMT as stmts are processed by build_stmt_operands(). That is the
one place where we know  precisely when a stmt has entered and exited the IL.
Then between passes it is trivial to check if SSA_NAME_DEF_STMT is NULL and free
the ssa-name.  

I had it mostly working, but the changes are pretty invasive as no one ever has
to set or clear SSA_NAME_DEF_STMT any more, its always simply "right".  Its too
invasive for stage 3 thats for sure. I'll revisit it when we get back to stage 1
and test out performance and whether its really what we want to do.

-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23940


^ permalink raw reply	[flat|nested] 19+ messages in thread

* [Bug tree-optimization/23940] SSA_NAMEs are not released after no longer being used.
       [not found] <bug-23940-6528@http.gcc.gnu.org/bugzilla/>
                   ` (5 preceding siblings ...)
  2009-04-03 10:29 ` rguenth at gcc dot gnu dot org
@ 2009-04-03 10:29 ` rguenth at gcc dot gnu dot org
  6 siblings, 0 replies; 19+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2009-04-03 10:29 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #17 from rguenth at gcc dot gnu dot org  2009-04-03 10:26 -------
Subject: Bug 23940

Author: rguenth
Date: Fri Apr  3 10:24:28 2009
New Revision: 145494

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=145494
Log:
2009-04-03  Richard Guenther  <rguenther@suse.de>

        PR middle-end/13146
        PR tree-optimization/23940
        PR tree-optimization/33237
        PR middle-end/33974
        PR middle-end/34093
        PR tree-optimization/36201
        PR tree-optimization/36230
        PR tree-optimization/38049
        PR tree-optimization/38207
        PR tree-optimization/38230
        PR tree-optimization/38301
        PR tree-optimization/38585
        PR middle-end/38895
        PR tree-optimization/38985
        PR tree-optimization/39299
        * tree-ssa-structalias.h: Remove.
        * tree-ssa-operands.h (NULL_USE_OPERAND_P): Make of type use_operand_p.
        (NULL_DEF_OPERAND_P): Make of type def_operand_p.
        (struct vuse_element_d): Remove.
        (struct vuse_vec_d): Likewise.
        (VUSE_VECT_NUM_ELEM, VUSE_VECT_ELEMENT_NC, VUSE_ELEMENT_PTR_NC,
        VUSE_ELEMENT_VAR_NC, VUSE_VECT_ELEMENT, VUSE_ELEMENT_PTR,
        SET_VUSE_VECT_ELEMENT, SET_VUSE_ELEMENT_VAR, SET_VUSE_ELEMENT_PTR,
        VUSE_ELEMENT_VAR): Likewise.
        (struct voptype_d): Likewise.
        (NUM_VOP_FREE_BUCKETS): Likewise.
        (struct ssa_operands): Remove vop_free_buckets and mpt_table fields.
        (struct stmt_operands_d): Remove.
        (VUSE_OP_PTR, VUSE_OP, SET_VUSE_OP, VUSE_NUM, VUSE_VECT,
        VDEF_RESULT_PTR, VDEF_RESULT, VDEF_OP_PTR, VDEF_OP, SET_VDEF_OP,
        VDEF_NUM, VDEF_VECT): Likewise.
        (copy_virtual_operands): Remove.
        (operand_build_cmp): Likewise.
        (create_ssa_artificial_load_stmt): Likewise.
        (enum ssa_op_iter_type): Remove ssa_op_iter_vdef.
        (struct ssa_operand_iterator_d): Remove vuses, vdefs, mayusesm
        vuse_index and mayuse_index members.  Pack and move done and iter_type
        members to the front.
        (SSA_OP_VMAYUSE): Remove.
        (SSA_OP_VIRTUAL_USES): Adjust.
        (FOR_EACH_SSA_VDEF_OPERAND): Remove.
        (unlink_stmt_vdef): Declare.
        (add_to_addressable_set): Remove.
        * tree-vrp.c (stmt_interesting_for_vrp): Adjust.
        (vrp_visit_stmt): Likewise.
        * doc/tree-ssa.texi (Alias analysis): Update.
        * doc/invoke.texi (max-aliased-vops): Remove docs.
        (avg-aliased-vops): Likewise.
        * tree-into-ssa.c (syms_to_rename): Remove.
        (need_to_update_vops_p): Likewise.
        (need_to_initialize_update_ssa_p): Rename to ...
        (update_ssa_initialized_fn): ... this.  Track function we are
        initialized for.
        (symbol_marked_for_renaming): Simplify.
        (add_new_name_mapping): Do not set need_to_update_vops_p.
        (dump_currdefs): Use SYMS_TO_RENAME.
        (rewrite_update_stmt): Always walk all uses/defs.
        (dump_update_ssa): Adjust.
        (init_update_ssa): Take function argument.  Track what we are
        initialized for.
        (delete_update_ssa): Reset SYMS_TO_RENAME and
update_ssa_initialized_fn.
        (create_new_def_for): Initialize for cfun, assert we are initialized
        for cfun.
        (mark_sym_for_renaming): Simplify.
        (mark_set_for_renaming): Do not initialize update-ssa.
        (need_ssa_update_p): Simplify.  Take function argument.
        (name_mappings_registered_p): Assert we ask for the correct function.
        (name_registered_for_update_p): Likewise.
        (ssa_names_to_replace): Likewise.
        (release_ssa_name_after_update_ssa): Likewise.
        (update_ssa): Likewise.  Use SYMS_TO_RENAME.
        (dump_decl_set): Do not print a newline.
        (debug_decl_set): Do it here.
        (dump_update_ssa): And here.
        * tree-ssa-loop-im.c (move_computations): Adjust.
        (movement_possibility): Likewise.
        (determine_max_movement): Likewise.
        (gather_mem_refs_stmt): Likewise.
        * tree-dump.c (dequeue_and_dump): Do not handle SYMBOL_MEMORY_TAG
        or NAME_MEMORY_TAG.
        * tree-complex.c (update_all_vops): Remove.
        (expand_complex_move): Adjust.
        * tree-ssa-loop-niter.c (chain_of_csts_start): Use NULL_TREE.
        Simplify test for memory referencing statement.  Exclude
        non-invariant ADDR_EXPRs.
        * tree-pretty-print.c (dump_generic_node): Do not handle memory tags.
        * tree-loop-distribution.c (generate_memset_zero): Adjust.
        (rdg_flag_uses): Likewise.
        * tree-tailcall.c (suitable_for_tail_opt_p): Remove memory-tag
        related code.
        (tree_optimize_tail_calls_1): Also split the
        edge from the entry block if we have degenerate PHI nodes in
        the first basic block.
        * tree.c (init_ttree): Remove memory-tag related code.
        (tree_code_size): Likewise.
        (tree_node_structure): Likewise.
        (build7_stat): Re-write to be build6_stat.
        * tree.h (MTAG_P, TREE_MEMORY_TAG_CHECK, TMR_TAG): Remove.
        (SSA_VAR_P): Adjust.
        (struct tree_memory_tag): Remove.
        (struct tree_memory_partition_tag): Likewise.
        (union tree_node): Adjust.
        (build7): Re-write to be build6.
        * tree-pass.h (pass_reset_cc_flags): Remove.
        (TODO_update_address_taken): New flag.
        (pass_simple_dse): Remove.
        * ipa-cp.c (ipcp_update_callgraph): Update SSA form.
        * params.h (MAX_ALIASED_VOPS): Remove.
        (AVG_ALIASED_VOPS): Likewise.
        * omp-low.c (expand_omp_taskreg): Update SSA form.
        * tree-ssa-dse.c (dse_optimize_stmt): Properly query if the rhs
        aliases the lhs in a copy stmt.
        * tree-ssa-dse.c (struct address_walk_data): Remove.
        (memory_ssa_name_same): Likewise.
        (memory_address_same): Likewise.
        (get_kill_of_stmt_lhs): Likewise.
        (dse_possible_dead_store_p): Simplify, use the oracle.  Handle
        unused stores.  Look through PHI nodes into post-dominated regions.
        (dse_optimize_stmt): Simplify.  Properly remove stores.
        (tree_ssa_dse): Compute dominators.
        (execute_simple_dse): Remove.
        (pass_simple_dse): Likewise.
        * ipa-reference.c (scan_stmt_for_static_refs): Open-code
        gimple_loaded_syms and gimple_stored_syms computation.
        * toplev.c (dump_memory_report): Dump alias and pta stats.
        * tree-ssa-sccvn.c (vn_reference_compute_hash): Simplify.
        (vn_reference_eq): Likewise.
        (vuses_to_vec, copy_vuses_from_stmt, vdefs_to_vec,
        copy_vdefs_from_stmt, shared_lookup_vops, shared_vuses_from_stmt,
        valueize_vuses): Remove.
        (get_def_ref_stmt_vuses): Simplify.  Rename to ...
        (get_def_ref_stmt_vuse): ... this.
        (vn_reference_lookup_2): New function.
        (vn_reference_lookup_pieces): Use walk_non_aliased_vuses for
        walking equivalent vuses.  Simplify.
        (vn_reference_lookup): Likewise.
        (vn_reference_insert): Likewise.
        (vn_reference_insert_pieces): Likewise.
        (visit_reference_op_call): Simplify.
        (visit_reference_op_load): Likewise.
        (visit_reference_op_store): Likewise.
        (init_scc_vn): Remove shared_lookup_vuses initialization.
        (free_scc_vn): Remove shared_lookup_vuses freeing.
        (sort_vuses, sort_vuses_heap): Remove.
        (get_ref_from_reference_ops): Export.
        * tree-ssa-sccvn.h (struct vn_reference_s): Replace vuses
        vector with single vuse pointer.
        (vn_reference_lookup_pieces, vn_reference_lookup,
        vn_reference_insert, vn_reference_insert_pieces): Adjust prototypes.
        (shared_vuses_from_stmt): Remove.
        (get_ref_from_reference_ops): Declare.
        * tree-ssa-loop-manip.c (slpeel_can_duplicate_loop_p): Adjust.
        * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
        memory-tag related code.
        * tree-ssa-ccp.c (get_symbol_constant_value): Remove memory-tag code.
        (likely_value): Add comment, skip static-chain of call statements.
        (surely_varying_stmt_p): Adjust.
        (gimplify_and_update_call_from_tree): Likewise.
        (execute_fold_all_builtins): Do not rebuild alias info.
        (gimplify_and_update_call_from_tree): Properly update VOPs.
        * tree-ssa-loop-ivopts.c (get_ref_tag): Remove.
        (copy_ref_info): Remove memory-tag related code.
        * tree-call-cdce.c (tree_call_cdce): Rename the VOP.
        * ipa-pure-const.c (check_decl): Remove memory-tag related code.
        (check_stmt): Open-code gimple_loaded_syms and gimple_stored_syms
        computation.
        * tree-ssa-dom.c (gimple_p): Remove typedef.
        (eliminate_redundant_computations): Adjust.
        (record_equivalences_from_stmt): Likewise.
        (avail_expr_hash): Likewise.
        (avail_expr_eq): Likewise.
        * tree-ssa-propagate.c (update_call_from_tree): Properly
        update VOPs.
        (stmt_makes_single_load): Likewise.
        (stmt_makes_single_store): Likewise.
        * tree-ssa-alias.c: Rewrite completely.
        (debug_memory_partitions, dump_mem_ref_stats, debug_mem_ref_stats,
        debug_mem_sym_stats, dump_mem_sym_stats_for_var,
        debug_all_mem_sym_stats, debug_mp_info, update_mem_sym_stats_from_stmt,
        delete_mem_ref_stats, create_tag_raw, dump_points_to_info,
        dump_may_aliases_for, debug_may_aliases_for, new_type_alias):
        Remove public functions.
        (pass_reset_cc_flags): Remove.
        (pass_build_alias): Move ...
        * tree-ssa-structalias.c (pass_build_alias): ... here.
        * tree-ssa-alias.c (may_be_aliased): Move ...
        * tree-flow-inline.h (may_be_aliased): ... here.
        tree-ssa-alias.c (struct count_ptr_d, count_ptr_derefs,
        count_uses_and_derefs): Move ...
        * gimple.c: ... here.
        * gimple.h (count_uses_and_derefs): Declare.
        * tree-ssa-alias.c (dump_alias_stats, ptr_deref_may_alias_global_p,
        ptr_deref_may_alias_decl_p, ptr_derefs_may_alias_p,
        same_type_for_tbaa, nonaliasing_component_refs_p,
decl_refs_may_alias_p,
        indirect_ref_may_alias_decl_p, indirect_refs_may_alias_p,
        ref_maybe_used_by_call_p, ref_maybe_used_by_stmt_p,
        call_may_clobber_ref_p, stmt_may_clobber_ref_p, maybe_skip_until,
        get_continuation_for_phi, walk_non_aliased_vuses, walk_aliased_vdefs):
        New functions.
        * tree-dfa.c (refs_may_alias_p): Move ...
        * tree-ssa-alias.c (refs_may_alias_p): ... here.  Extend.
        * tree-ssa-alias.h: New file.
        * tree-ssa-sink.c (is_hidden_global_store): Adjust.
        (statement_sink_location): Likewise.
        * opts.c (decode_options): Do not adjust max-aliased-vops or
        avg-aliased-vops values.
        * timevar.def (TV_TREE_MAY_ALIAS): Remove.
        (TV_CALL_CLOBBER): Likewise.
        (TV_FLOW_SENSITIVE): Likewise.
        (TV_FLOW_INSENSITIVE): Likewise.
        (TV_MEMORY_PARTITIONING): Likewise.
        (TV_ALIAS_STMT_WALK): New timevar.
        * tree-ssa-loop-ivcanon.c (empty_loop_p): Adjust.
        * tree-ssa-address.c (create_mem_ref_raw): Use build6.
        (get_address_description): Remove memory-tag related code.
        * tree-ssa-ifcombine.c (bb_no_side_effects_p): Adjust.
        * treestruct.def (TS_MEMORY_TAG, TS_MEMORY_PARTITION_TAG): Remove.
        * tree-eh.c (cleanup_empty_eh): Do not leave stale SSA_NAMEs
        and immediate uses in statements.  Document.
        * gimple-pretty-print.c (dump_gimple_mem_ops): Adjust.
        (dump_symbols): Remove.
        (dump_gimple_mem_ops): Do not dump loaded or stored syms.
        * alias.c (get_deref_alias_set): New function split out from ...
        (get_alias_set): ... here.
        * alias.h (get_deref_alias_set): Declare.
        * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove unused
        type parameter.  Remove restrict pointer handling.  Create a
        ref-all pointer in case type-based alias sets do not conflict.
        (vect_analyze_data_refs): Remove SMT related code.
        * tree-vect-stmts.c (vectorizable_store): Re-instantiate TBAA assert.
        (vectorizable_load): Likewise.
        * tree-data-ref.h (struct dr_alias): Remove symbol_tag field.
        (DR_SYMBOL_TAG, DR_VOPS): Remove.
        * tree-data-ref.c (dr_may_alias_p): Use the alias-oracle.
        Ignore vops and SMTs.
        (dr_analyze_alias): Likewise..
        (free_data_ref): Likewise.
        (create_data_ref): Likewise.
        (analyze_all_data_dependences): Likewise.
        (get_references_in_stmt): Adjust.
        * tree-flow-inline.h (gimple_aliases_computed_p,
        gimple_addressable_vars, gimple_call_clobbered_vars,
        gimple_call_used_vars, gimple_global_var, may_aliases,
memory_partition,
        factoring_name_p, mark_call_clobbered, clear_call_clobbered,
        compare_ssa_operands_equal, symbol_mem_tag, set_symbol_mem_tag,
        gimple_mem_ref_stats): Remove.
        (gimple_vop): New function.
        (op_iter_next_use): Remove vuses and mayuses cases.
        (op_iter_next_def): Remove vdefs case.
        (op_iter_next_tree): Remove vuses, mayuses and vdefs cases.
        (clear_and_done_ssa_iter): Do not set removed fields.
        (op_iter_init): Likewise.  Skip vuse and/or vdef if requested.
        Assert we are not iterating over vuses or vdefs if not also
        iterating over uses or defs.
        (op_iter_init_use): Likewise.
        (op_iter_init_def): Likewise.
        (op_iter_next_vdef): Remove.
        (op_iter_next_mustdef): Likewise.
        (op_iter_init_vdef): Likewise.
        (compare_ssa_operands_equal): Likewise.
        (link_use_stmts_after): Handle vuse operand.
        (is_call_used): Use is_call_clobbered.
        (is_call_clobbered): Global variables are always call clobbered,
        query the call-clobbers bitmap.
        (mark_call_clobbered): Ignore global variables.
        (clear_call_clobbered): Likewise.
        * tree-ssa-coalesce.c (create_outofssa_var_map): Adjust
        virtual operands sanity check.
        * tree.def (NAME_MEMORY_TAG, SYMBOL_MEMORY_TAG, MEMORY_PARTITION_TAG):
        Remove.
        (TARGET_MEM_REF): Remove TMR_TAG operand.
        * tree-dfa.c (add_referenced_var): Initialize call-clobber state.
        Remove call-clobber related code.
        (remove_referenced_var): Likewise.  Do not clear mpt or symbol_mem_tag.
        (dump_variable): Do not dump SMTs, memory stats, may-aliases or
        partitions or escape reason.
        (get_single_def_stmt, get_single_def_stmt_from_phi,
        get_single_def_stmt_with_phi): Remove.
        (dump_referenced_vars): Tidy.
        (get_ref_base_and_extent): Allow bare decls.
        (collect_dfa_stats): Adjust.
        * graphite.c (rename_variables_in_stmt): Adjust.
        (graphite_copy_stmts_from_block): Likewise.
        (translate_clast): Likewise.
        * tree-ssa-pre.c (struct bb_bitmap_sets): Add expr_dies bitmap.
        (EXPR_DIES): New.
        (translate_vuse_through_block): Use the oracle.
        (phi_translate_1): Adjust.
        (value_dies_in_block_x): Use the oracle.  Cache the outcome
        in EXPR_DIES.
        (valid_in_sets): Check if the VUSE for
        a REFERENCE is available.
        (eliminate): Do not remove stmts during elimination,
        instead queue and remove them afterwards.
        (do_pre): Do not rebuild alias info.
        (pass_pre): Run TODO_rebuild_alias before PRE.
        * tree-ssa-live.c (remove_unused_locals): Remove memory-tag code.
        * tree-sra.c (sra_walk_function): Use gimple_references_memory_p.
        (mark_all_v_defs_stmt): Remove.
        (mark_all_v_defs_seq): Adjust.
        (sra_replace): Likewise.
        (scalarize_use): Likewise.
        (scalarize_copy): Likewise.
        (scalarize_init): Likewise.
        (scalarize_ldst): Likewise.
        (todoflags): Remove.
        (tree_sra): Do not rebuild alias info.
        (tree_sra_early): Adjust.
        (pass_sra): Run TODO_update_address_taken before SRA.
        * tree-predcom.c (set_alias_info): Remove.
        (prepare_initializers_chain): Do not call it.
        (mark_virtual_ops_for_renaming): Adjust.
        (mark_virtual_ops_for_renaming_list): Remove.
        (initialize_root_vars): Adjust.
        (initialize_root_vars_lm): Likewise.
        (prepare_initializers_chain): Likewise.
        * tree-ssa-copy.c (may_propagate_copy): Remove memory-tag related code.
        (may_propagate_copy_into_stmt): Likewise.
        (merge_alias_info): Do nothing for now.
        (propagate_tree_value_into_stmt): Adjust.
        (stmt_may_generate_copy): Likewise.
        * tree-ssa-forwprop.c (tidy_after_forward_propagate_addr): Do
        not mark symbols for renaming.
        (forward_propagate_addr_expr): Match up push/pop_stmt_changes
        with the same statement, make sure to update the new pointed-to one.
        * tree-ssa-dce.c (eliminate_unnecessary_stmts): Do not copy
        call statements, do not mark symbols for renaming.
        (mark_operand_necessary): Dump something.
        (ref_may_be_aliased): New function.
        (mark_aliased_reaching_defs_necessary_1): New helper function.
        (mark_aliased_reaching_defs_necessary): Likewise.
        (mark_all_reaching_defs_necessary_1): Likewise.
        (mark_all_reaching_defs_necessary): Likewise.
        (propagate_necessity): Do not process virtual PHIs.  For
        non-aliased loads mark all reaching definitions as necessary.
        For aliased loads and stores mark the immediate dominating
        aliased clobbers as necessary.
        (visited): New global static.
        (perform_tree_ssa_dce): Free visited bitmap after propagating
        necessity.
        (remove_dead_phis): Perform simple dead virtual PHI removal.
        (remove_dead_stmt): Properly unlink virtual operands when
        removing stores.
        (eliminate_unnecessary_stmts): Schedule PHI removal after
        stmt removal.
        * tree-ssa-ter.c (is_replaceable_p): Adjust.
        (process_replaceable): Likewise.
        (find_replaceable_in_bb): Likewise.
        * tree-ssa.c (verify_ssa_name): Verify all VOPs are
        based on the single gimple vop.
        (verify_flow_insensitive_alias_info): Remove.
        (verify_flow_sensitive_alias_info): Likewise.
        (verify_call_clobbering): Likewise.
        (verify_memory_partitions): Likewise.
        (verify_alias_info): Likewise.
        (verify_ssa): Adjust..
        (execute_update_addresses_taken): Export.  Update SSA
        manually.  Optimize only when optimizing.  Use a local bitmap.
        (pass_update_address_taken): Remove TODO_update_ssa, add
        TODO_dump_func.
        (pass_update_address_taken): Just use TODO_update_address_taken.
        (init_tree_ssa): Do not initialize addressable_vars.
        (verify_ssa): Verify new VUSE / VDEF properties.
        Verify that all stmts definitions have the stmt as SSA_NAME_DEF_STMT.
        Do not call verify_alias_info.
        (delete_tree_ssa): Clear the VUSE, VDEF operands.
        Do not free the loaded and stored syms bitmaps.  Reset the escaped
        and callused solutions.  Do not free addressable_vars.
        Remove memory-tag related code.
        (warn_uninitialized_var): Aliases are always available.
        * tree-ssa-loop-prefetch.c (gather_memory_references): Adjust.
        * lambda-code.c (can_put_in_inner_loop): Adjust.
        (can_put_after_inner_loop): Likewise.
        (perfect_nestify): Likewise.
        * tree-vect-stmts.c (vect_stmt_relevant_p): Adjust.
        (vect_gen_widened_results_half): Remove CALL_EXPR handling.
        (vectorizable_conversion): Do not mark symbols for renaming.
        * tree-inline.c (remap_gimple_stmt): Clear VUSE/VDEF.
        (expand_call_inline): Unlink the calls virtual operands before
        replacing it.
        (tree_function_versioning): Do not call update_ssa if we are not
        updating clones.  Simplify.
        * tree-ssa-phiprop.c (phivn_valid_p): Adjust.
        (propagate_with_phi): Likewise..
        * tree-outof-ssa.c (create_temp): Remove memory tag and call
        clobber code.  Assert we are not aliased or global.
        * tree-flow.h: Include tree-ssa-alias.h
        (enum escape_type): Remove.
        (struct mem_sym_stats_d): Likewise.
        (struct mem_ref_stats_d): Likewise.
        (struct gimple_df): Add vop member.  Remove global_var,
        call_clobbered_vars, call_used_vars, addressable_vars,
        aliases_compted_p and mem_ref_stats members.  Add syms_to_rename,
        escaped and callused members.
        (struct ptr_info_def): Remove all members, add points-to solution
        member pt.
        (struct var_ann_d): Remove in_vuse_list, in_vdef_list,
        call_clobbered, escape_mask, mpt and symbol_mem_tag members.
        * Makefile.in (TREE_FLOW_H): Add tree-ssa-alias.h.
        (tree-ssa-structalias.o): Remove tree-ssa-structalias.h.
        (tree-ssa-alias.o): Likewise.
        (toplev.o): Add tree-ssa-alias.h
        (GTFILES): Remove tree-ssa-structalias.h, add tree-ssa-alias.h.
        * gimple.c (gimple_set_bb): Fix off-by-one error.
        (is_gimple_reg): Do not handle memory tags.
        (gimple_copy): Also copy virtual operands.
        Delay updating the statement.  Do not reset loaded and stored syms.
        (gimple_set_stored_syms): Remove.
        (gimple_set_loaded_syms): Likewise.
        (gimple_call_copy_skip_args): Copy the virtual operands
        and mark the new statement modified.
        * tree-ssa-structalias.c (may_alias_p): Remove.
        (set_uids_in_ptset): Take the alias set to prune with as
        parameter.  Fold in the alias test of may_alias_p.
        (compute_points_to_sets): Compute whether a ptr is dereferenced
        in a local sbitmap.
        (process_constraint): Deal with &ANYTHING on the lhs, reject all
        other ADDRESSOF constraints on the lhs.
        (get_constraint_for_component_ref): Assert that we don't get
        ADDRESSOF constraints from the base of the reference.
        Properly generate UNKNOWN_OFFSET for DEREF if needed.
        (struct variable_info): Remove collapsed_to member.
        (get_varinfo_fc): Remove.
        (new_var_info): Do not set collapsed_to.
        (dump_constraint): Do not follow cycles.
        (dump_constraint_graph): Likewise.
        (build_pred_graph): Likewise.
        (build_succ_graph): Likewise.
        (rewrite_constraints): Likewise.
        (do_simple_structure_copy): Remove.
        (do_rhs_deref_structure_copy): Remove.
        (do_lhs_deref_structure_copy): Remove.
        (collapse_rest_of_var): Remove.
        (do_structure_copy): Re-implement.
        (pta_stats): New global variable.
        (dump_pta_stats): New function.
        (struct constraint_expr): Make offset signed.
        (UNKNOWN_OFFSET): Define special value.
        (dump_constraint): Dump UNKNOWN_OFFSET as UNKNOWN.
        (solution_set_expand): New helper function split out from ...
        (do_sd_constraint): ... here.
        (solution_set_add): Handle UNKNOWN_OFFSET.  Handle negative offsets.
        (do_ds_constraint): Likewise.
        (do_sd_constraint): Likewise.  Do not special-case ESCAPED = *ESCAPED
        and CALLUSED = *CALLUSED.
        (set_union_with_increment): Make inc argument signed.
        (type_safe): Remove.
        (get_constraint_for_ptr_offset): Handle unknown and negative
        constant offsets.
        (first_vi_for_offset): Handle offsets before start.  Bail
        out early for offsets beyond the variable extent.
        (first_or_preceding_vi_for_offset): New function.
        (init_base_vars): Add ESCAPED = ESCAPED + UNKNOWN_OFFSET constraint.
        Together with ESCAPED = *ESCAPED this properly computes reachability.
        (find_what_var_points_to): New function.
        (find_what_p_points_to): Implement in terms of find_what_var_points_to.
        (pt_solution_reset, pt_solution_empty_p, pt_solution_includes_global,
        pt_solution_includes_1, pt_solution_includes, pt_solutions_intersect_1,
        pt_solutions_intersect): New functions.
        (compute_call_used_vars): Remove.
        (compute_may_aliases): New main entry into PTA computation.
        * gimple.h (gimple_p): New typedef.
        (struct gimple_statement_base): Remove references_memory_p.
        (struct gimple_statement_with_memory_ops_base): Remove
        vdef_ops, vuse_ops, stores and loads members.  Add vdef and vuse
        members.
        (gimple_vuse_ops, gimple_set_vuse_ops, gimple_vdef_ops,
        gimple_set_vdef_ops, gimple_loaded_syms, gimple_stored_syms,
        gimple_set_references_memory): Remove.
        (gimple_vuse_op, gimple_vdef_op, gimple_vuse, gimple_vdef,
        gimple_vuse_ptr, gimple_vdef_ptri, gimple_set_vuse, gimple_set_vdef):
        New functions.
        * tree-cfg.c (move_block_to_fn): Fix off-by-one error.
        (verify_expr): Allow RESULT_DECL.
        (gimple_duplicate_bb): Do not copy virtual operands.
        (gimple_duplicate_sese_region): Adjust.
        (gimple_duplicate_sese_tail): Likewise.
        (mark_virtual_ops_in_region): Remove.
        (move_sese_region_to_fn): Do not call it.
        * passes.c (init_optimization_passes): Remove pass_reset_cc_flags
        and pass_simple_dse.
        (execute_function_todo): Handle TODO_update_address_taken,
        call execute_update_addresses_taken for TODO_rebuild_alias.
        (execute_todo): Adjust.
        (execute_one_pass): Init dump files early.
        * ipa-struct-reorg.c (finalize_var_creation): Do not mark vars
        call-clobbered.
        (create_general_new_stmt): Clear vops.
        * tree-ssa-reassoc.c (get_rank): Adjust.
        * tree-vect-slp.c (vect_create_mask_and_perm): Do not mark
        symbols for renaming.
        * params.def (PARAM_MAX_ALIASED_VOPS): Remove.
        (PARAM_AVG_ALIASED_VOPS): Likewise.
        * tree-ssanames.c (init_ssanames): Allocate SYMS_TO_RENAME.
        (duplicate_ssa_name_ptr_info): No need to copy the shared bitmaps.
        * tree-ssa-operands.c: Simplify for new virtual operand
        representation.
        (operand_build_cmp, copy_virtual_operands,
        create_ssa_artificial_load_stmt, add_to_addressable_set,
        gimple_add_to_addresses_taken): Remove public functions.
        (unlink_stmt_vdef): New function.

        * gcc.dg/pr19633-1.c: Adjust.
        * gcc.dg/torture/pta-callused-1.c: Likewise.
        * gcc.dg/torture/pr39074-2.c: Likewise.
        * gcc.dg/torture/pr39074.c: Likewise.
        * gcc.dg/torture/pta-ptrarith-3.c: New testcase.
        * gcc.dg/torture/pr30375.c: Adjust.
        * gcc.dg/torture/pr33563.c: Likewise.
        * gcc.dg/torture/pr33870.c: Likewise.
        * gcc.dg/torture/pr33560.c: Likewise.
        * gcc.dg/torture/pta-structcopy-1.c: New testcase.
        * gcc.dg/torture/ssa-pta-fn-1.c: Likewise.
        * gcc.dg/tree-ssa/alias-15.c: Remove.
        * gcc.dg/tree-ssa/ssa-dce-4.c: New testcase.
        * gcc.dg/tree-ssa/pr26421.c: Adjust.
        * gcc.dg/tree-ssa/ssa-fre-10.c: XFAIL.
        * gcc.dg/tree-ssa/ssa-dce-5.c: New testcase.
        * gcc.dg/tree-ssa/pr23382.c: Adjust.
        * gcc.dg/tree-ssa/ssa-fre-20.c: New testcase.
        * gcc.dg/tree-ssa/alias-16.c: Adjust.
        * gcc.dg/tree-ssa/ssa-fre-13.c: Likewise.
        * gcc.dg/tree-ssa/ssa-fre-14.c: Likewise.
        * gcc.dg/tree-ssa/alias-18.c: Likewise.
        * gcc.dg/tree-ssa/ssa-fre-15.c: Likewise.
        * gcc.dg/tree-ssa/ssa-lim-3.c: Likewise.
        * gcc.dg/tree-ssa/alias-19.c: Likewise.
        * gcc.dg/tree-ssa/pta-ptrarith-1.c: New testcase.
        * gcc.dg/tree-ssa/pr13146.c: Likewise.
        * gcc.dg/tree-ssa/ssa-pre-23.c: Likewise.
        * gcc.dg/tree-ssa/pta-ptrarith-2.c: Likewise.
        * gcc.dg/tree-ssa/ssa-fre-18.c: Likewise.
        * gcc.dg/tree-ssa/ssa-pre-24.c: New XFAILed testcase.
        * gcc.dg/tree-ssa/ssa-fre-19.c: New testcase.
        * gcc.dg/tree-ssa/alias-20.c: Likewise.
        * gcc.dg/tree-ssa/ssa-dse-12.c: Likewise.
        * gcc.dg/tree-ssa/pr38895.c: Likewise.
        * gcc.dg/uninit-B.c: XFAIL.
        * gcc.dg/vect/no-vfa-vect-43.c: Adjust.
        * gcc.dg/uninit-pr19430.c: XFAIL.
        * g++.dg/tree-ssa/pr13146.C: New testcase.
        * g++.dg/opt/pr36187.C: Adjust.
        * g++.dg/torture/20090329-1.C: New testcase.

Added:
    trunk/gcc/testsuite/g++.dg/torture/20090329-1.C
      - copied unchanged from r145492,
branches/alias-improvements/gcc/testsuite/g++.dg/torture/20090329-1.C
    trunk/gcc/testsuite/g++.dg/tree-ssa/pr13146.C
      - copied unchanged from r145492,
branches/alias-improvements/gcc/testsuite/g++.dg/tree-ssa/pr13146.C
    trunk/gcc/testsuite/gcc.dg/torture/pta-ptrarith-3.c
      - copied unchanged from r145492,
branches/alias-improvements/gcc/testsuite/gcc.dg/torture/pta-ptrarith-3.c
    trunk/gcc/testsuite/gcc.dg/torture/pta-structcopy-1.c
      - copied unchanged from r145492,
branches/alias-improvements/gcc/testsuite/gcc.dg/torture/pta-structcopy-1.c
    trunk/gcc/testsuite/gcc.dg/torture/ssa-pta-fn-1.c
      - copied unchanged from r145492,
branches/alias-improvements/gcc/testsuite/gcc.dg/torture/ssa-pta-fn-1.c
    trunk/gcc/testsuite/gcc.dg/tree-ssa/alias-20.c
      - copied unchanged from r145492,
branches/alias-improvements/gcc/testsuite/gcc.dg/tree-ssa/alias-20.c
    trunk/gcc/testsuite/gcc.dg/tree-ssa/pr13146.c
      - copied unchanged from r145492,
branches/alias-improvements/gcc/testsuite/gcc.dg/tree-ssa/pr13146.c
    trunk/gcc/testsuite/gcc.dg/tree-ssa/pr38895.c
      - copied unchanged from r145492,
branches/alias-improvements/gcc/testsuite/gcc.dg/tree-ssa/pr38895.c
    trunk/gcc/testsuite/gcc.dg/tree-ssa/pta-ptrarith-1.c
      - copied unchanged from r145492,
branches/alias-improvements/gcc/testsuite/gcc.dg/tree-ssa/pta-ptrarith-1.c
    trunk/gcc/testsuite/gcc.dg/tree-ssa/pta-ptrarith-2.c
      - copied unchanged from r145492,
branches/alias-improvements/gcc/testsuite/gcc.dg/tree-ssa/pta-ptrarith-2.c
    trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-dce-4.c
      - copied unchanged from r145492,
branches/alias-improvements/gcc/testsuite/gcc.dg/tree-ssa/ssa-dce-4.c
    trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-dce-5.c
      - copied unchanged from r145492,
branches/alias-improvements/gcc/testsuite/gcc.dg/tree-ssa/ssa-dce-5.c
    trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-12.c
      - copied unchanged from r145492,
branches/alias-improvements/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-12.c
    trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-18.c
      - copied unchanged from r145492,
branches/alias-improvements/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-18.c
    trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-19.c
      - copied unchanged from r145492,
branches/alias-improvements/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-19.c
    trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-20.c
      - copied unchanged from r145492,
branches/alias-improvements/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-20.c
    trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-23.c
      - copied unchanged from r145492,
branches/alias-improvements/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-23.c
    trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-24.c
      - copied unchanged from r145492,
branches/alias-improvements/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-24.c
    trunk/gcc/tree-ssa-alias.h
      - copied unchanged from r145492,
branches/alias-improvements/gcc/tree-ssa-alias.h
Removed:
    trunk/gcc/testsuite/gcc.dg/tree-ssa/alias-15.c
    trunk/gcc/tree-ssa-structalias.h
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/Makefile.in
    trunk/gcc/alias.c
    trunk/gcc/alias.h
    trunk/gcc/doc/invoke.texi
    trunk/gcc/doc/tree-ssa.texi
    trunk/gcc/gimple-pretty-print.c
    trunk/gcc/gimple.c
    trunk/gcc/gimple.h
    trunk/gcc/graphite.c
    trunk/gcc/ipa-cp.c
    trunk/gcc/ipa-pure-const.c
    trunk/gcc/ipa-reference.c
    trunk/gcc/ipa-struct-reorg.c
    trunk/gcc/lambda-code.c
    trunk/gcc/omp-low.c
    trunk/gcc/opts.c
    trunk/gcc/params.def
    trunk/gcc/params.h
    trunk/gcc/passes.c
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/testsuite/g++.dg/opt/pr36187.C
    trunk/gcc/testsuite/gcc.dg/pr19633-1.c
    trunk/gcc/testsuite/gcc.dg/torture/pr30375.c
    trunk/gcc/testsuite/gcc.dg/torture/pr33560.c
    trunk/gcc/testsuite/gcc.dg/torture/pr33563.c
    trunk/gcc/testsuite/gcc.dg/torture/pr33870.c
    trunk/gcc/testsuite/gcc.dg/torture/pr39074-2.c
    trunk/gcc/testsuite/gcc.dg/torture/pr39074.c
    trunk/gcc/testsuite/gcc.dg/torture/pta-callused-1.c
    trunk/gcc/testsuite/gcc.dg/tree-ssa/alias-16.c
    trunk/gcc/testsuite/gcc.dg/tree-ssa/alias-18.c
    trunk/gcc/testsuite/gcc.dg/tree-ssa/alias-19.c
    trunk/gcc/testsuite/gcc.dg/tree-ssa/pr23382.c
    trunk/gcc/testsuite/gcc.dg/tree-ssa/pr26421.c
    trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-10.c
    trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-13.c
    trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-14.c
    trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-15.c
    trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-3.c
    trunk/gcc/testsuite/gcc.dg/uninit-B.c
    trunk/gcc/testsuite/gcc.dg/uninit-pr19430.c
    trunk/gcc/testsuite/gcc.dg/vect/no-vfa-vect-43.c
    trunk/gcc/timevar.def
    trunk/gcc/toplev.c
    trunk/gcc/tree-call-cdce.c
    trunk/gcc/tree-cfg.c
    trunk/gcc/tree-complex.c
    trunk/gcc/tree-data-ref.c
    trunk/gcc/tree-data-ref.h
    trunk/gcc/tree-dfa.c
    trunk/gcc/tree-dump.c
    trunk/gcc/tree-eh.c
    trunk/gcc/tree-flow-inline.h
    trunk/gcc/tree-flow.h
    trunk/gcc/tree-inline.c
    trunk/gcc/tree-into-ssa.c
    trunk/gcc/tree-loop-distribution.c
    trunk/gcc/tree-outof-ssa.c
    trunk/gcc/tree-pass.h
    trunk/gcc/tree-predcom.c
    trunk/gcc/tree-pretty-print.c
    trunk/gcc/tree-sra.c
    trunk/gcc/tree-ssa-address.c
    trunk/gcc/tree-ssa-alias.c
    trunk/gcc/tree-ssa-ccp.c
    trunk/gcc/tree-ssa-coalesce.c
    trunk/gcc/tree-ssa-copy.c
    trunk/gcc/tree-ssa-copyrename.c
    trunk/gcc/tree-ssa-dce.c
    trunk/gcc/tree-ssa-dom.c
    trunk/gcc/tree-ssa-dse.c
    trunk/gcc/tree-ssa-forwprop.c
    trunk/gcc/tree-ssa-ifcombine.c
    trunk/gcc/tree-ssa-live.c
    trunk/gcc/tree-ssa-loop-im.c
    trunk/gcc/tree-ssa-loop-ivcanon.c
    trunk/gcc/tree-ssa-loop-ivopts.c
    trunk/gcc/tree-ssa-loop-niter.c
    trunk/gcc/tree-ssa-loop-prefetch.c
    trunk/gcc/tree-ssa-operands.c
    trunk/gcc/tree-ssa-operands.h
    trunk/gcc/tree-ssa-phiprop.c
    trunk/gcc/tree-ssa-pre.c
    trunk/gcc/tree-ssa-propagate.c
    trunk/gcc/tree-ssa-reassoc.c
    trunk/gcc/tree-ssa-sccvn.c
    trunk/gcc/tree-ssa-sccvn.h
    trunk/gcc/tree-ssa-sink.c
    trunk/gcc/tree-ssa-structalias.c
    trunk/gcc/tree-ssa-ter.c
    trunk/gcc/tree-ssa.c
    trunk/gcc/tree-ssanames.c
    trunk/gcc/tree-tailcall.c
    trunk/gcc/tree-vect-data-refs.c
    trunk/gcc/tree-vect-loop-manip.c
    trunk/gcc/tree-vect-slp.c
    trunk/gcc/tree-vect-stmts.c
    trunk/gcc/tree-vectorizer.h
    trunk/gcc/tree-vrp.c
    trunk/gcc/tree.c
    trunk/gcc/tree.def
    trunk/gcc/tree.h
    trunk/gcc/treestruct.def


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23940


^ permalink raw reply	[flat|nested] 19+ messages in thread

* [Bug tree-optimization/23940] SSA_NAMEs are not released after no longer being used.
       [not found] <bug-23940-6528@http.gcc.gnu.org/bugzilla/>
                   ` (4 preceding siblings ...)
  2009-02-22 19:06 ` rguenth at gcc dot gnu dot org
@ 2009-04-03 10:29 ` rguenth at gcc dot gnu dot org
  2009-04-03 10:29 ` rguenth at gcc dot gnu dot org
  6 siblings, 0 replies; 19+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2009-04-03 10:29 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #18 from rguenth at gcc dot gnu dot org  2009-04-03 10:29 -------
Fixed for 4.5.


-- 

rguenth at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|ASSIGNED                    |RESOLVED
         Resolution|                            |FIXED
   Target Milestone|---                         |4.5.0


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23940


^ permalink raw reply	[flat|nested] 19+ messages in thread

* [Bug tree-optimization/23940] SSA_NAMEs are not released after no longer being used.
       [not found] <bug-23940-6528@http.gcc.gnu.org/bugzilla/>
                   ` (3 preceding siblings ...)
  2009-02-22 14:23 ` steven at gcc dot gnu dot org
@ 2009-02-22 19:06 ` rguenth at gcc dot gnu dot org
  2009-04-03 10:29 ` rguenth at gcc dot gnu dot org
  2009-04-03 10:29 ` rguenth at gcc dot gnu dot org
  6 siblings, 0 replies; 19+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2009-02-22 19:06 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #16 from rguenth at gcc dot gnu dot org  2009-02-22 19:05 -------
Yes indeed.


-- 

rguenth at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         AssignedTo|unassigned at gcc dot gnu   |rguenth at gcc dot gnu dot
                   |dot org                     |org
             Status|NEW                         |ASSIGNED
   Last reconfirmed|2008-07-15 12:38:41         |2009-02-22 19:05:58
               date|                            |


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23940


^ permalink raw reply	[flat|nested] 19+ messages in thread

* [Bug tree-optimization/23940] SSA_NAMEs are not released after no longer being used.
       [not found] <bug-23940-6528@http.gcc.gnu.org/bugzilla/>
                   ` (2 preceding siblings ...)
  2008-07-15 12:39 ` rguenth at gcc dot gnu dot org
@ 2009-02-22 14:23 ` steven at gcc dot gnu dot org
  2009-02-22 19:06 ` rguenth at gcc dot gnu dot org
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 19+ messages in thread
From: steven at gcc dot gnu dot org @ 2009-02-22 14:23 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #15 from steven at gcc dot gnu dot org  2009-02-22 14:23 -------
Re. Comment #14  -- Fixed on AIB?


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23940


^ permalink raw reply	[flat|nested] 19+ messages in thread

* [Bug tree-optimization/23940] SSA_NAMEs are not released after no longer being used.
       [not found] <bug-23940-6528@http.gcc.gnu.org/bugzilla/>
  2005-10-15 16:38 ` pinskia at gcc dot gnu dot org
  2006-12-20 21:44 ` jimbob at google dot com
@ 2008-07-15 12:39 ` rguenth at gcc dot gnu dot org
  2009-02-22 14:23 ` steven at gcc dot gnu dot org
                   ` (3 subsequent siblings)
  6 siblings, 0 replies; 19+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2008-07-15 12:39 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #14 from rguenth at gcc dot gnu dot org  2008-07-15 12:38 -------
Confirmed.  The dead stmts hanging off unreleased (ex-VOP) SSA_NAMEs are
a major annoyance.


-- 

rguenth at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |rguenth at gcc dot gnu dot
                   |                            |org
             Status|UNCONFIRMED                 |NEW
     Ever Confirmed|0                           |1
   Last reconfirmed|0000-00-00 00:00:00         |2008-07-15 12:38:41
               date|                            |


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23940


^ permalink raw reply	[flat|nested] 19+ messages in thread

* [Bug tree-optimization/23940] SSA_NAMEs are not released after no longer being used.
       [not found] <bug-23940-6528@http.gcc.gnu.org/bugzilla/>
  2005-10-15 16:38 ` pinskia at gcc dot gnu dot org
@ 2006-12-20 21:44 ` jimbob at google dot com
  2008-07-15 12:39 ` rguenth at gcc dot gnu dot org
                   ` (4 subsequent siblings)
  6 siblings, 0 replies; 19+ messages in thread
From: jimbob at google dot com @ 2006-12-20 21:44 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #13 from jimbob at google dot com  2006-12-20 21:44 -------
(In reply to comment #11)
> I had it mostly working, but the changes are pretty invasive as no one ever has
> to set or clear SSA_NAME_DEF_STMT any more, its always simply "right".  Its too
> invasive for stage 3 thats for sure. I'll revisit it when we get back to stage 1
> and test out performance and whether its really what we want to do.

Any activity on this? I am gently smashing into this problem and need to decide
whether to work around it permanently.


-- 

jimbob at google dot com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jimbob at google dot com


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23940


^ permalink raw reply	[flat|nested] 19+ messages in thread

* [Bug tree-optimization/23940] SSA_NAMEs are not released after no longer being used.
       [not found] <bug-23940-6528@http.gcc.gnu.org/bugzilla/>
@ 2005-10-15 16:38 ` pinskia at gcc dot gnu dot org
  2006-12-20 21:44 ` jimbob at google dot com
                   ` (5 subsequent siblings)
  6 siblings, 0 replies; 19+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2005-10-15 16:38 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #12 from pinskia at gcc dot gnu dot org  2005-10-15 16:38 -------
Actually this can cause compile time problems even with checking disabled
because there are some passes which loop through all SSA_NAMEs.


-- 

pinskia at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |compile-time-hog


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23940


^ permalink raw reply	[flat|nested] 19+ messages in thread

end of thread, other threads:[~2009-04-03 10:29 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2005-09-18  0:50 [Bug tree-optimization/23940] New: SSA_NAMEs are not released after no longer being used pinskia at gcc dot gnu dot org
2005-09-19 14:03 ` [Bug tree-optimization/23940] " amacleod at redhat dot com
2005-09-19 15:24 ` pinskia at gcc dot gnu dot org
2005-09-19 15:45 ` amacleod at redhat dot com
2005-09-19 15:50 ` pinskia at gcc dot gnu dot org
2005-09-19 15:59 ` amacleod at redhat dot com
2005-09-19 16:05 ` pinskia at physics dot uc dot edu
2005-09-19 16:33 ` amacleod at redhat dot com
2005-09-19 16:44 ` pinskia at physics dot uc dot edu
2005-09-19 18:10 ` amacleod at redhat dot com
2005-09-19 20:34 ` amacleod at redhat dot com
2005-09-30 14:58 ` amacleod at redhat dot com
     [not found] <bug-23940-6528@http.gcc.gnu.org/bugzilla/>
2005-10-15 16:38 ` pinskia at gcc dot gnu dot org
2006-12-20 21:44 ` jimbob at google dot com
2008-07-15 12:39 ` rguenth at gcc dot gnu dot org
2009-02-22 14:23 ` steven at gcc dot gnu dot org
2009-02-22 19:06 ` rguenth at gcc dot gnu dot org
2009-04-03 10:29 ` rguenth at gcc dot gnu dot org
2009-04-03 10:29 ` rguenth at gcc dot gnu dot org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).