public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug tree-optimization/28798]  New: remove_phi_node attempts removal of a phi node resized by resize_phi_node
@ 2006-08-22  6:07 hosking at cs dot purdue dot edu
  2006-08-22  6:10 ` [Bug tree-optimization/28798] " pinskia at gcc dot gnu dot org
                   ` (15 more replies)
  0 siblings, 16 replies; 23+ messages in thread
From: hosking at cs dot purdue dot edu @ 2006-08-22  6:07 UTC (permalink / raw)
  To: gcc-bugs

If a phi node has been resized using resize_phi_node, it may later be attempted
to be removed by remove_dead_inserted_code using remove_phi_node, as the old
phi node will be present in inserted_exprs, yet the phi node will not be in the
chain of phi nodes for its original basic block.

I believe the fix is to make remove_phi_node bail out if the phi node is not
present in the list of phi nodes for its basic block:

void
remove_phi_node (tree phi, tree prev)
{
  tree *loc;

  if (prev)
    {
      loc = &PHI_CHAIN (prev);
    }
  else
    {
      for (loc = &(bb_for_stmt (phi)->phi_nodes);
           loc && *loc != phi;
           loc = &PHI_CHAIN (*loc))
        ;
    }
  if (!loc) return;

  /* Remove PHI from the chain.  */
  *loc = PHI_CHAIN (phi);

  /* If we are deleting the PHI node, then we should release the
     SSA_NAME node so that it can be reused.  */
  release_phi_node (phi);
  release_ssa_name (PHI_RESULT (phi));
}


-- 
           Summary: remove_phi_node attempts removal of a phi node resized
                    by resize_phi_node
           Product: gcc
           Version: 4.1.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: tree-optimization
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: hosking at cs dot purdue dot edu
 GCC build triplet: i386-apple-darwin8.7.1
  GCC host triplet: i386-apple-darwin8.7.1
GCC target triplet: i386-apple-darwin8.7.1


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


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

* [Bug tree-optimization/28798] remove_phi_node attempts removal of a phi node resized by resize_phi_node
  2006-08-22  6:07 [Bug tree-optimization/28798] New: remove_phi_node attempts removal of a phi node resized by resize_phi_node hosking at cs dot purdue dot edu
@ 2006-08-22  6:10 ` pinskia at gcc dot gnu dot org
  2006-08-22  6:17 ` pinskia at gcc dot gnu dot org
                   ` (14 subsequent siblings)
  15 siblings, 0 replies; 23+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2006-08-22  6:10 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #1 from pinskia at gcc dot gnu dot org  2006-08-22 06:10 -------
What are you trying to do?
It seems like you are using the API wrong.


-- 


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


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

* [Bug tree-optimization/28798] remove_phi_node attempts removal of a phi node resized by resize_phi_node
  2006-08-22  6:07 [Bug tree-optimization/28798] New: remove_phi_node attempts removal of a phi node resized by resize_phi_node hosking at cs dot purdue dot edu
  2006-08-22  6:10 ` [Bug tree-optimization/28798] " pinskia at gcc dot gnu dot org
@ 2006-08-22  6:17 ` pinskia at gcc dot gnu dot org
  2006-08-22 12:47   ` Daniel Berlin
  2006-08-22 12:47 ` dberlin at dberlin dot org
                   ` (13 subsequent siblings)
  15 siblings, 1 reply; 23+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2006-08-22  6:17 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #2 from pinskia at gcc dot gnu dot org  2006-08-22 06:17 -------
We should never had needed resize_phi_node inside PRE and resize_phi_node also
does an exact replacement so that means you are keeping a reference to the old
PHI node when adding an edge which is wrong.


-- 

pinskia at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |WAITING


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


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

* Re: [Bug tree-optimization/28798] remove_phi_node attempts removal  of a phi node resized by resize_phi_node
  2006-08-22  6:17 ` pinskia at gcc dot gnu dot org
@ 2006-08-22 12:47   ` Daniel Berlin
  0 siblings, 0 replies; 23+ messages in thread
From: Daniel Berlin @ 2006-08-22 12:47 UTC (permalink / raw)
  To: gcc-bugzilla; +Cc: gcc-bugs

pinskia at gcc dot gnu dot org wrote:
> ------- Comment #2 from pinskia at gcc dot gnu dot org  2006-08-22 06:17 -------
> We should never had needed resize_phi_node inside PRE and resize_phi_node also
> does an exact replacement so that means you are keeping a reference to the old
> PHI node when adding an edge which is wrong.
> 
> 
PRE never directly calls resize_phi_node
The insert_on_edge call PRE makes should *never* cause the number of
predecessors to change, so i can't see why resize_phi_node would ever be
called.

Without an example case where it does, i can't debug this further.

However, it's not "wrong" to keep a reference to a phi node when a
random edge in the program changes.  The API that doesn't allow such a
thing is just broken. This is a symptom of the fact that our phi node
arguments are stored in "pretend" vectors, even though it would be saner
to use an embedded vec in that structure.  This would allow reallocating
arguments without having to change the entire phi node structure.






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

* [Bug tree-optimization/28798] remove_phi_node attempts removal of a phi node resized by resize_phi_node
  2006-08-22  6:07 [Bug tree-optimization/28798] New: remove_phi_node attempts removal of a phi node resized by resize_phi_node hosking at cs dot purdue dot edu
  2006-08-22  6:10 ` [Bug tree-optimization/28798] " pinskia at gcc dot gnu dot org
  2006-08-22  6:17 ` pinskia at gcc dot gnu dot org
@ 2006-08-22 12:47 ` dberlin at dberlin dot org
  2006-08-23 13:40 ` hosking at cs dot purdue dot edu
                   ` (12 subsequent siblings)
  15 siblings, 0 replies; 23+ messages in thread
From: dberlin at dberlin dot org @ 2006-08-22 12:47 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #3 from dberlin at gcc dot gnu dot org  2006-08-22 12:47 -------
Subject: Re:  remove_phi_node attempts removal
 of a phi node resized by resize_phi_node

pinskia at gcc dot gnu dot org wrote:
> ------- Comment #2 from pinskia at gcc dot gnu dot org  2006-08-22 06:17 -------
> We should never had needed resize_phi_node inside PRE and resize_phi_node also
> does an exact replacement so that means you are keeping a reference to the old
> PHI node when adding an edge which is wrong.
> 
> 
PRE never directly calls resize_phi_node
The insert_on_edge call PRE makes should *never* cause the number of
predecessors to change, so i can't see why resize_phi_node would ever be
called.

Without an example case where it does, i can't debug this further.

However, it's not "wrong" to keep a reference to a phi node when a
random edge in the program changes.  The API that doesn't allow such a
thing is just broken. This is a symptom of the fact that our phi node
arguments are stored in "pretend" vectors, even though it would be saner
to use an embedded vec in that structure.  This would allow reallocating
arguments without having to change the entire phi node structure.


-- 


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


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

* [Bug tree-optimization/28798] remove_phi_node attempts removal of a phi node resized by resize_phi_node
  2006-08-22  6:07 [Bug tree-optimization/28798] New: remove_phi_node attempts removal of a phi node resized by resize_phi_node hosking at cs dot purdue dot edu
                   ` (2 preceding siblings ...)
  2006-08-22 12:47 ` dberlin at dberlin dot org
@ 2006-08-23 13:40 ` hosking at cs dot purdue dot edu
  2006-08-23 15:16   ` Andrew Pinski
  2006-08-23 15:16 ` pinskia at gmail dot com
                   ` (11 subsequent siblings)
  15 siblings, 1 reply; 23+ messages in thread
From: hosking at cs dot purdue dot edu @ 2006-08-23 13:40 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #4 from hosking at cs dot purdue dot edu  2006-08-23 13:40 -------
Here is a stack trace showing call to resize_phi_node from execute_pre.

#0  resize_phi_node (phi=0x42580028, len=9) at
../../gcc/gcc/tree-phinodes.c:271
#1  0x001415e8 in reserve_phi_args_for_new_edge (bb=0x42580000) at
../../gcc/gcc/tree-phinodes.c:325
#2  0x001fd8b0 in unchecked_make_edge (src=0x425885a0, dst=0x42580000,
flags=1113063428) at ../../gcc/gcc/cfg.c:272
#3  0x002414fc in tree_split_edge (edge_in=0x424a12d0) at
../../gcc/gcc/tree-cfg.c:3117
#4  0x00261bcc in split_edge (e=0x4257ebe0) at ../../gcc/gcc/cfghooks.c:407
#5  0x002445b8 in tree_find_edge_insert_loc (e=0x424a12d0, bsi=0xbfffeca8,
new_bb=0x0) at ../../gcc/gcc/tree-cfg.c:2975
#6  0x00244764 in bsi_commit_one_edge_insert (e=0x42580028, new_bb=0x9) at
../../gcc/gcc/tree-cfg.c:3016
#7  0x002466c8 in bsi_commit_edge_inserts () at ../../gcc/gcc/tree-cfg.c:2997
#8  0x00344098 in execute_pre (do_fre=0 '\0') at
../../gcc/gcc/tree-ssa-pre.c:2731
#9  0x002260b8 in execute_one_pass (pass=0x4ed660) at
../../gcc/gcc/passes.c:827
#10 0x00226188 in execute_pass_list (pass=0x4ed660) at
../../gcc/gcc/passes.c:859
#11 0x002261a0 in execute_pass_list (pass=0x4ec21c) at
../../gcc/gcc/passes.c:860
#12 0x00153fa4 in tree_rest_of_compilation (fndecl=0x42443580) at
../../gcc/gcc/tree-optimize.c:419
#13 0x0000497c in m3_expand_function (fndecl=0x42443580) at
../../gcc/gcc/m3cg/parse.c:848
#14 0x00052784 in cgraph_expand_function (node=0x424501c0) at
../../gcc/gcc/cgraphunit.c:1055
#15 0x00052fc8 in cgraph_optimize () at ../../gcc/gcc/cgraphunit.c:1121
#16 0x000130c0 in m3_parse_file (xx=0) at ../../gcc/gcc/m3cg/parse.c:4397
#17 0x00036674 in toplev_main (argc=1079409344, argv=0x40567bcc) at
../../gcc/gcc/toplev.c:991
#18 0x00001f24 in _start (argc=6, argv=0xbffff214, envp=0xbffff230) at
/SourceCache/Csu/Csu-58.1.1/crt.c:272
#19 0x00001dcc in start ()

The phi node that gets resized (and replaced in its bb) is later attempted to
be deleted, at the following point:

Program received signal EXC_BAD_ACCESS, Could not access memory.
Reason: KERN_PROTECTION_FAILURE at address: 0x00000000
0x00141ca8 in remove_phi_node (phi=0x42577800, prev=0x0) at
../../gcc/gcc/tree-phinodes.c:454
(gdb) where
#0  0x00141ca8 in remove_phi_node (phi=0x42577800, prev=0x0) at
../../gcc/gcc/tree-phinodes.c:454
#1  0x00341aac in remove_dead_inserted_code () at
../../gcc/gcc/tree-ssa-pre.c:2547
#2  0x003440a0 in execute_pre (do_fre=0 '\0') at
../../gcc/gcc/tree-ssa-pre.c:2733
#3  0x002260b8 in execute_one_pass (pass=0x4ed660) at
../../gcc/gcc/passes.c:827
#4  0x00226188 in execute_pass_list (pass=0x4ed660) at
../../gcc/gcc/passes.c:859
#5  0x002261a0 in execute_pass_list (pass=0x4ec21c) at
../../gcc/gcc/passes.c:860
#6  0x00153fa4 in tree_rest_of_compilation (fndecl=0x42443580) at
../../gcc/gcc/tree-optimize.c:419
#7  0x0000497c in m3_expand_function (fndecl=0x42443580) at
../../gcc/gcc/m3cg/parse.c:848
#8  0x00052784 in cgraph_expand_function (node=0x424501c0) at
../../gcc/gcc/cgraphunit.c:1055
#9  0x00052fc8 in cgraph_optimize () at ../../gcc/gcc/cgraphunit.c:1121
#10 0x000130c0 in m3_parse_file (xx=0) at ../../gcc/gcc/m3cg/parse.c:4397
#11 0x00036674 in toplev_main (argc=1079409344, argv=0x40567bcc) at
../../gcc/gcc/toplev.c:991
#12 0x00001f24 in _start (argc=6, argv=0xbffff214, envp=0xbffff230) at
/SourceCache/Csu/Csu-58.1.1/crt.c:272
#13 0x00001dcc in start ()


-- 


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


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

* [Bug tree-optimization/28798] remove_phi_node attempts removal of a phi node resized by resize_phi_node
  2006-08-22  6:07 [Bug tree-optimization/28798] New: remove_phi_node attempts removal of a phi node resized by resize_phi_node hosking at cs dot purdue dot edu
                   ` (3 preceding siblings ...)
  2006-08-23 13:40 ` hosking at cs dot purdue dot edu
@ 2006-08-23 15:16 ` pinskia at gmail dot com
  2006-08-23 18:12 ` pinskia at gcc dot gnu dot org
                   ` (10 subsequent siblings)
  15 siblings, 0 replies; 23+ messages in thread
From: pinskia at gmail dot com @ 2006-08-23 15:16 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #5 from pinskia at gmail dot com  2006-08-23 15:16 -------
Subject: Re:  remove_phi_node attempts removal
        of a phi node resized by resize_phi_node

On Wed, 2006-08-23 at 13:40 +0000, hosking at cs dot purdue dot edu
wrote:
> 
> ------- Comment #4 from hosking at cs dot purdue dot edu  2006-08-23 13:40 -------
> Here is a stack trace showing call to resize_phi_node from execute_pre.

Do you have a testcase or is this with a modified compiler?

-- Pinski


-- 


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


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

* Re: [Bug tree-optimization/28798] remove_phi_node attempts removal  of a phi node resized by resize_phi_node
  2006-08-23 13:40 ` hosking at cs dot purdue dot edu
@ 2006-08-23 15:16   ` Andrew Pinski
  0 siblings, 0 replies; 23+ messages in thread
From: Andrew Pinski @ 2006-08-23 15:16 UTC (permalink / raw)
  To: gcc-bugzilla; +Cc: gcc-bugs

On Wed, 2006-08-23 at 13:40 +0000, hosking at cs dot purdue dot edu
wrote:
> 
> ------- Comment #4 from hosking at cs dot purdue dot edu  2006-08-23 13:40 -------
> Here is a stack trace showing call to resize_phi_node from execute_pre.

Do you have a testcase or is this with a modified compiler?

-- Pinski


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

* [Bug tree-optimization/28798] remove_phi_node attempts removal of a phi node resized by resize_phi_node
  2006-08-22  6:07 [Bug tree-optimization/28798] New: remove_phi_node attempts removal of a phi node resized by resize_phi_node hosking at cs dot purdue dot edu
                   ` (4 preceding siblings ...)
  2006-08-23 15:16 ` pinskia at gmail dot com
@ 2006-08-23 18:12 ` pinskia at gcc dot gnu dot org
  2006-08-23 22:30 ` hosking at cs dot purdue dot edu
                   ` (9 subsequent siblings)
  15 siblings, 0 replies; 23+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2006-08-23 18:12 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #6 from pinskia at gcc dot gnu dot org  2006-08-23 18:12 -------
(In reply to comment #5)
> Do you have a testcase or is this with a modified compiler?

PS I delete private emails about bug reports.


-- 


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


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

* [Bug tree-optimization/28798] remove_phi_node attempts removal of a phi node resized by resize_phi_node
  2006-08-22  6:07 [Bug tree-optimization/28798] New: remove_phi_node attempts removal of a phi node resized by resize_phi_node hosking at cs dot purdue dot edu
                   ` (5 preceding siblings ...)
  2006-08-23 18:12 ` pinskia at gcc dot gnu dot org
@ 2006-08-23 22:30 ` hosking at cs dot purdue dot edu
  2006-08-23 23:52   ` Daniel Berlin
  2006-08-23 23:43 ` hosking at cs dot purdue dot edu
                   ` (8 subsequent siblings)
  15 siblings, 1 reply; 23+ messages in thread
From: hosking at cs dot purdue dot edu @ 2006-08-23 22:30 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #7 from hosking at cs dot purdue dot edu  2006-08-23 22:29 -------
This is with the Modula-3 backend.  I am porting it to 4.1.1 and encountered
this problem with -O3 turned on.


-- 


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


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

* [Bug tree-optimization/28798] remove_phi_node attempts removal of a phi node resized by resize_phi_node
  2006-08-22  6:07 [Bug tree-optimization/28798] New: remove_phi_node attempts removal of a phi node resized by resize_phi_node hosking at cs dot purdue dot edu
                   ` (6 preceding siblings ...)
  2006-08-23 22:30 ` hosking at cs dot purdue dot edu
@ 2006-08-23 23:43 ` hosking at cs dot purdue dot edu
  2006-08-24  0:15   ` Andrew Pinski
  2006-08-23 23:52 ` dberlin at dberlin dot org
                   ` (7 subsequent siblings)
  15 siblings, 1 reply; 23+ messages in thread
From: hosking at cs dot purdue dot edu @ 2006-08-23 23:43 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #8 from hosking at cs dot purdue dot edu  2006-08-23 23:43 -------
I can send whatever traces you might need for diagnosis.


-- 


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


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

* Re: [Bug tree-optimization/28798] remove_phi_node attempts removal  of a phi node resized by resize_phi_node
  2006-08-23 22:30 ` hosking at cs dot purdue dot edu
@ 2006-08-23 23:52   ` Daniel Berlin
  0 siblings, 0 replies; 23+ messages in thread
From: Daniel Berlin @ 2006-08-23 23:52 UTC (permalink / raw)
  To: gcc-bugzilla; +Cc: gcc-bugs

hosking at cs dot purdue dot edu wrote:
> ------- Comment #7 from hosking at cs dot purdue dot edu  2006-08-23 22:29 -------
> This is with the Modula-3 backend.  I am porting it to 4.1.1 and encountered
> this problem with -O3 turned on.
> 
> 
Does 4.1 have the check for EDGE_CRITICAL_P in insert_aux?

If not, that is the problem.


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

* [Bug tree-optimization/28798] remove_phi_node attempts removal of a phi node resized by resize_phi_node
  2006-08-22  6:07 [Bug tree-optimization/28798] New: remove_phi_node attempts removal of a phi node resized by resize_phi_node hosking at cs dot purdue dot edu
                   ` (7 preceding siblings ...)
  2006-08-23 23:43 ` hosking at cs dot purdue dot edu
@ 2006-08-23 23:52 ` dberlin at dberlin dot org
  2006-08-24  0:15 ` pinskia at physics dot uc dot edu
                   ` (6 subsequent siblings)
  15 siblings, 0 replies; 23+ messages in thread
From: dberlin at dberlin dot org @ 2006-08-23 23:52 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #9 from dberlin at gcc dot gnu dot org  2006-08-23 23:52 -------
Subject: Re:  remove_phi_node attempts removal
 of a phi node resized by resize_phi_node

hosking at cs dot purdue dot edu wrote:
> ------- Comment #7 from hosking at cs dot purdue dot edu  2006-08-23 22:29 -------
> This is with the Modula-3 backend.  I am porting it to 4.1.1 and encountered
> this problem with -O3 turned on.
> 
> 
Does 4.1 have the check for EDGE_CRITICAL_P in insert_aux?

If not, that is the problem.


-- 


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


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

* Re: [Bug tree-optimization/28798] remove_phi_node attempts removal of a phi node resized by resize_phi_node
  2006-08-23 23:43 ` hosking at cs dot purdue dot edu
@ 2006-08-24  0:15   ` Andrew Pinski
  0 siblings, 0 replies; 23+ messages in thread
From: Andrew Pinski @ 2006-08-24  0:15 UTC (permalink / raw)
  To: gcc-bugzilla; +Cc: gcc-bugs

> 
> 
> 
> ------- Comment #8 from hosking at cs dot purdue dot edu  2006-08-23 23:43 -------
> I can send whatever traces you might need for diagnosis.

Can you provide the dump generated by -fdump-tree-pre-details?

-- Pinski


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

* [Bug tree-optimization/28798] remove_phi_node attempts removal of a phi node resized by resize_phi_node
  2006-08-22  6:07 [Bug tree-optimization/28798] New: remove_phi_node attempts removal of a phi node resized by resize_phi_node hosking at cs dot purdue dot edu
                   ` (8 preceding siblings ...)
  2006-08-23 23:52 ` dberlin at dberlin dot org
@ 2006-08-24  0:15 ` pinskia at physics dot uc dot edu
  2006-08-24  0:57 ` hosking at cs dot purdue dot edu
                   ` (5 subsequent siblings)
  15 siblings, 0 replies; 23+ messages in thread
From: pinskia at physics dot uc dot edu @ 2006-08-24  0:15 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #10 from pinskia at physics dot uc dot edu  2006-08-24 00:15 -------
Subject: Re:  remove_phi_node attempts removal of a phi node resized by
resize_phi_node

> 
> 
> 
> ------- Comment #8 from hosking at cs dot purdue dot edu  2006-08-23 23:43 -------
> I can send whatever traces you might need for diagnosis.

Can you provide the dump generated by -fdump-tree-pre-details?

-- Pinski


-- 


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


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

* [Bug tree-optimization/28798] remove_phi_node attempts removal of a phi node resized by resize_phi_node
  2006-08-22  6:07 [Bug tree-optimization/28798] New: remove_phi_node attempts removal of a phi node resized by resize_phi_node hosking at cs dot purdue dot edu
                   ` (9 preceding siblings ...)
  2006-08-24  0:15 ` pinskia at physics dot uc dot edu
@ 2006-08-24  0:57 ` hosking at cs dot purdue dot edu
  2006-08-24  2:45   ` Daniel Berlin
  2006-08-24  2:45 ` dberlin at dberlin dot org
                   ` (4 subsequent siblings)
  15 siblings, 1 reply; 23+ messages in thread
From: hosking at cs dot purdue dot edu @ 2006-08-24  0:57 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #11 from hosking at cs dot purdue dot edu  2006-08-24 00:57 -------
(In reply to comment #9)
> Does 4.1 have the check for EDGE_CRITICAL_P in insert_aux?

Yes:

                          /* This can happen in the very weird case
                             that our fake infinite loop edges have caused a
                             critical edge to appear.  */
                          if (EDGE_CRITICAL_P (pred))
                            {
                              cant_insert = true;
                              break;
                            }


-- 


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


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

* Re: [Bug tree-optimization/28798] remove_phi_node attempts removal  of a phi node resized by resize_phi_node
  2006-08-24  0:57 ` hosking at cs dot purdue dot edu
@ 2006-08-24  2:45   ` Daniel Berlin
  0 siblings, 0 replies; 23+ messages in thread
From: Daniel Berlin @ 2006-08-24  2:45 UTC (permalink / raw)
  To: gcc-bugzilla; +Cc: gcc-bugs

hosking at cs dot purdue dot edu wrote:
> ------- Comment #11 from hosking at cs dot purdue dot edu  2006-08-24 00:57 -------
> (In reply to comment #9)
>> Does 4.1 have the check for EDGE_CRITICAL_P in insert_aux?
> 
> Yes:
> 
>                           /* This can happen in the very weird case
>                              that our fake infinite loop edges have caused a
>                              critical edge to appear.  */
>                           if (EDGE_CRITICAL_P (pred))
>                             {
>                               cant_insert = true;
>                               break;
>                             }
> 
> 

Honestly, there should be no other case in which the edge actually needs
to be split.  It is just a shortcut rather than trying to whether we
want the beginning of the succ or the end of the pred (it figures it out
for us).

If you could attach the dump from
-fdump-tree-crited-vops-details-blocks-stats, and tell me what pred,
src, and block are, that would be helpful.

Without more, it's either something *very* strange in the code modula3
is creating (or broken gimplification), *or* the edge inserter is
confused and believes it needs to create a block in a case it doesn't.





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

* [Bug tree-optimization/28798] remove_phi_node attempts removal of a phi node resized by resize_phi_node
  2006-08-22  6:07 [Bug tree-optimization/28798] New: remove_phi_node attempts removal of a phi node resized by resize_phi_node hosking at cs dot purdue dot edu
                   ` (10 preceding siblings ...)
  2006-08-24  0:57 ` hosking at cs dot purdue dot edu
@ 2006-08-24  2:45 ` dberlin at dberlin dot org
  2006-08-24 15:27 ` hosking at cs dot purdue dot edu
                   ` (3 subsequent siblings)
  15 siblings, 0 replies; 23+ messages in thread
From: dberlin at dberlin dot org @ 2006-08-24  2:45 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #12 from dberlin at gcc dot gnu dot org  2006-08-24 02:45 -------
Subject: Re:  remove_phi_node attempts removal
 of a phi node resized by resize_phi_node

hosking at cs dot purdue dot edu wrote:
> ------- Comment #11 from hosking at cs dot purdue dot edu  2006-08-24 00:57 -------
> (In reply to comment #9)
>> Does 4.1 have the check for EDGE_CRITICAL_P in insert_aux?
> 
> Yes:
> 
>                           /* This can happen in the very weird case
>                              that our fake infinite loop edges have caused a
>                              critical edge to appear.  */
>                           if (EDGE_CRITICAL_P (pred))
>                             {
>                               cant_insert = true;
>                               break;
>                             }
> 
> 

Honestly, there should be no other case in which the edge actually needs
to be split.  It is just a shortcut rather than trying to whether we
want the beginning of the succ or the end of the pred (it figures it out
for us).

If you could attach the dump from
-fdump-tree-crited-vops-details-blocks-stats, and tell me what pred,
src, and block are, that would be helpful.

Without more, it's either something *very* strange in the code modula3
is creating (or broken gimplification), *or* the edge inserter is
confused and believes it needs to create a block in a case it doesn't.


-- 


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


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

* [Bug tree-optimization/28798] remove_phi_node attempts removal of a phi node resized by resize_phi_node
  2006-08-22  6:07 [Bug tree-optimization/28798] New: remove_phi_node attempts removal of a phi node resized by resize_phi_node hosking at cs dot purdue dot edu
                   ` (11 preceding siblings ...)
  2006-08-24  2:45 ` dberlin at dberlin dot org
@ 2006-08-24 15:27 ` hosking at cs dot purdue dot edu
  2006-08-25 15:19   ` Daniel Berlin
  2006-08-25 15:19 ` dberlin at dberlin dot org
                   ` (2 subsequent siblings)
  15 siblings, 1 reply; 23+ messages in thread
From: hosking at cs dot purdue dot edu @ 2006-08-24 15:27 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #13 from hosking at cs dot purdue dot edu  2006-08-24 15:27 -------
Is this enough?

Here is the dump output, followed by stack traces at the resize and remove
points (the remove goes on to fail).  The edge being split is:

(gdb) p *e
$9 = {
  src = 0x425cc8d0, 
  dest = 0x425cc8a0, 
  insns = {
    r = 0x425ccc90, 
    t = 0x425ccc90
  }, 
  aux = 0x424a1270, 
  goto_locus = 0x0, 
  flags = 0, 
  probability = 0, 
  count = 0, 
  dest_idx = 1111565824
}

Its src is:

(gdb) p *(e->src)
$12 = {
  stmt_list = 0x425cd7e0, 
  preds = 0x425bd7e0, 
  succs = 0x0, 
  aux = 0x0, 
  loop_father = 0x0, 
  dom = {0x1, 0x2710}, 
  prev_bb = 0x0, 
  next_bb = 0x0, 
  il = {
    rtl = 0x2
  }, 
  phi_nodes = 0x0, 
  predictions = 0x0, 
  count = 4781934674863446560, 
  index = 0, 
  loop_depth = 0, 
  frequency = 0, 
  flags = 1
}

Its dest is:

(gdb) p *(e->dest)
$13 = {
  stmt_list = 0x425cd780, 
  preds = 0x425bd7e0, 
  succs = 0x0, 
  aux = 0x0, 
  loop_father = 0x0, 
  dom = {0x1, 0x2710}, 
  prev_bb = 0x0, 
  next_bb = 0x0, 
  il = {
    rtl = 0x3
  }, 
  phi_nodes = 0x0, 
  predictions = 0x0, 
  count = 4781934262546585568, 
  index = 0, 
  loop_depth = 0, 
  frequency = 0, 
  flags = 1
}

Here is the dump:

;; Function TrestleGoo__PutProp (TrestleGoo__PutProp)

TrestleGoo__PutProp (M3_BFdKo9_vv, M3_Af40ku_ref)
{
  <unnamed type> * M3_BFdKo9_v;
  word_32 M3_Cwb5VA_tc;
  <unnamed type> * M3_BhAG13_p;
  <unnamed type> * M3_BhAG13_e;
  struct 
  {
  } L_2;
  <unnamed type> * D.403;
  <unnamed type> * D.406;
  <unnamed type> * D.407;
  <unnamed type> * D.419;
  <unnamed type> (*<T181>) (<unnamed type> *) D.506;
  <unnamed type> * D.505;
  <unnamed type> * * D.504;
  <unnamed type> * D.503;
  <unnamed type> * D.502;
  <unnamed type> * * L_2.3;
  <unnamed type> D.500;
  <unnamed type> D.499;
  word_32 D.498;
  word_32 D.497;
  word_32 D.496;
  int_32 D.495;
  int_32 * D.494;
  <unnamed type> * D.493;
  <unnamed type> * * D.492;
  <unnamed type> * * D.491;
  <unnamed type> D.490;
  word_32 D.489;
  word_32 D.488;
  int_32 M3_Cwb5VA_tc.2;
  <unnamed type> D.486;
  <unnamed type> D.485;
  word_32 D.484;
  word_32 D.483;
  word_32 D.482;
  int_32 D.481;
  int_32 * D.480;
  <unnamed type> * D.479;
  <unnamed type> * * D.478;
  <unnamed type> * D.477;
  <unnamed type> D.476;
  <unnamed type> D.475;
  word_32 D.474;
  word_32 D.473;
  word_32 D.472;
  int_32 D.471;
  int_32 * D.470;
  <unnamed type> * D.469;
  <unnamed type> * * M3_BhAG13_e.1;
  <unnamed type> * * D.467;
  <unnamed type> * * D.466;
  <unnamed type> * D.465;
  <unnamed type> * D.464;
  <unnamed type> * D.463;
  <unnamed type> * * D.462;
  <unnamed type> * D.461;
  int_32 D.460;
  <unnamed type> * D.459;
  int_32 D.458;
  int_32 * D.457;
  <unnamed type> * D.456;
  int_32 D.455;
  word_32 D.454;
  word_32 D.453;
  word_32 D.452;
  int_32 D.451;
  int_32 * D.450;
  <unnamed type> * D.449;
  <unnamed type> * D.448;
  int_32 * D.447;
  <unnamed type> * D.446;
  <unnamed type> (*<T181>) (<unnamed type> *) D.445;
  <unnamed type> * D.444;
  <unnamed type> * * D.443;
  <unnamed type> * D.442;
  <unnamed type> * * D.441;
  <unnamed type> * D.440;
  <unnamed type> * * D.439;
  <unnamed type> * D.438;
  <unnamed type> D.437;
  <unnamed type> D.436;
  word_32 D.435;
  word_32 D.434;
  word_32 D.433;
  int_32 D.432;
  int_32 * D.431;
  <unnamed type> * D.430;
  <unnamed type> * D.429;
  <unnamed type> * * D.428;
  <unnamed type> * D.427;

  # BLOCK 0 freq:1000
  # PRED: ENTRY [100.0%]  (fallthru,exec)
  D.427_4 = &MM_TrestleGoo + 52;
  D.428_5 = (<unnamed type> * *) D.427_4;
  #   VUSE <MM_TrestleGoo_197>;
  D.429_6 = *D.428_5;
  if (D.429_6 == 0B) goto <L53>; else goto <L0>;
  # SUCC: 43 [19.0%]  (true,exec) 1 [81.0%]  (false,exec)

  # BLOCK 43 freq:190
  # PRED: 0 [19.0%]  (true,exec)
<L53>:;
  goto <bb 3> (<L2>);
  # SUCC: 3 [100.0%]  (fallthru)

  # BLOCK 1 freq:810
  # PRED: 0 [81.0%]  (false,exec)
<L0>:;
  D.430_166 = D.429_6 + ffffffffffffffff;
  D.431_167 = (int_32 *) D.430_166;
  #   VUSE <MM_TrestleGoo_197>;
  #   VUSE <L_2_198>;
  D.432_168 = *D.431_167;
  D.433_169 = (word_32) D.432_168;
  D.434_170 = D.433_169 << 22;
  D.435_171 = D.434_170 >> 31;
  if (D.435_171 == 0) goto <L54>; else goto <L1>;
  # SUCC: 44 [70.0%]  (true,exec) 2 [30.0%]  (false,exec)

  # BLOCK 44 freq:567
  # PRED: 1 [70.0%]  (true,exec)
<L54>:;
  goto <bb 3> (<L2>);
  # SUCC: 3 [100.0%]  (fallthru)

  # BLOCK 2 freq:243
  # PRED: 1 [30.0%]  (false,exec)
<L1>:;
  #   MM_TrestleGoo_239 = V_MAY_DEF <MM_TrestleGoo_197>;
  #   L_2_240 = V_MAY_DEF <L_2_198>;
  RTHooks__CheckLoadTracedRef (D.429_6);
  # SUCC: 3 [100.0%]  (fallthru,exec)

  # BLOCK 3 freq:1000
  # PRED: 43 [100.0%]  (fallthru) 44 [100.0%]  (fallthru) 2 [100.0%] 
(fallthru,exec)
  # L_2_187 = PHI <L_2_198(43), L_2_198(44), L_2_240(2)>;
  # MM_TrestleGoo_177 = PHI <MM_TrestleGoo_197(43), MM_TrestleGoo_197(44),
MM_TrestleGoo_239(2)>;
<L2>:;
  D.438_7 = &L_2 + 8;
  D.439_8 = (<unnamed type> * *) D.438_7;
  #   VUSE <MM_TrestleGoo_177>;
  D.440_11 = *D.428_5;
  #   L_2_199 = V_MAY_DEF <L_2_187>;
  *D.439_8 = D.440_11;
  D.441_15 = (<unnamed type> * *) D.440_11;
  #   VUSE <MM_TrestleGoo_177>;
  #   VUSE <L_2_199>;
  D.442_16 = *D.441_15;
  D.443_17 = (<unnamed type> * *) D.442_16;
  #   VUSE <MM_TrestleGoo_177>;
  #   VUSE <L_2_199>;
  D.444_18 = *D.443_17;
  D.445_19 = (<unnamed type> (*<T181>) (<unnamed type> *)) D.444_18;
  #   MM_TrestleGoo_200 = V_MAY_DEF <MM_TrestleGoo_177>;
  #   L_2_201 = V_MAY_DEF <L_2_199>;
  D.445_19 (D.440_11);
  # SUCC: 4 [100.0%]  (fallthru,exec)

  # BLOCK 4 freq:1000
  # PRED: 3 [100.0%]  (fallthru,exec)
<L3>:;
  D.446_23 = &L_2 + 4;
  D.447_24 = (int_32 *) D.446_23;
  #   L_2_202 = V_MAY_DEF <L_2_201>;
  *D.447_24 = 6;
  #   MM_TrestleGoo_203 = V_MAY_DEF <MM_TrestleGoo_200>;
  #   L_2_204 = V_MAY_DEF <L_2_202>;
  RTHooks__PushEFrame (&L_2);
  # SUCC: 5 [100.0%]  (fallthru,exec)

  # BLOCK 5 freq:1000
  # PRED: 4 [100.0%]  (fallthru,exec)
  #   MM_TrestleGoo_205 = V_MAY_DEF <MM_TrestleGoo_203>;
  #   L_2_206 = V_MAY_DEF <L_2_204>;
  D.403_26 = TrestleGoo__TrueChild (M3_BFdKo9_vv_25);
  # SUCC: 6 [100.0%]  (fallthru,exec)

  # BLOCK 6 freq:1000
  # PRED: 5 [100.0%]  (fallthru,exec)
  if (M3_Af40ku_ref_29 == 0B) goto <L55>; else goto <L4>;
  # SUCC: 45 [19.0%]  (true,exec) 7 [81.0%]  (false,exec)

  # BLOCK 45 freq:190
  # PRED: 6 [19.0%]  (true,exec)
<L55>:;
  goto <bb 8> (<L5>);
  # SUCC: 8 [100.0%]  (fallthru)

  # BLOCK 7 freq:810
  # PRED: 6 [81.0%]  (false,exec)
<L4>:;
  D.449_156 = M3_Af40ku_ref_29 + ffffffffffffffff;
  D.450_157 = (int_32 *) D.449_156;
  #   VUSE <MM_TrestleGoo_205>;
  #   VUSE <L_2_206>;
  D.451_158 = *D.450_157;
  D.452_159 = (word_32) D.451_158;
  D.453_160 = D.452_159 << 1;
  D.454_161 = D.453_160 >> 12;
  D.403_162 = (<unnamed type> *) D.454_161;
  # SUCC: 8 [100.0%]  (fallthru,exec)

  # BLOCK 8 freq:1000
  # PRED: 45 [100.0%]  (fallthru) 7 [100.0%]  (fallthru,exec)
  # D.403_2 = PHI <0B(45), D.403_162(7)>;
<L5>:;
  D.455_31 = (int_32) D.403_2;
  M3_Cwb5VA_tc_32 = (word_32) D.455_31;
  D.456_33 = &MM_TrestleGoo + 208;
  D.457_34 = (int_32 *) D.456_33;
  #   VUSE <MM_TrestleGoo_205>;
  D.458_35 = *D.457_34;
  #   MM_TrestleGoo_207 = V_MAY_DEF <MM_TrestleGoo_205>;
  #   L_2_208 = V_MAY_DEF <L_2_206>;
  D.403_36 = VBT__GetProp (D.403_26, D.458_35);
  # SUCC: 9 [100.0%]  (fallthru,exec)

  # BLOCK 9 freq:1000
  # PRED: 8 [100.0%]  (fallthru,exec)
  if (D.403_36 == 0B) goto <L56>; else goto <L6>;
  # SUCC: 46 [19.0%]  (true,exec) 10 [81.0%]  (false,exec)

  # BLOCK 46 freq:190
  # PRED: 9 [19.0%]  (true,exec)
<L56>:;
  goto <bb 12> (<L8>);
  # SUCC: 12 [100.0%]  (fallthru)

  # BLOCK 10 freq:810
  # PRED: 9 [81.0%]  (false,exec)
<L6>:;
  D.449_146 = D.403_36 + ffffffffffffffff;
  D.450_147 = (int_32 *) D.449_146;
  #   VUSE <MM_TrestleGoo_207>;
  #   VUSE <L_2_208>;
  D.451_148 = *D.450_147;
  D.452_149 = (word_32) D.451_148;
  D.453_150 = D.452_149 << 1;
  D.454_151 = D.453_150 >> 12;
  D.460_152 = (int_32) D.454_151;
  #   VUSE <MM_TrestleGoo_207>;
  D.458_155 = *D.457_34;
  if (D.460_152 == D.458_155) goto <L57>; else goto <L7>;
  # SUCC: 47 [48.8%]  (true,exec) 11 [51.2%]  (false,exec)

  # BLOCK 47 freq:395
  # PRED: 10 [48.8%]  (true,exec)
<L57>:;
  goto <bb 12> (<L8>);
  # SUCC: 12 [100.0%]  (fallthru)

  # BLOCK 11 freq:415
  # PRED: 10 [51.2%]  (false,exec)
<L7>:;
  #   MM_TrestleGoo_237 = V_MAY_DEF <MM_TrestleGoo_207>;
  #   L_2_238 = V_MAY_DEF <L_2_208>;
  _m3_fault (1349);
  # SUCC: 12 [100.0%]  (fallthru,exec)

  # BLOCK 12 freq:1000
  # PRED: 46 [100.0%]  (fallthru) 47 [100.0%]  (fallthru) 11 [100.0%] 
(fallthru,exec)
  # L_2_188 = PHI <L_2_208(46), L_2_208(47), L_2_238(11)>;
  # MM_TrestleGoo_178 = PHI <MM_TrestleGoo_207(46), MM_TrestleGoo_207(47),
MM_TrestleGoo_237(11)>;
<L8>:;
  D.461_39 = &MM_TrestleGoo + 204;
  D.462_40 = (<unnamed type> * *) D.461_39;
  #   VUSE <MM_TrestleGoo_178>;
  D.463_41 = *D.462_40;
  #   MM_TrestleGoo_209 = V_MAY_DEF <MM_TrestleGoo_178>;
  #   L_2_210 = V_MAY_DEF <L_2_188>;
  D.403_42 = RTHooks__Allocate (D.463_41);
  # SUCC: 13 [100.0%]  (fallthru,exec)

  # BLOCK 13 freq:1000
  # PRED: 12 [100.0%]  (fallthru,exec)
  D.465_45 = D.403_42 + 4;
  D.466_46 = (<unnamed type> * *) D.465_45;
  #   MM_TrestleGoo_211 = V_MAY_DEF <MM_TrestleGoo_209>;
  #   L_2_212 = V_MAY_DEF <L_2_210>;
  *D.466_46 = M3_Af40ku_ref_29;
  D.467_48 = (<unnamed type> * *) D.403_42;
  #   MM_TrestleGoo_213 = V_MAY_DEF <MM_TrestleGoo_211>;
  #   L_2_214 = V_MAY_DEF <L_2_212>;
  *D.467_48 = D.403_36;
  #   MM_TrestleGoo_215 = V_MAY_DEF <MM_TrestleGoo_213>;
  #   L_2_216 = V_MAY_DEF <L_2_214>;
  VBT__PutProp (D.403_26, D.403_42);
  goto <bb 34> (<L50>);
  # SUCC: 34 [100.0%]  (fallthru,exec)

  # BLOCK 14 freq:9000
  # PRED: 42 [100.0%]  (fallthru,exec)
<L9>:;
  #   VUSE <MM_TrestleGoo_55>;
  #   VUSE <L_2_65>;
  D.407_67 = *M3_BhAG13_e.1_50;
  if (D.407_67 == 0B) goto <L58>; else goto <L10>;
  # SUCC: 48 [19.0%]  (true,exec) 15 [81.0%]  (false,exec)

  # BLOCK 48 freq:1710
  # PRED: 14 [19.0%]  (true,exec)
<L58>:;
  goto <bb 17> (<L12>);
  # SUCC: 17 [100.0%]  (fallthru)

  # BLOCK 15 freq:7290
  # PRED: 14 [81.0%]  (false,exec)
<L10>:;
  D.469_130 = D.407_67 + ffffffffffffffff;
  D.470_131 = (int_32 *) D.469_130;
  #   VUSE <MM_TrestleGoo_55>;
  #   VUSE <L_2_65>;
  D.471_132 = *D.470_131;
  D.472_133 = (word_32) D.471_132;
  D.473_134 = D.472_133 << 22;
  D.474_135 = D.473_134 >> 31;
  if (D.474_135 == 0) goto <L59>; else goto <L11>;
  # SUCC: 49 [70.0%]  (true,exec) 16 [30.0%]  (false,exec)

  # BLOCK 49 freq:5103
  # PRED: 15 [70.0%]  (true,exec)
<L59>:;
  goto <bb 17> (<L12>);
  # SUCC: 17 [100.0%]  (fallthru)

  # BLOCK 16 freq:2187
  # PRED: 15 [30.0%]  (false,exec)
<L11>:;
  #   MM_TrestleGoo_233 = V_MAY_DEF <MM_TrestleGoo_55>;
  #   L_2_234 = V_MAY_DEF <L_2_65>;
  RTHooks__CheckLoadTracedRef (D.407_67);
  # SUCC: 17 [100.0%]  (fallthru,exec)

  # BLOCK 17 freq:9000
  # PRED: 48 [100.0%]  (fallthru) 49 [100.0%]  (fallthru) 16 [100.0%] 
(fallthru,exec)
  # L_2_189 = PHI <L_2_65(48), L_2_65(49), L_2_234(16)>;
  # MM_TrestleGoo_179 = PHI <MM_TrestleGoo_55(48), MM_TrestleGoo_55(49),
MM_TrestleGoo_233(16)>;
<L12>:;
  D.477_68 = D.407_67 + 4;
  D.478_69 = (<unnamed type> * *) D.477_68;
  #   VUSE <MM_TrestleGoo_179>;
  #   VUSE <L_2_189>;
  D.406_70 = *D.478_69;
  if (D.406_70 == 0B) goto <L60>; else goto <L13>;
  # SUCC: 50 [19.0%]  (true,exec) 18 [81.0%]  (false,exec)

  # BLOCK 18 freq:7290
  # PRED: 17 [81.0%]  (false,exec)
<L13>:;
  D.449_122 = D.406_70 + ffffffffffffffff;
  D.450_123 = (int_32 *) D.449_122;
  #   VUSE <MM_TrestleGoo_179>;
  #   VUSE <L_2_189>;
  D.481_124 = *D.450_123;
  D.482_125 = (word_32) D.481_124;
  D.483_126 = D.482_125 << 22;
  D.484_127 = D.483_126 >> 31;
  if (D.484_127 == 0) goto <L61>; else goto <L14>;
  # SUCC: 51 [70.0%]  (true,exec) 19 [30.0%]  (false,exec)

  # BLOCK 19 freq:2187
  # PRED: 18 [30.0%]  (false,exec)
<L14>:;
  #   MM_TrestleGoo_231 = V_MAY_DEF <MM_TrestleGoo_179>;
  #   L_2_232 = V_MAY_DEF <L_2_189>;
  RTHooks__CheckLoadTracedRef (D.406_70);
  goto <bb 41> (<L51>);
  # SUCC: 41 [100.0%]  (fallthru,exec)

  # BLOCK 50 freq:1710
  # PRED: 17 [19.0%]  (true,exec)
<L60>:;
  # SUCC: 20 [100.0%]  (fallthru)

  # BLOCK 20 freq:9000
  # PRED: 50 [100.0%]  (fallthru) 41 [100.0%]  (fallthru,exec)
  # L_2_74 = PHI <L_2_189(50), L_2_252(41)>;
  # MM_TrestleGoo_76 = PHI <MM_TrestleGoo_179(50), MM_TrestleGoo_251(41)>;
  # D.403_3 = PHI <0B(50), D.403_121(41)>;
<L17>:;
  D.455_72 = (int_32) D.403_3;
  M3_Cwb5VA_tc.2_73 = (int_32) M3_Cwb5VA_tc_32;
  if (D.455_72 != M3_Cwb5VA_tc.2_73) goto <L27>; else goto <L18>;
  # SUCC: 30 [71.0%]  (true,exec) 21 [29.0%]  (false,exec)

  # BLOCK 21 freq:2610
  # PRED: 20 [29.0%]  (false,exec)
<L18>:;
  D.449_86 = M3_BhAG13_e_1 + ffffffffffffffff;
  D.450_87 = (int_32 *) D.449_86;
  #   VUSE <MM_TrestleGoo_76>;
  #   VUSE <L_2_74>;
  D.451_88 = *D.450_87;
  D.452_89 = (word_32) D.451_88;
  D.488_90 = D.452_89 << 21;
  D.489_91 = D.488_90 >> 31;
  if (D.489_91 != 0) goto <L62>; else goto <L19>;
  # SUCC: 52 [70.0%]  (true,exec) 22 [30.0%]  (false,exec)

  # BLOCK 52 freq:1827
  # PRED: 21 [70.0%]  (true,exec)
<L62>:;
  goto <bb 23> (<L20>);
  # SUCC: 23 [100.0%]  (fallthru)

  # BLOCK 22 freq:783
  # PRED: 21 [30.0%]  (false,exec)
<L19>:;
  #   MM_TrestleGoo_229 = V_MAY_DEF <MM_TrestleGoo_76>;
  #   L_2_230 = V_MAY_DEF <L_2_74>;
  RTHooks__CheckStoreTraced (M3_BhAG13_e_1);
  # SUCC: 23 [100.0%]  (fallthru,exec)

  # BLOCK 23 freq:2610
  # PRED: 52 [100.0%]  (fallthru) 22 [100.0%]  (fallthru,exec)
  # L_2_191 = PHI <L_2_74(52), L_2_230(22)>;
  # MM_TrestleGoo_181 = PHI <MM_TrestleGoo_76(52), MM_TrestleGoo_229(22)>;
<L20>:;
  #   VUSE <MM_TrestleGoo_181>;
  #   VUSE <L_2_191>;
  D.406_94 = *M3_BhAG13_e.1_50;
  if (D.406_94 == 0B) goto <L63>; else goto <L21>;
  # SUCC: 53 [19.0%]  (true,exec) 24 [81.0%]  (false,exec)

  # BLOCK 53 freq:496
  # PRED: 23 [19.0%]  (true,exec)
<L63>:;
  goto <bb 26> (<L23>);
  # SUCC: 26 [100.0%]  (fallthru)

  # BLOCK 24 freq:2114
  # PRED: 23 [81.0%]  (false,exec)
<L21>:;
  D.479_107 = D.406_94 + ffffffffffffffff;
  D.480_108 = (int_32 *) D.479_107;
  #   VUSE <MM_TrestleGoo_181>;
  #   VUSE <L_2_191>;
  D.481_109 = *D.480_108;
  D.482_110 = (word_32) D.481_109;
  D.483_111 = D.482_110 << 22;
  D.484_112 = D.483_111 >> 31;
  if (D.484_112 == 0) goto <L64>; else goto <L22>;
  # SUCC: 54 [70.0%]  (true,exec) 25 [30.0%]  (false,exec)

  # BLOCK 54 freq:1480
  # PRED: 24 [70.0%]  (true,exec)
<L64>:;
  goto <bb 26> (<L23>);
  # SUCC: 26 [100.0%]  (fallthru)

  # BLOCK 25 freq:634
  # PRED: 24 [30.0%]  (false,exec)
<L22>:;
  #   MM_TrestleGoo_227 = V_MAY_DEF <MM_TrestleGoo_181>;
  #   L_2_228 = V_MAY_DEF <L_2_191>;
  RTHooks__CheckLoadTracedRef (D.406_94);
  # SUCC: 26 [100.0%]  (fallthru,exec)

  # BLOCK 26 freq:2610
  # PRED: 53 [100.0%]  (fallthru) 54 [100.0%]  (fallthru) 25 [100.0%] 
(fallthru,exec)
  # L_2_192 = PHI <L_2_191(53), L_2_191(54), L_2_228(25)>;
  # MM_TrestleGoo_182 = PHI <MM_TrestleGoo_181(53), MM_TrestleGoo_181(54),
MM_TrestleGoo_227(25)>;
<L23>:;
  D.491_95 = (<unnamed type> * *) D.406_94;
  #   VUSE <MM_TrestleGoo_182>;
  #   VUSE <L_2_192>;
  D.407_96 = *D.491_95;
  if (D.407_96 == 0B) goto <L65>; else goto <L24>;
  # SUCC: 55 [19.0%]  (true,exec) 27 [81.0%]  (false,exec)

  # BLOCK 55 freq:496
  # PRED: 26 [19.0%]  (true,exec)
<L65>:;
  goto <bb 29> (<L26>);
  # SUCC: 29 [100.0%]  (fallthru)

  # BLOCK 27 freq:2114
  # PRED: 26 [81.0%]  (false,exec)
<L24>:;
  D.469_99 = D.407_96 + ffffffffffffffff;
  D.470_100 = (int_32 *) D.469_99;
  #   VUSE <MM_TrestleGoo_182>;
  #   VUSE <L_2_192>;
  D.471_101 = *D.470_100;
  D.472_102 = (word_32) D.471_101;
  D.473_103 = D.472_102 << 22;
  D.474_104 = D.473_103 >> 31;
  if (D.474_104 == 0) goto <L66>; else goto <L25>;
  # SUCC: 56 [70.0%]  (true,exec) 28 [30.0%]  (false,exec)

  # BLOCK 56 freq:1480
  # PRED: 27 [70.0%]  (true,exec)
<L66>:;
  goto <bb 29> (<L26>);
  # SUCC: 29 [100.0%]  (fallthru)

  # BLOCK 28 freq:634
  # PRED: 27 [30.0%]  (false,exec)
<L25>:;
  #   MM_TrestleGoo_225 = V_MAY_DEF <MM_TrestleGoo_182>;
  #   L_2_226 = V_MAY_DEF <L_2_192>;
  RTHooks__CheckLoadTracedRef (D.407_96);
  # SUCC: 29 [100.0%]  (fallthru,exec)

  # BLOCK 29 freq:2610
  # PRED: 55 [100.0%]  (fallthru) 56 [100.0%]  (fallthru) 28 [100.0%] 
(fallthru,exec)
  # L_2_193 = PHI <L_2_192(55), L_2_192(56), L_2_226(28)>;
  # MM_TrestleGoo_183 = PHI <MM_TrestleGoo_182(55), MM_TrestleGoo_182(56),
MM_TrestleGoo_225(28)>;
<L26>:;
  #   MM_TrestleGoo_223 = V_MAY_DEF <MM_TrestleGoo_183>;
  #   L_2_224 = V_MAY_DEF <L_2_193>;
  *M3_BhAG13_e.1_50 = D.407_96;
  goto <bb 33> (<L49>);
  # SUCC: 33 [100.0%]  (fallthru,exec)

  # BLOCK 30 freq:6390
  # PRED: 20 [71.0%]  (true,exec)
<L27>:;
  #   VUSE <MM_TrestleGoo_76>;
  #   VUSE <L_2_74>;
  D.419_75 = *M3_BhAG13_e.1_50;
  if (D.419_75 == 0B) goto <L67>; else goto <L28>;
  # SUCC: 57 [19.0%]  (true,exec) 31 [81.0%]  (false,exec)

  # BLOCK 57 freq:1214
  # PRED: 30 [19.0%]  (true,exec)
<L67>:;
  goto <bb 33> (<L49>);
  # SUCC: 33 [100.0%]  (fallthru)

  # BLOCK 31 freq:5176
  # PRED: 30 [81.0%]  (false,exec)
<L28>:;
  D.493_77 = D.419_75 + ffffffffffffffff;
  D.494_78 = (int_32 *) D.493_77;
  #   VUSE <MM_TrestleGoo_76>;
  #   VUSE <L_2_74>;
  D.495_79 = *D.494_78;
  D.496_80 = (word_32) D.495_79;
  D.497_81 = D.496_80 << 22;
  D.498_82 = D.497_81 >> 31;
  if (D.498_82 == 0) goto <L68>; else goto <L29>;
  # SUCC: 58 [70.0%]  (true,exec) 32 [30.0%]  (false,exec)

  # BLOCK 58 freq:3623
  # PRED: 31 [70.0%]  (true,exec)
<L68>:;
  goto <bb 33> (<L49>);
  # SUCC: 33 [100.0%]  (fallthru)

  # BLOCK 32 freq:1553
  # PRED: 31 [30.0%]  (false,exec)
<L29>:;
  #   MM_TrestleGoo_221 = V_MAY_DEF <MM_TrestleGoo_76>;
  #   L_2_222 = V_MAY_DEF <L_2_74>;
  RTHooks__CheckLoadTracedRef (D.419_75);
  # SUCC: 33 [100.0%]  (fallthru,exec)

  # BLOCK 33 freq:9000
  # PRED: 29 [100.0%]  (fallthru,exec) 32 [100.0%]  (fallthru,exec) 58 [100.0%]
 (fallthru) 57 [100.0%]  (fallthru)
  # L_2_184 = PHI <L_2_224(29), L_2_222(32), L_2_74(58), L_2_74(57)>;
  # MM_TrestleGoo_194 = PHI <MM_TrestleGoo_223(29), MM_TrestleGoo_221(32),
MM_TrestleGoo_76(58), MM_TrestleGoo_76(57)>;
  # M3_BhAG13_e_253 = PHI <M3_BhAG13_e_1(29), D.419_75(32), D.419_75(58),
D.419_75(57)>;
<L49>:;
  # SUCC: 34 [100.0%]  (fallthru,dfs_back,exec)

  # BLOCK 34 freq:10000
  # PRED: 33 [100.0%]  (fallthru,dfs_back,exec) 13 [100.0%]  (fallthru,exec)
  # L_2_195 = PHI <L_2_184(33), L_2_216(13)>;
  # MM_TrestleGoo_185 = PHI <MM_TrestleGoo_194(33), MM_TrestleGoo_215(13)>;
  # M3_BhAG13_e_1 = PHI <M3_BhAG13_e_253(33), D.403_42(13)>;
<L50>:;
  M3_BhAG13_e.1_50 = (<unnamed type> * *) M3_BhAG13_e_1;
  #   VUSE <MM_TrestleGoo_185>;
  #   VUSE <L_2_195>;
  D.419_51 = *M3_BhAG13_e.1_50;
  if (D.419_51 == 0B) goto <L35>; else goto <L33>;
  # SUCC: 37 [10.0%]  (loop_exit,true,exec) 35 [90.0%]  (false,exec)

  # BLOCK 35 freq:9000
  # PRED: 34 [90.0%]  (false,exec)
<L33>:;
  D.493_138 = D.419_51 + ffffffffffffffff;
  D.494_139 = (int_32 *) D.493_138;
  #   VUSE <MM_TrestleGoo_185>;
  #   VUSE <L_2_195>;
  D.495_140 = *D.494_139;
  D.496_141 = (word_32) D.495_140;
  D.497_142 = D.496_141 << 22;
  D.498_143 = D.497_142 >> 31;
  if (D.498_143 == 0) goto <L69>; else goto <L34>;
  # SUCC: 59 [70.0%]  (true,exec) 36 [30.0%]  (false,exec)

  # BLOCK 36 freq:2700
  # PRED: 35 [30.0%]  (false,exec)
<L34>:;
  #   MM_TrestleGoo_235 = V_MAY_DEF <MM_TrestleGoo_185>;
  #   L_2_236 = V_MAY_DEF <L_2_195>;
  RTHooks__CheckLoadTracedRef (D.419_51);
  goto <bb 42> (<L52>);
  # SUCC: 42 [100.0%]  (fallthru,exec)

  # BLOCK 37 freq:1000
  # PRED: 34 [10.0%]  (loop_exit,true,exec)
  # L_2_196 = PHI <L_2_195(34)>;
  # MM_TrestleGoo_186 = PHI <MM_TrestleGoo_185(34)>;
<L35>:;
  # SUCC: 38 [100.0%]  (fallthru,exec)

  # BLOCK 38 freq:1000
  # PRED: 37 [100.0%]  (fallthru,exec)
<L38>:;
  L_2.3_52 = (<unnamed type> * *) &L_2;
  #   VUSE <L_2_196>;
  D.502_53 = *L_2.3_52;
  #   MM_TrestleGoo_217 = V_MAY_DEF <MM_TrestleGoo_186>;
  #   L_2_218 = V_MAY_DEF <L_2_196>;
  RTHooks__PopEFrame (D.502_53);
  # SUCC: 39 [100.0%]  (fallthru,exec)

  # BLOCK 39 freq:1000
  # PRED: 38 [100.0%]  (fallthru,exec)
  #   VUSE <L_2_218>;
  D.440_56 = *D.439_8;
  D.441_57 = (<unnamed type> * *) D.440_56;
  #   VUSE <MM_TrestleGoo_217>;
  #   VUSE <L_2_218>;
  D.442_58 = *D.441_57;
  D.503_59 = D.442_58 + 4;
  D.504_60 = (<unnamed type> * *) D.503_59;
  #   VUSE <MM_TrestleGoo_217>;
  #   VUSE <L_2_218>;
  D.505_61 = *D.504_60;
  D.506_62 = (<unnamed type> (*<T181>) (<unnamed type> *)) D.505_61;
  #   MM_TrestleGoo_219 = V_MAY_DEF <MM_TrestleGoo_217>;
  #   L_2_220 = V_MAY_DEF <L_2_218>;
  D.506_62 (D.440_56);
  # SUCC: 40 [100.0%]  (fallthru,exec)

  # BLOCK 40 freq:1000
  # PRED: 39 [100.0%]  (fallthru,exec)
<L39>:;
  return;
  # SUCC: EXIT [100.0%] 

  # BLOCK 51 freq:5103
  # PRED: 18 [70.0%]  (true,exec)
<L61>:;
  # SUCC: 41 [100.0%]  (fallthru)

  # BLOCK 41 freq:7290
  # PRED: 19 [100.0%]  (fallthru,exec) 51 [100.0%]  (fallthru)
  # L_2_252 = PHI <L_2_232(19), L_2_189(51)>;
  # MM_TrestleGoo_251 = PHI <MM_TrestleGoo_231(19), MM_TrestleGoo_179(51)>;
<L51>:;
  #   VUSE <MM_TrestleGoo_251>;
  #   VUSE <L_2_252>;
  D.451_117 = *D.450_123;
  D.452_118 = (word_32) D.451_117;
  D.453_119 = D.452_118 << 1;
  D.454_120 = D.453_119 >> 12;
  D.403_121 = (<unnamed type> *) D.454_120;
  goto <bb 20> (<L17>);
  # SUCC: 20 [100.0%]  (fallthru,exec)

  # BLOCK 59 freq:6300
  # PRED: 35 [70.0%]  (true,exec)
<L69>:;
  # SUCC: 42 [100.0%]  (fallthru)

  # BLOCK 42 freq:9000
  # PRED: 36 [100.0%]  (fallthru,exec) 59 [100.0%]  (fallthru)
  # L_2_65 = PHI <L_2_236(36), L_2_195(59)>;
  # MM_TrestleGoo_55 = PHI <MM_TrestleGoo_235(36), MM_TrestleGoo_185(59)>;
<L52>:;
  goto <bb 14> (<L9>);
  # SUCC: 14 [100.0%]  (fallthru,exec)

}


Starting program: /Users/hosking/cm3/m3-sys/m3cc/build-4.1.1/gcc/m3cgc1
-fdump-tree-crited-vops-details-blocks-stats -O3 TrestleGoo.mc -o TrestleGoo.ms
 TrestleGoo__Alias TrestleGoo__TrueChild TrestleGoo__PutProp
TrestleGoo__GetProp TrestleGoo__RemProp TrestleGoo__Next TrestleGoo_M3
Analyzing compilation unitPerforming intraprocedural optimizations
Assembling functions:
 TrestleGoo_M3 _m3_fault TrestleGoo__TrueChild TrestleGoo__Next
TrestleGoo__GetProp TrestleGoo__Alias TrestleGoo__RemProp TrestleGoo__PutProp
Breakpoint 6, resize_phi_node (phi=0x425bd808, len=9) at
../../gcc/gcc/tree-phinodes.c:271
(gdb) where
#0  resize_phi_node (phi=0x425bd808, len=9) at
../../gcc/gcc/tree-phinodes.c:271
#1  0x001415e8 in reserve_phi_args_for_new_edge (bb=0x425bd7e0) at
../../gcc/gcc/tree-phinodes.c:325
#2  0x001fd8b0 in unchecked_make_edge (src=0x425cdcc0, dst=0x425bd7e0,
flags=1113315300) at ../../gcc/gcc/cfg.c:272
#3  0x002414fc in tree_split_edge (edge_in=0x424a12d0) at
../../gcc/gcc/tree-cfg.c:3117
#4  0x00261bcc in split_edge (e=0x425c6670) at ../../gcc/gcc/cfghooks.c:407
#5  0x002445b8 in tree_find_edge_insert_loc (e=0x424a12d0, bsi=0xbfffec48,
new_bb=0x0) at ../../gcc/gcc/tree-cfg.c:2975
#6  0x00244764 in bsi_commit_one_edge_insert (e=0x425bd808, new_bb=0x9) at
../../gcc/gcc/tree-cfg.c:3016
#7  0x002466c8 in bsi_commit_edge_inserts () at ../../gcc/gcc/tree-cfg.c:2997
#8  0x00344098 in execute_pre (do_fre=0 '\0') at
../../gcc/gcc/tree-ssa-pre.c:2731
#9  0x002260b8 in execute_one_pass (pass=0x4ed660) at
../../gcc/gcc/passes.c:827
#10 0x00226188 in execute_pass_list (pass=0x4ed660) at
../../gcc/gcc/passes.c:859
#11 0x002261a0 in execute_pass_list (pass=0x4ec21c) at
../../gcc/gcc/passes.c:860
#12 0x00153fa4 in tree_rest_of_compilation (fndecl=0x42443580) at
../../gcc/gcc/tree-optimize.c:419
#13 0x0000497c in m3_expand_function (fndecl=0x42443580) at
../../gcc/gcc/m3cg/parse.c:848
#14 0x00052784 in cgraph_expand_function (node=0x424501c0) at
../../gcc/gcc/cgraphunit.c:1055
#15 0x00052fc8 in cgraph_optimize () at ../../gcc/gcc/cgraphunit.c:1121
#16 0x000130c0 in m3_parse_file (xx=0) at ../../gcc/gcc/m3cg/parse.c:4397
#17 0x00036674 in toplev_main (argc=1079409344, argv=0x40567bcc) at
../../gcc/gcc/toplev.c:991
#18 0x00001f24 in _start (argc=6, argv=0xbffff1c4, envp=0xbffff1e0) at
/SourceCache/Csu/Csu-58.1.1/crt.c:272
#19 0x00001dcc in start ()
(gdb) c
Continuing.

Breakpoint 5, remove_phi_node (phi=0x425bec00, prev=0x0) at
../../gcc/gcc/tree-phinodes.c:447
(gdb) where
#0  remove_phi_node (phi=0x425bec00, prev=0x0) at
../../gcc/gcc/tree-phinodes.c:447
#1  0x00341aac in remove_dead_inserted_code () at
../../gcc/gcc/tree-ssa-pre.c:2547
#2  0x003440a0 in execute_pre (do_fre=0 '\0') at
../../gcc/gcc/tree-ssa-pre.c:2733
#3  0x002260b8 in execute_one_pass (pass=0x4ed660) at
../../gcc/gcc/passes.c:827
#4  0x00226188 in execute_pass_list (pass=0x4ed660) at
../../gcc/gcc/passes.c:859
#5  0x002261a0 in execute_pass_list (pass=0x4ec21c) at
../../gcc/gcc/passes.c:860
#6  0x00153fa4 in tree_rest_of_compilation (fndecl=0x42443580) at
../../gcc/gcc/tree-optimize.c:419
#7  0x0000497c in m3_expand_function (fndecl=0x42443580) at
../../gcc/gcc/m3cg/parse.c:848
#8  0x00052784 in cgraph_expand_function (node=0x424501c0) at
../../gcc/gcc/cgraphunit.c:1055
#9  0x00052fc8 in cgraph_optimize () at ../../gcc/gcc/cgraphunit.c:1121
#10 0x000130c0 in m3_parse_file (xx=0) at ../../gcc/gcc/m3cg/parse.c:4397
#11 0x00036674 in toplev_main (argc=1079409344, argv=0x40567bcc) at
../../gcc/gcc/toplev.c:991
#12 0x00001f24 in _start (argc=6, argv=0xbffff1c4, envp=0xbffff1e0) at
/SourceCache/Csu/Csu-58.1.1/crt.c:272
#13 0x00001dcc in start ()


-- 


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


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

* [Bug tree-optimization/28798] remove_phi_node attempts removal of a phi node resized by resize_phi_node
  2006-08-22  6:07 [Bug tree-optimization/28798] New: remove_phi_node attempts removal of a phi node resized by resize_phi_node hosking at cs dot purdue dot edu
                   ` (12 preceding siblings ...)
  2006-08-24 15:27 ` hosking at cs dot purdue dot edu
@ 2006-08-25 15:19 ` dberlin at dberlin dot org
  2006-08-29 15:53 ` hosking at cs dot purdue dot edu
  2006-08-31  5:38 ` hosking at cs dot purdue dot edu
  15 siblings, 0 replies; 23+ messages in thread
From: dberlin at dberlin dot org @ 2006-08-25 15:19 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #14 from dberlin at gcc dot gnu dot org  2006-08-25 15:19 -------
Subject: Re:  remove_phi_node attempts removal
 of a phi node resized by resize_phi_node

hosking at cs dot purdue dot edu wrote:
> ------- Comment #13 from hosking at cs dot purdue dot edu  2006-08-24 15:27 -------
> Is this enough?
> 
> Here is the dump output, followed by stack traces at the resize and remove
> points (the remove goes on to fail). 

So, this edge can't exist.
Note:

> Its src is:
> 
> (gdb) p *(e->src)
> $12 = {
>   index = 0, 
> }
> 
> Its dest is:
> 
> (gdb) p *(e->dest)
> $13 = {
>   index = 0, 
> }
> 

It claims to be an edge from block 0 to block 0, but your according to
your dump, block 0 is not a successor of block 0 (IE it is not a self loop).

--Dan


-- 


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


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

* Re: [Bug tree-optimization/28798] remove_phi_node attempts removal  of a phi node resized by resize_phi_node
  2006-08-24 15:27 ` hosking at cs dot purdue dot edu
@ 2006-08-25 15:19   ` Daniel Berlin
  0 siblings, 0 replies; 23+ messages in thread
From: Daniel Berlin @ 2006-08-25 15:19 UTC (permalink / raw)
  To: gcc-bugzilla; +Cc: gcc-bugs

hosking at cs dot purdue dot edu wrote:
> ------- Comment #13 from hosking at cs dot purdue dot edu  2006-08-24 15:27 -------
> Is this enough?
> 
> Here is the dump output, followed by stack traces at the resize and remove
> points (the remove goes on to fail). 

So, this edge can't exist.
Note:

> Its src is:
> 
> (gdb) p *(e->src)
> $12 = {
>   index = 0, 
> }
> 
> Its dest is:
> 
> (gdb) p *(e->dest)
> $13 = {
>   index = 0, 
> }
> 

It claims to be an edge from block 0 to block 0, but your according to
your dump, block 0 is not a successor of block 0 (IE it is not a self loop).

--Dan


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

* [Bug tree-optimization/28798] remove_phi_node attempts removal of a phi node resized by resize_phi_node
  2006-08-22  6:07 [Bug tree-optimization/28798] New: remove_phi_node attempts removal of a phi node resized by resize_phi_node hosking at cs dot purdue dot edu
                   ` (13 preceding siblings ...)
  2006-08-25 15:19 ` dberlin at dberlin dot org
@ 2006-08-29 15:53 ` hosking at cs dot purdue dot edu
  2006-08-31  5:38 ` hosking at cs dot purdue dot edu
  15 siblings, 0 replies; 23+ messages in thread
From: hosking at cs dot purdue dot edu @ 2006-08-29 15:53 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #15 from hosking at cs dot purdue dot edu  2006-08-29 15:52 -------
Sorry, my information was in error last time.  It seems I got the src/dest
information wrong for the edge being split.  The edge is between blocks 32 and
33 in the dump below:

;; Function TrestleGoo__PutProp (TrestleGoo__PutProp)

TrestleGoo__PutProp (M3_BFdKo9_vv, M3_Af40ku_ref)
{
  <unnamed type> * M3_BFdKo9_v;
  word_32 M3_Cwb5VA_tc;
  <unnamed type> * M3_BhAG13_p;
  <unnamed type> * M3_BhAG13_e;
  struct 
  {
  } L_2;
  <unnamed type> * D.403;
  <unnamed type> * D.406;
  <unnamed type> * D.407;
  <unnamed type> * D.419;
  <unnamed type> (*<T181>) (<unnamed type> *) D.506;
  <unnamed type> * D.505;
  <unnamed type> * * D.504;
  <unnamed type> * D.503;
  <unnamed type> * D.502;
  <unnamed type> * * L_2.3;
  <unnamed type> D.500;
  <unnamed type> D.499;
  word_32 D.498;
  word_32 D.497;
  word_32 D.496;
  int_32 D.495;
  int_32 * D.494;
  <unnamed type> * D.493;
  <unnamed type> * * D.492;
  <unnamed type> * * D.491;
  <unnamed type> D.490;
  word_32 D.489;
  word_32 D.488;
  int_32 M3_Cwb5VA_tc.2;
  <unnamed type> D.486;
  <unnamed type> D.485;
  word_32 D.484;
  word_32 D.483;
  word_32 D.482;
  int_32 D.481;
  int_32 * D.480;
  <unnamed type> * D.479;
  <unnamed type> * * D.478;
  <unnamed type> * D.477;
  <unnamed type> D.476;
  <unnamed type> D.475;
  word_32 D.474;
  word_32 D.473;
  word_32 D.472;
  int_32 D.471;
  int_32 * D.470;
  <unnamed type> * D.469;
  <unnamed type> * * M3_BhAG13_e.1;
  <unnamed type> * * D.467;
  <unnamed type> * * D.466;
  <unnamed type> * D.465;
  <unnamed type> * D.464;
  <unnamed type> * D.463;
  <unnamed type> * * D.462;
  <unnamed type> * D.461;
  int_32 D.460;
  <unnamed type> * D.459;
  int_32 D.458;
  int_32 * D.457;
  <unnamed type> * D.456;
  int_32 D.455;
  word_32 D.454;
  word_32 D.453;
  word_32 D.452;
  int_32 D.451;
  int_32 * D.450;
  <unnamed type> * D.449;
  <unnamed type> * D.448;
  int_32 * D.447;
  <unnamed type> * D.446;
  <unnamed type> (*<T181>) (<unnamed type> *) D.445;
  <unnamed type> * D.444;
  <unnamed type> * * D.443;
  <unnamed type> * D.442;
  <unnamed type> * * D.441;
  <unnamed type> * D.440;
  <unnamed type> * * D.439;
  <unnamed type> * D.438;
  <unnamed type> D.437;
  <unnamed type> D.436;
  word_32 D.435;
  word_32 D.434;
  word_32 D.433;
  int_32 D.432;
  int_32 * D.431;
  <unnamed type> * D.430;
  <unnamed type> * D.429;
  <unnamed type> * * D.428;
  <unnamed type> * D.427;

  # BLOCK 0 freq:1000
  # PRED: ENTRY [100.0%]  (fallthru,exec)
  D.427_4 = &MM_TrestleGoo + 52;
  D.428_5 = (<unnamed type> * *) D.427_4;
  #   VUSE <MM_TrestleGoo_197>;
  D.429_6 = *D.428_5;
  if (D.429_6 == 0B) goto <L43>; else goto <L0>;
  # SUCC: 43 [19.0%]  (true,exec) 1 [81.0%]  (false,exec)

  # BLOCK 43 freq:190
  # PRED: 0 [19.0%]  (true,exec)
<L43>:;
  goto <bb 3> (<L2>);
  # SUCC: 3 [100.0%]  (fallthru)

  # BLOCK 1 freq:810
  # PRED: 0 [81.0%]  (false,exec)
<L0>:;
  D.430_166 = D.429_6 + ffffffffffffffff;
  D.431_167 = (int_32 *) D.430_166;
  #   VUSE <MM_TrestleGoo_197>;
  #   VUSE <L_2_198>;
  D.432_168 = *D.431_167;
  D.433_169 = (word_32) D.432_168;
  D.434_170 = D.433_169 << 22;
  D.435_171 = D.434_170 >> 31;
  if (D.435_171 == 0) goto <L44>; else goto <L1>;
  # SUCC: 44 [70.0%]  (true,exec) 2 [30.0%]  (false,exec)

  # BLOCK 44 freq:567
  # PRED: 1 [70.0%]  (true,exec)
<L44>:;
  goto <bb 3> (<L2>);
  # SUCC: 3 [100.0%]  (fallthru)

  # BLOCK 2 freq:243
  # PRED: 1 [30.0%]  (false,exec)
<L1>:;
  #   MM_TrestleGoo_239 = V_MAY_DEF <MM_TrestleGoo_197>;
  #   L_2_240 = V_MAY_DEF <L_2_198>;
  RTHooks__CheckLoadTracedRef (D.429_6);
  # SUCC: 3 [100.0%]  (fallthru,exec)

  # BLOCK 3 freq:1000
  # PRED: 43 [100.0%]  (fallthru) 44 [100.0%]  (fallthru) 2 [100.0%] 
(fallthru,exec)
  # L_2_187 = PHI <L_2_198(43), L_2_198(44), L_2_240(2)>;
  # MM_TrestleGoo_177 = PHI <MM_TrestleGoo_197(43), MM_TrestleGoo_197(44),
MM_TrestleGoo_239(2)>;
<L2>:;
  D.438_7 = &L_2 + 8;
  D.439_8 = (<unnamed type> * *) D.438_7;
  #   VUSE <MM_TrestleGoo_177>;
  D.440_11 = *D.428_5;
  #   L_2_199 = V_MAY_DEF <L_2_187>;
  *D.439_8 = D.440_11;
  D.441_15 = (<unnamed type> * *) D.440_11;
  #   VUSE <MM_TrestleGoo_177>;
  #   VUSE <L_2_199>;
  D.442_16 = *D.441_15;
  D.443_17 = (<unnamed type> * *) D.442_16;
  #   VUSE <MM_TrestleGoo_177>;
  #   VUSE <L_2_199>;
  D.444_18 = *D.443_17;
  D.445_19 = (<unnamed type> (*<T181>) (<unnamed type> *)) D.444_18;
  #   MM_TrestleGoo_200 = V_MAY_DEF <MM_TrestleGoo_177>;
  #   L_2_201 = V_MAY_DEF <L_2_199>;
  D.445_19 (D.440_11);
  # SUCC: 4 [100.0%]  (fallthru,exec)

  # BLOCK 4 freq:1000
  # PRED: 3 [100.0%]  (fallthru,exec)
<L3>:;
  D.446_23 = &L_2 + 4;
  D.447_24 = (int_32 *) D.446_23;
  #   L_2_202 = V_MAY_DEF <L_2_201>;
  *D.447_24 = 6;
  #   MM_TrestleGoo_203 = V_MAY_DEF <MM_TrestleGoo_200>;
  #   L_2_204 = V_MAY_DEF <L_2_202>;
  RTHooks__PushEFrame (&L_2);
  # SUCC: 5 [100.0%]  (fallthru,exec)

  # BLOCK 5 freq:1000
  # PRED: 4 [100.0%]  (fallthru,exec)
  #   MM_TrestleGoo_205 = V_MAY_DEF <MM_TrestleGoo_203>;
  #   L_2_206 = V_MAY_DEF <L_2_204>;
  D.403_26 = TrestleGoo__TrueChild (M3_BFdKo9_vv_25);
  # SUCC: 6 [100.0%]  (fallthru,exec)

  # BLOCK 6 freq:1000
  # PRED: 5 [100.0%]  (fallthru,exec)
  if (M3_Af40ku_ref_29 == 0B) goto <L45>; else goto <L4>;
  # SUCC: 45 [19.0%]  (true,exec) 7 [81.0%]  (false,exec)

  # BLOCK 45 freq:190
  # PRED: 6 [19.0%]  (true,exec)
<L45>:;
  goto <bb 8> (<L5>);
  # SUCC: 8 [100.0%]  (fallthru)

  # BLOCK 7 freq:810
  # PRED: 6 [81.0%]  (false,exec)
<L4>:;
  D.449_156 = M3_Af40ku_ref_29 + ffffffffffffffff;
  D.450_157 = (int_32 *) D.449_156;
  #   VUSE <MM_TrestleGoo_205>;
  #   VUSE <L_2_206>;
  D.451_158 = *D.450_157;
  D.452_159 = (word_32) D.451_158;
  D.453_160 = D.452_159 << 1;
  D.454_161 = D.453_160 >> 12;
  D.403_162 = (<unnamed type> *) D.454_161;
  # SUCC: 8 [100.0%]  (fallthru,exec)

  # BLOCK 8 freq:1000
  # PRED: 45 [100.0%]  (fallthru) 7 [100.0%]  (fallthru,exec)
  # D.403_2 = PHI <M3_Af40ku_ref_29(45), D.403_162(7)>;
<L5>:;
  D.455_31 = (int_32) D.403_2;
  M3_Cwb5VA_tc_32 = (word_32) D.455_31;
  D.456_33 = &MM_TrestleGoo + 208;
  D.457_34 = (int_32 *) D.456_33;
  #   VUSE <MM_TrestleGoo_205>;
  D.458_35 = *D.457_34;
  #   MM_TrestleGoo_207 = V_MAY_DEF <MM_TrestleGoo_205>;
  #   L_2_208 = V_MAY_DEF <L_2_206>;
  D.403_36 = VBT__GetProp (D.403_26, D.458_35);
  # SUCC: 9 [100.0%]  (fallthru,exec)

  # BLOCK 9 freq:1000
  # PRED: 8 [100.0%]  (fallthru,exec)
  if (D.403_36 == 0B) goto <L46>; else goto <L6>;
  # SUCC: 46 [19.0%]  (true,exec) 10 [81.0%]  (false,exec)

  # BLOCK 46 freq:190
  # PRED: 9 [19.0%]  (true,exec)
<L46>:;
  goto <bb 12> (<L8>);
  # SUCC: 12 [100.0%]  (fallthru)

  # BLOCK 10 freq:810
  # PRED: 9 [81.0%]  (false,exec)
<L6>:;
  D.449_146 = D.403_36 + ffffffffffffffff;
  D.450_147 = (int_32 *) D.449_146;
  #   VUSE <MM_TrestleGoo_207>;
  #   VUSE <L_2_208>;
  D.451_148 = *D.450_147;
  D.452_149 = (word_32) D.451_148;
  D.453_150 = D.452_149 << 1;
  D.454_151 = D.453_150 >> 12;
  D.460_152 = (int_32) D.454_151;
  #   VUSE <MM_TrestleGoo_207>;
  D.458_155 = *D.457_34;
  if (D.460_152 == D.458_155) goto <L47>; else goto <L7>;
  # SUCC: 47 [48.8%]  (true,exec) 11 [51.2%]  (false,exec)

  # BLOCK 47 freq:395
  # PRED: 10 [48.8%]  (true,exec)
<L47>:;
  goto <bb 12> (<L8>);
  # SUCC: 12 [100.0%]  (fallthru)

  # BLOCK 11 freq:415
  # PRED: 10 [51.2%]  (false,exec)
<L7>:;
  #   MM_TrestleGoo_237 = V_MAY_DEF <MM_TrestleGoo_207>;
  #   L_2_238 = V_MAY_DEF <L_2_208>;
  _m3_fault (1349);
  # SUCC: 12 [100.0%]  (fallthru,exec)

  # BLOCK 12 freq:1000
  # PRED: 46 [100.0%]  (fallthru) 47 [100.0%]  (fallthru) 11 [100.0%] 
(fallthru,exec)
  # L_2_188 = PHI <L_2_208(46), L_2_208(47), L_2_238(11)>;
  # MM_TrestleGoo_178 = PHI <MM_TrestleGoo_207(46), MM_TrestleGoo_207(47),
MM_TrestleGoo_237(11)>;
<L8>:;
  D.461_39 = &MM_TrestleGoo + 204;
  D.462_40 = (<unnamed type> * *) D.461_39;
  #   VUSE <MM_TrestleGoo_178>;
  D.463_41 = *D.462_40;
  #   MM_TrestleGoo_209 = V_MAY_DEF <MM_TrestleGoo_178>;
  #   L_2_210 = V_MAY_DEF <L_2_188>;
  D.403_42 = RTHooks__Allocate (D.463_41);
  # SUCC: 13 [100.0%]  (fallthru,exec)

  # BLOCK 13 freq:1000
  # PRED: 12 [100.0%]  (fallthru,exec)
  D.465_45 = D.403_42 + 4;
  D.466_46 = (<unnamed type> * *) D.465_45;
  #   MM_TrestleGoo_211 = V_MAY_DEF <MM_TrestleGoo_209>;
  #   L_2_212 = V_MAY_DEF <L_2_210>;
  *D.466_46 = M3_Af40ku_ref_29;
  D.467_48 = (<unnamed type> * *) D.403_42;
  #   MM_TrestleGoo_213 = V_MAY_DEF <MM_TrestleGoo_211>;
  #   L_2_214 = V_MAY_DEF <L_2_212>;
  *D.467_48 = D.403_36;
  #   MM_TrestleGoo_215 = V_MAY_DEF <MM_TrestleGoo_213>;
  #   L_2_216 = V_MAY_DEF <L_2_214>;
  VBT__PutProp (D.403_26, D.403_42);
  goto <bb 34> (<L40>);
  # SUCC: 34 [100.0%]  (fallthru,exec)

  # BLOCK 14 freq:9000
  # PRED: 42 [100.0%]  (fallthru,exec)
<L9>:;
  #   VUSE <MM_TrestleGoo_98>;
  #   VUSE <L_2_74>;
  D.407_67 = *M3_BhAG13_e.1_50;
  if (D.407_67 == 0B) goto <L48>; else goto <L10>;
  # SUCC: 48 [19.0%]  (true,exec) 15 [81.0%]  (false,exec)

  # BLOCK 48 freq:1710
  # PRED: 14 [19.0%]  (true,exec)
<L48>:;
  goto <bb 17> (<L12>);
  # SUCC: 17 [100.0%]  (fallthru)

  # BLOCK 15 freq:7290
  # PRED: 14 [81.0%]  (false,exec)
<L10>:;
  D.469_130 = D.407_67 + ffffffffffffffff;
  D.470_131 = (int_32 *) D.469_130;
  #   VUSE <MM_TrestleGoo_98>;
  #   VUSE <L_2_74>;
  D.471_132 = *D.470_131;
  D.472_133 = (word_32) D.471_132;
  D.473_134 = D.472_133 << 22;
  D.474_135 = D.473_134 >> 31;
  if (D.474_135 == 0) goto <L49>; else goto <L11>;
  # SUCC: 49 [70.0%]  (true,exec) 16 [30.0%]  (false,exec)

  # BLOCK 49 freq:5103
  # PRED: 15 [70.0%]  (true,exec)
<L49>:;
  goto <bb 17> (<L12>);
  # SUCC: 17 [100.0%]  (fallthru)

  # BLOCK 16 freq:2187
  # PRED: 15 [30.0%]  (false,exec)
<L11>:;
  #   MM_TrestleGoo_233 = V_MAY_DEF <MM_TrestleGoo_98>;
  #   L_2_234 = V_MAY_DEF <L_2_74>;
  RTHooks__CheckLoadTracedRef (D.407_67);
  # SUCC: 17 [100.0%]  (fallthru,exec)

  # BLOCK 17 freq:9000
  # PRED: 48 [100.0%]  (fallthru) 49 [100.0%]  (fallthru) 16 [100.0%] 
(fallthru,exec)
  # L_2_189 = PHI <L_2_74(48), L_2_74(49), L_2_234(16)>;
  # MM_TrestleGoo_179 = PHI <MM_TrestleGoo_98(48), MM_TrestleGoo_98(49),
MM_TrestleGoo_233(16)>;
<L12>:;
  D.477_68 = D.407_67 + 4;
  D.478_69 = (<unnamed type> * *) D.477_68;
  #   VUSE <MM_TrestleGoo_179>;
  #   VUSE <L_2_189>;
  D.406_70 = *D.478_69;
  if (D.406_70 == 0B) goto <L50>; else goto <L13>;
  # SUCC: 50 [19.0%]  (true,exec) 18 [81.0%]  (false,exec)

  # BLOCK 18 freq:7290
  # PRED: 17 [81.0%]  (false,exec)
<L13>:;
  D.479_122 = D.406_70 + ffffffffffffffff;
  D.480_123 = (int_32 *) D.479_122;
  #   VUSE <MM_TrestleGoo_179>;
  #   VUSE <L_2_189>;
  D.481_124 = *D.480_123;
  D.482_125 = (word_32) D.481_124;
  D.483_126 = D.482_125 << 22;
  D.484_127 = D.483_126 >> 31;
  if (D.484_127 == 0) goto <L51>; else goto <L14>;
  # SUCC: 51 [70.0%]  (true,exec) 19 [30.0%]  (false,exec)

  # BLOCK 19 freq:2187
  # PRED: 18 [30.0%]  (false,exec)
<L14>:;
  #   MM_TrestleGoo_231 = V_MAY_DEF <MM_TrestleGoo_179>;
  #   L_2_232 = V_MAY_DEF <L_2_189>;
  RTHooks__CheckLoadTracedRef (D.406_70);
  goto <bb 41> (<L41>);
  # SUCC: 41 [100.0%]  (fallthru,exec)

  # BLOCK 50 freq:1710
  # PRED: 17 [19.0%]  (true,exec)
<L50>:;
  # SUCC: 20 [100.0%]  (fallthru)

  # BLOCK 20 freq:9000
  # PRED: 50 [100.0%]  (fallthru) 41 [100.0%]  (fallthru,exec)
  # L_2_85 = PHI <L_2_189(50), L_2_55(41)>;
  # MM_TrestleGoo_93 = PHI <MM_TrestleGoo_179(50), MM_TrestleGoo_76(41)>;
  # D.403_3 = PHI <0B(50), D.403_121(41)>;
<L17>:;
  D.455_72 = (int_32) D.403_3;
  M3_Cwb5VA_tc.2_73 = (int_32) M3_Cwb5VA_tc_32;
  if (D.455_72 != M3_Cwb5VA_tc.2_73) goto <L27>; else goto <L18>;
  # SUCC: 30 [71.0%]  (true,exec) 21 [29.0%]  (false,exec)

  # BLOCK 21 freq:2610
  # PRED: 20 [29.0%]  (false,exec)
<L18>:;
  D.449_86 = M3_BhAG13_e_1 + ffffffffffffffff;
  D.450_87 = (int_32 *) D.449_86;
  #   VUSE <MM_TrestleGoo_93>;
  #   VUSE <L_2_85>;
  D.451_88 = *D.450_87;
  D.452_89 = (word_32) D.451_88;
  D.488_90 = D.452_89 << 21;
  D.489_91 = D.488_90 >> 31;
  if (D.489_91 != 0) goto <L52>; else goto <L19>;
  # SUCC: 52 [70.0%]  (true,exec) 22 [30.0%]  (false,exec)

  # BLOCK 52 freq:1827
  # PRED: 21 [70.0%]  (true,exec)
<L52>:;
  goto <bb 23> (<L20>);
  # SUCC: 23 [100.0%]  (fallthru)

  # BLOCK 22 freq:783
  # PRED: 21 [30.0%]  (false,exec)
<L19>:;
  #   MM_TrestleGoo_229 = V_MAY_DEF <MM_TrestleGoo_93>;
  #   L_2_230 = V_MAY_DEF <L_2_85>;
  RTHooks__CheckStoreTraced (M3_BhAG13_e_1);
  # SUCC: 23 [100.0%]  (fallthru,exec)

  # BLOCK 23 freq:2610
  # PRED: 52 [100.0%]  (fallthru) 22 [100.0%]  (fallthru,exec)
  # L_2_191 = PHI <L_2_85(52), L_2_230(22)>;
  # MM_TrestleGoo_181 = PHI <MM_TrestleGoo_93(52), MM_TrestleGoo_229(22)>;
<L20>:;
  #   VUSE <MM_TrestleGoo_181>;
  #   VUSE <L_2_191>;
  D.406_94 = *M3_BhAG13_e.1_50;
  if (D.406_94 == 0B) goto <L53>; else goto <L21>;
  # SUCC: 53 [19.0%]  (true,exec) 24 [81.0%]  (false,exec)

  # BLOCK 53 freq:496
  # PRED: 23 [19.0%]  (true,exec)
<L53>:;
  goto <bb 26> (<L23>);
  # SUCC: 26 [100.0%]  (fallthru)

  # BLOCK 24 freq:2114
  # PRED: 23 [81.0%]  (false,exec)
<L21>:;
  D.479_107 = D.406_94 + ffffffffffffffff;
  D.480_108 = (int_32 *) D.479_107;
  #   VUSE <MM_TrestleGoo_181>;
  #   VUSE <L_2_191>;
  D.481_109 = *D.480_108;
  D.482_110 = (word_32) D.481_109;
  D.483_111 = D.482_110 << 22;
  D.484_112 = D.483_111 >> 31;
  if (D.484_112 == 0) goto <L54>; else goto <L22>;
  # SUCC: 54 [70.0%]  (true,exec) 25 [30.0%]  (false,exec)

  # BLOCK 54 freq:1480
  # PRED: 24 [70.0%]  (true,exec)
<L54>:;
  goto <bb 26> (<L23>);
  # SUCC: 26 [100.0%]  (fallthru)

  # BLOCK 25 freq:634
  # PRED: 24 [30.0%]  (false,exec)
<L22>:;
  #   MM_TrestleGoo_227 = V_MAY_DEF <MM_TrestleGoo_181>;
  #   L_2_228 = V_MAY_DEF <L_2_191>;
  RTHooks__CheckLoadTracedRef (D.406_94);
  # SUCC: 26 [100.0%]  (fallthru,exec)

  # BLOCK 26 freq:2610
  # PRED: 53 [100.0%]  (fallthru) 54 [100.0%]  (fallthru) 25 [100.0%] 
(fallthru,exec)
  # L_2_192 = PHI <L_2_191(53), L_2_191(54), L_2_228(25)>;
  # MM_TrestleGoo_182 = PHI <MM_TrestleGoo_181(53), MM_TrestleGoo_181(54),
MM_TrestleGoo_227(25)>;
<L23>:;
  D.491_95 = (<unnamed type> * *) D.406_94;
  #   VUSE <MM_TrestleGoo_182>;
  #   VUSE <L_2_192>;
  D.407_96 = *D.491_95;
  if (D.407_96 == 0B) goto <L55>; else goto <L24>;
  # SUCC: 55 [19.0%]  (true,exec) 27 [81.0%]  (false,exec)

  # BLOCK 55 freq:496
  # PRED: 26 [19.0%]  (true,exec)
<L55>:;
  goto <bb 29> (<L26>);
  # SUCC: 29 [100.0%]  (fallthru)

  # BLOCK 27 freq:2114
  # PRED: 26 [81.0%]  (false,exec)
<L24>:;
  D.469_99 = D.407_96 + ffffffffffffffff;
  D.470_100 = (int_32 *) D.469_99;
  #   VUSE <MM_TrestleGoo_182>;
  #   VUSE <L_2_192>;
  D.471_101 = *D.470_100;
  D.472_102 = (word_32) D.471_101;
  D.473_103 = D.472_102 << 22;
  D.474_104 = D.473_103 >> 31;
  if (D.474_104 == 0) goto <L56>; else goto <L25>;
  # SUCC: 56 [70.0%]  (true,exec) 28 [30.0%]  (false,exec)

  # BLOCK 56 freq:1480
  # PRED: 27 [70.0%]  (true,exec)
<L56>:;
  goto <bb 29> (<L26>);
  # SUCC: 29 [100.0%]  (fallthru)

  # BLOCK 28 freq:634
  # PRED: 27 [30.0%]  (false,exec)
<L25>:;
  #   MM_TrestleGoo_225 = V_MAY_DEF <MM_TrestleGoo_182>;
  #   L_2_226 = V_MAY_DEF <L_2_192>;
  RTHooks__CheckLoadTracedRef (D.407_96);
  # SUCC: 29 [100.0%]  (fallthru,exec)

  # BLOCK 29 freq:2610
  # PRED: 55 [100.0%]  (fallthru) 56 [100.0%]  (fallthru) 28 [100.0%] 
(fallthru,exec)
  # L_2_193 = PHI <L_2_192(55), L_2_192(56), L_2_226(28)>;
  # MM_TrestleGoo_183 = PHI <MM_TrestleGoo_182(55), MM_TrestleGoo_182(56),
MM_TrestleGoo_225(28)>;
<L26>:;
  #   MM_TrestleGoo_223 = V_MAY_DEF <MM_TrestleGoo_183>;
  #   L_2_224 = V_MAY_DEF <L_2_193>;
  *M3_BhAG13_e.1_50 = D.407_96;
  goto <bb 33> (<L31>);
  # SUCC: 33 [100.0%]  (fallthru,exec)

  # BLOCK 30 freq:6390
  # PRED: 20 [71.0%]  (true,exec)
<L27>:;
  #   VUSE <MM_TrestleGoo_93>;
  #   VUSE <L_2_85>;
  D.419_75 = *M3_BhAG13_e.1_50;
  if (D.419_75 == 0B) goto <L57>; else goto <L28>;
  # SUCC: 57 [19.0%]  (true,exec) 31 [81.0%]  (false,exec)

  # BLOCK 57 freq:1214
  # PRED: 30 [19.0%]  (true,exec)
<L57>:;
  goto <bb 33> (<L31>);
  # SUCC: 33 [100.0%]  (fallthru)

  # BLOCK 31 freq:5176
  # PRED: 30 [81.0%]  (false,exec)
<L28>:;
  D.493_77 = D.419_75 + ffffffffffffffff;
  D.494_78 = (int_32 *) D.493_77;
  #   VUSE <MM_TrestleGoo_93>;
  #   VUSE <L_2_85>;
  D.495_79 = *D.494_78;
  D.496_80 = (word_32) D.495_79;
  D.497_81 = D.496_80 << 22;
  D.498_82 = D.497_81 >> 31;
  if (D.498_82 == 0) goto <L58>; else goto <L29>;
  # SUCC: 58 [70.0%]  (true,exec) 32 [30.0%]  (false,exec)

  # BLOCK 58 freq:3623
  # PRED: 31 [70.0%]  (true,exec)
<L58>:;
  goto <bb 33> (<L31>);
  # SUCC: 33 [100.0%]  (fallthru)

  # BLOCK 32 freq:1553
  # PRED: 31 [30.0%]  (false,exec)
<L29>:;
  #   MM_TrestleGoo_221 = V_MAY_DEF <MM_TrestleGoo_93>;
  #   L_2_222 = V_MAY_DEF <L_2_85>;
  RTHooks__CheckLoadTracedRef (D.419_75);
  # SUCC: 33 [100.0%]  (fallthru,exec)

  # BLOCK 33 freq:9000
  # PRED: 32 [100.0%]  (fallthru,exec) 29 [100.0%]  (fallthru,exec) 58 [100.0%]
 (fallthru) 57 [100.0%]  (fallthru)
  # L_2_184 = PHI <L_2_222(32), L_2_224(29), L_2_85(58), L_2_85(57)>;
  # MM_TrestleGoo_194 = PHI <MM_TrestleGoo_221(32), MM_TrestleGoo_223(29),
MM_TrestleGoo_93(58), MM_TrestleGoo_93(57)>;
  # M3_BhAG13_e_65 = PHI <D.419_75(32), M3_BhAG13_e_1(29), D.419_75(58),
D.419_75(57)>;
<L31>:;
<L32>:;
  # SUCC: 34 [100.0%]  (fallthru,dfs_back,exec)

  # BLOCK 34 freq:10000
  # PRED: 33 [100.0%]  (fallthru,dfs_back,exec) 13 [100.0%]  (fallthru,exec)
  # L_2_195 = PHI <L_2_184(33), L_2_216(13)>;
  # MM_TrestleGoo_185 = PHI <MM_TrestleGoo_194(33), MM_TrestleGoo_215(13)>;
  # M3_BhAG13_e_1 = PHI <M3_BhAG13_e_65(33), D.403_42(13)>;
<L40>:;
  M3_BhAG13_e.1_50 = (<unnamed type> * *) M3_BhAG13_e_1;
  #   VUSE <MM_TrestleGoo_185>;
  #   VUSE <L_2_195>;
  D.419_51 = *M3_BhAG13_e.1_50;
  if (D.419_51 == 0B) goto <L35>; else goto <L33>;
  # SUCC: 37 [10.0%]  (loop_exit,true,exec) 35 [90.0%]  (false,exec)

  # BLOCK 35 freq:9000
  # PRED: 34 [90.0%]  (false,exec)
<L33>:;
  D.493_138 = D.419_51 + ffffffffffffffff;
  D.494_139 = (int_32 *) D.493_138;
  #   VUSE <MM_TrestleGoo_185>;
  #   VUSE <L_2_195>;
  D.495_140 = *D.494_139;
  D.496_141 = (word_32) D.495_140;
  D.497_142 = D.496_141 << 22;
  D.498_143 = D.497_142 >> 31;
  if (D.498_143 == 0) goto <L59>; else goto <L34>;
  # SUCC: 59 [70.0%]  (true,exec) 36 [30.0%]  (false,exec)

  # BLOCK 36 freq:2700
  # PRED: 35 [30.0%]  (false,exec)
<L34>:;
  #   MM_TrestleGoo_235 = V_MAY_DEF <MM_TrestleGoo_185>;
  #   L_2_236 = V_MAY_DEF <L_2_195>;
  RTHooks__CheckLoadTracedRef (D.419_51);
  goto <bb 42> (<L42>);
  # SUCC: 42 [100.0%]  (fallthru,exec)

  # BLOCK 37 freq:1000
  # PRED: 34 [10.0%]  (loop_exit,true,exec)
  # L_2_196 = PHI <L_2_195(34)>;
  # MM_TrestleGoo_186 = PHI <MM_TrestleGoo_185(34)>;
<L35>:;
  # SUCC: 38 [100.0%]  (fallthru,exec)

  # BLOCK 38 freq:1000
  # PRED: 37 [100.0%]  (fallthru,exec)
<L38>:;
  L_2.3_52 = (<unnamed type> * *) &L_2;
  #   VUSE <L_2_196>;
  D.502_53 = *L_2.3_52;
  #   MM_TrestleGoo_217 = V_MAY_DEF <MM_TrestleGoo_186>;
  #   L_2_218 = V_MAY_DEF <L_2_196>;
  RTHooks__PopEFrame (D.502_53);
  # SUCC: 39 [100.0%]  (fallthru,exec)

  # BLOCK 39 freq:1000
  # PRED: 38 [100.0%]  (fallthru,exec)
  #   VUSE <L_2_218>;
  D.440_56 = *D.439_8;
  D.441_57 = (<unnamed type> * *) D.440_56;
  #   VUSE <MM_TrestleGoo_217>;
  #   VUSE <L_2_218>;
  D.442_58 = *D.441_57;
  D.503_59 = D.442_58 + 4;
  D.504_60 = (<unnamed type> * *) D.503_59;
  #   VUSE <MM_TrestleGoo_217>;
  #   VUSE <L_2_218>;
  D.505_61 = *D.504_60;
  D.506_62 = (<unnamed type> (*<T181>) (<unnamed type> *)) D.505_61;
  #   MM_TrestleGoo_219 = V_MAY_DEF <MM_TrestleGoo_217>;
  #   L_2_220 = V_MAY_DEF <L_2_218>;
  D.506_62 (D.440_56);
  # SUCC: 40 [100.0%]  (fallthru,exec)

  # BLOCK 40 freq:1000
  # PRED: 39 [100.0%]  (fallthru,exec)
<L39>:;
  return;
  # SUCC: EXIT [100.0%] 

  # BLOCK 51 freq:5103
  # PRED: 18 [70.0%]  (true,exec)
<L51>:;
  # SUCC: 41 [100.0%]  (fallthru)

  # BLOCK 41 freq:7290
  # PRED: 19 [100.0%]  (fallthru,exec) 51 [100.0%]  (fallthru)
  # L_2_55 = PHI <L_2_232(19), L_2_189(51)>;
  # MM_TrestleGoo_76 = PHI <MM_TrestleGoo_231(19), MM_TrestleGoo_179(51)>;
<L41>:;
  #   VUSE <MM_TrestleGoo_76>;
  #   VUSE <L_2_55>;
  D.451_117 = *D.480_123;
  D.452_118 = (word_32) D.451_117;
  D.453_119 = D.452_118 << 1;
  D.454_120 = D.453_119 >> 12;
  D.403_121 = (<unnamed type> *) D.454_120;
  goto <bb 20> (<L17>);
  # SUCC: 20 [100.0%]  (fallthru,exec)

  # BLOCK 59 freq:6300
  # PRED: 35 [70.0%]  (true,exec)
<L59>:;
  # SUCC: 42 [100.0%]  (fallthru)

  # BLOCK 42 freq:9000
  # PRED: 36 [100.0%]  (fallthru,exec) 59 [100.0%]  (fallthru)
  # L_2_74 = PHI <L_2_236(36), L_2_195(59)>;
  # MM_TrestleGoo_98 = PHI <MM_TrestleGoo_235(36), MM_TrestleGoo_185(59)>;
<L42>:;
  goto <bb 14> (<L9>);
  # SUCC: 14 [100.0%]  (fallthru,exec)

}


Here is the gdb trace showing relevant information for the phi.

(gdb) p $15
$37 = (tree) 0x42591600
(gdb) info break
Num Type           Disp Enb Address    What
1   breakpoint     keep y   0x00141818 in create_phi_node at
../../gcc/gcc/tree-phinodes.c:362
        stop only if phi == $15
        breakpoint already hit 2 times
3   breakpoint     keep y   0x00141184 in resize_phi_node at
../../gcc/gcc/tree-phinodes.c:271
        stop only if *phi == $15
        breakpoint already hit 1 time
4   breakpoint     keep y   0x00141000 in release_phi_node at
../../gcc/gcc/tree-phinodes.c:245
        stop only if phi == $15
        breakpoint already hit 1 time
(gdb) r
The program being debugged has been started already.
Start it from the beginning? (y or n) y
Starting program: /Users/hosking/cm3/m3-sys/m3cc/bug-28798/m3cgc1 -O1
-ftree-pre -fdump-tree-crited-vops-details-blocks-stats TrestleGoo.mc -o
TrestleGoo.ms
 TrestleGoo__Alias TrestleGoo__TrueChild TrestleGoo__PutProp
TrestleGoo__GetProp TrestleGoo__RemProp TrestleGoo__Next TrestleGoo_M3
Analyzing compilation unitPerforming intraprocedural optimizations
Assembling functions:
 TrestleGoo_M3 _m3_fault TrestleGoo__TrueChild TrestleGoo__Next
TrestleGoo__GetProp TrestleGoo__Alias TrestleGoo__RemProp TrestleGoo__PutProp
Breakpoint 1, create_phi_node (var=0x42448ae0, bb=0x4249a840) at
../../gcc/gcc/tree-phinodes.c:362
(gdb) c
Continuing.

Breakpoint 4, release_phi_node (phi=0x42591600) at
../../gcc/gcc/tree-phinodes.c:245
(gdb) c
Continuing.

Breakpoint 1, create_phi_node (var=0x4259d960, bb=0x4249ae40) at
../../gcc/gcc/tree-phinodes.c:362
(gdb) where
#0  create_phi_node (var=0x4259d960, bb=0x4249ae40) at
../../gcc/gcc/tree-phinodes.c:362
#1  0x00342800 in insert_aux (block=0x4249ae40) at
../../gcc/gcc/tree-ssa-pre.c:1706
#2  0x00342a78 in insert_aux (block=0x4249a900) at
../../gcc/gcc/tree-ssa-pre.c:1915
#3  0x00342a78 in insert_aux (block=0x4249a720) at
../../gcc/gcc/tree-ssa-pre.c:1915
#4  0x00342a78 in insert_aux (block=0x4249a600) at
../../gcc/gcc/tree-ssa-pre.c:1915
#5  0x00342a78 in insert_aux (block=0x425868a0) at
../../gcc/gcc/tree-ssa-pre.c:1915
#6  0x00342a78 in insert_aux (block=0x4249aea0) at
../../gcc/gcc/tree-ssa-pre.c:1915
#7  0x00342a78 in insert_aux (block=0x425867e0) at
../../gcc/gcc/tree-ssa-pre.c:1915
#8  0x00342a78 in insert_aux (block=0x4249a540) at
../../gcc/gcc/tree-ssa-pre.c:1915
#9  0x00342a78 in insert_aux (block=0x4249a4e0) at
../../gcc/gcc/tree-ssa-pre.c:1915
#10 0x00342a78 in insert_aux (block=0x4249a3c0) at
../../gcc/gcc/tree-ssa-pre.c:1915
#11 0x00342a78 in insert_aux (block=0x4249a360) at
../../gcc/gcc/tree-ssa-pre.c:1915
#12 0x00342a78 in insert_aux (block=0x4249a2a0) at
../../gcc/gcc/tree-ssa-pre.c:1915
#13 0x00342a78 in insert_aux (block=0x4249a240) at
../../gcc/gcc/tree-ssa-pre.c:1915
#14 0x00342a78 in insert_aux (block=0x4249a1e0) at
../../gcc/gcc/tree-ssa-pre.c:1915
#15 0x00342a78 in insert_aux (block=0x4249a180) at
../../gcc/gcc/tree-ssa-pre.c:1915
#16 0x00342a78 in insert_aux (block=0x4249a060) at
../../gcc/gcc/tree-ssa-pre.c:1915
#17 0x00342a78 in insert_aux (block=0x4248ef60) at
../../gcc/gcc/tree-ssa-pre.c:1915
#18 0x00343fd4 in execute_pre (do_fre=0 '\0') at
../../gcc/gcc/tree-ssa-pre.c:1937
#19 0x002260b8 in execute_one_pass (pass=0x4ed660) at
../../gcc/gcc/passes.c:827
#20 0x00226188 in execute_pass_list (pass=0x4ed660) at
../../gcc/gcc/passes.c:859
#21 0x002261a0 in execute_pass_list (pass=0x4ec21c) at
../../gcc/gcc/passes.c:860
#22 0x00153fa4 in tree_rest_of_compilation (fndecl=0x42443580) at
../../gcc/gcc/tree-optimize.c:419
#23 0x0000497c in m3_expand_function (fndecl=0x42443580) at
../../gcc/gcc/m3cg/parse.c:848
#24 0x00052784 in cgraph_expand_function (node=0x424501c0) at
../../gcc/gcc/cgraphunit.c:1055
#25 0x00052fc8 in cgraph_optimize () at ../../gcc/gcc/cgraphunit.c:1121
#26 0x000130c0 in m3_parse_file (xx=0) at ../../gcc/gcc/m3cg/parse.c:4397
#27 0x00036674 in toplev_main (argc=1079409344, argv=0x40567bcc) at
../../gcc/gcc/toplev.c:991
#28 0x00001f24 in _start (argc=7, argv=0xbffff1f8, envp=0xbffff218) at
/SourceCache/Csu/Csu-58.1.1/crt.c:272
#29 0x00001dcc in start ()
(gdb) c
Continuing.

Breakpoint 3, resize_phi_node (phi=0x4249ae68, len=9) at
../../gcc/gcc/tree-phinodes.c:271
(gdb) where
#0  resize_phi_node (phi=0x4249ae68, len=9) at
../../gcc/gcc/tree-phinodes.c:271
#1  0x001415e8 in reserve_phi_args_for_new_edge (bb=0x4249ae40) at
../../gcc/gcc/tree-phinodes.c:325
#2  0x001fd8b0 in unchecked_make_edge (src=0x4259d9c0, dst=0x4249ae40,
flags=1112124996) at ../../gcc/gcc/cfg.c:272
#3  0x002414fc in tree_split_edge (edge_in=0x424a1270) at
../../gcc/gcc/tree-cfg.c:3117
#4  0x00261bcc in split_edge (e=0x4258c460) at ../../gcc/gcc/cfghooks.c:407
#5  0x002445b8 in tree_find_edge_insert_loc (e=0x424a1270, bsi=0xbfffec88,
new_bb=0x0) at ../../gcc/gcc/tree-cfg.c:2975
#6  0x00244764 in bsi_commit_one_edge_insert (e=0x4249ae68, new_bb=0x9) at
../../gcc/gcc/tree-cfg.c:3016
#7  0x002466c8 in bsi_commit_edge_inserts () at ../../gcc/gcc/tree-cfg.c:2997
#8  0x00344098 in execute_pre (do_fre=0 '\0') at
../../gcc/gcc/tree-ssa-pre.c:2731
#9  0x002260b8 in execute_one_pass (pass=0x4ed660) at
../../gcc/gcc/passes.c:827
#10 0x00226188 in execute_pass_list (pass=0x4ed660) at
../../gcc/gcc/passes.c:859
#11 0x002261a0 in execute_pass_list (pass=0x4ec21c) at
../../gcc/gcc/passes.c:860
#12 0x00153fa4 in tree_rest_of_compilation (fndecl=0x42443580) at
../../gcc/gcc/tree-optimize.c:419
#13 0x0000497c in m3_expand_function (fndecl=0x42443580) at
../../gcc/gcc/m3cg/parse.c:848
#14 0x00052784 in cgraph_expand_function (node=0x424501c0) at
../../gcc/gcc/cgraphunit.c:1055
#15 0x00052fc8 in cgraph_optimize () at ../../gcc/gcc/cgraphunit.c:1121
#16 0x000130c0 in m3_parse_file (xx=0) at ../../gcc/gcc/m3cg/parse.c:4397
#17 0x00036674 in toplev_main (argc=1079409344, argv=0x40567bcc) at
../../gcc/gcc/toplev.c:991
#18 0x00001f24 in _start (argc=7, argv=0xbffff1f8, envp=0xbffff218) at
/SourceCache/Csu/Csu-58.1.1/crt.c:272
#19 0x00001dcc in start ()
(gdb) up
#1  0x001415e8 in reserve_phi_args_for_new_edge (bb=0x4249ae40) at
../../gcc/gcc/tree-phinodes.c:325
(gdb) 
#2  0x001fd8b0 in unchecked_make_edge (src=0x4259d9c0, dst=0x4249ae40,
flags=1112124996) at ../../gcc/gcc/cfg.c:272
(gdb) 
#3  0x002414fc in tree_split_edge (edge_in=0x424a1270) at
../../gcc/gcc/tree-cfg.c:3117
(gdb) p *(edge_in->src)
$44 = {
  stmt_list = 0x42499de0, 
  preds = 0x424a0840, 
  succs = 0x424a0860, 
  aux = 0x41600770, 
  loop_father = 0x41607f30, 
  dom = {0x428135d0, 0x428129a0}, 
  prev_bb = 0x4259d660, 
  next_bb = 0x4259d9c0, 
  il = {
    rtl = 0x0
  }, 
  phi_nodes = 0x0, 
  predictions = 0x0, 
  count = 0, 
  index = 32, 
  loop_depth = 1, 
  frequency = 1553, 
  flags = 6
}
(gdb) p *(edge_in->dest)
$45 = {
  stmt_list = 0x42499e20, 
  preds = 0x4258c450, 
  succs = 0x42595880, 
  aux = 0x41600790, 
  loop_father = 0x41607f30, 
  dom = {0x428136c0, 0x428129c8}, 
  prev_bb = 0x4259d9c0, 
  next_bb = 0x425867e0, 
  il = {
    rtl = 0x0
  }, 
  phi_nodes = 0x42591600, 
  predictions = 0x0, 
  count = 0, 
  index = 33, 
  loop_depth = 1, 
  frequency = 9000, 
  flags = 6
}
(gdb) c
Continuing.

Breakpoint 4, release_phi_node (phi=0x42591600) at
../../gcc/gcc/tree-phinodes.c:245
(gdb) c
Continuing.

Program received signal EXC_BAD_ACCESS, Could not access memory.
Reason: KERN_PROTECTION_FAILURE at address: 0x00000000
0x00141ca8 in remove_phi_node (phi=0x42591600, prev=0x0) at
../../gcc/gcc/tree-phinodes.c:454
(gdb) 
(In reply to comment #14)
> Subject: Re:  remove_phi_node attempts removal
>  of a phi node resized by resize_phi_node
> 
> hosking at cs dot purdue dot edu wrote:
> > ------- Comment #13 from hosking at cs dot purdue dot edu  2006-08-24 15:27 -------
> > Is this enough?
> > 
> > Here is the dump output, followed by stack traces at the resize and remove
> > points (the remove goes on to fail). 
> 
> So, this edge can't exist.
> Note:
> 
> > Its src is:
> > 
> > (gdb) p *(e->src)
> > $12 = {
> >   index = 0, 
> > }
> > 
> > Its dest is:
> > 
> > (gdb) p *(e->dest)
> > $13 = {
> >   index = 0, 
> > }
> > 
> 
> It claims to be an edge from block 0 to block 0, but your according to
> your dump, block 0 is not a successor of block 0 (IE it is not a self loop).
> 
> --Dan
> 


-- 


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


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

* [Bug tree-optimization/28798] remove_phi_node attempts removal of a phi node resized by resize_phi_node
  2006-08-22  6:07 [Bug tree-optimization/28798] New: remove_phi_node attempts removal of a phi node resized by resize_phi_node hosking at cs dot purdue dot edu
                   ` (14 preceding siblings ...)
  2006-08-29 15:53 ` hosking at cs dot purdue dot edu
@ 2006-08-31  5:38 ` hosking at cs dot purdue dot edu
  15 siblings, 0 replies; 23+ messages in thread
From: hosking at cs dot purdue dot edu @ 2006-08-31  5:38 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #16 from hosking at cs dot purdue dot edu  2006-08-31 05:37 -------
It turns out there were problems with aliasing in the trees generated by the
Modula-3 front end.  There are multiple places where aliasing is used to
loophole values from one type to another, and this was probably causing the
problem.  Having resolved my aliasing issues, I no longer see this problem. 
Thanks for your help!


-- 

hosking at cs dot purdue dot edu changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|WAITING                     |RESOLVED
         Resolution|                            |INVALID


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


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

end of thread, other threads:[~2006-08-31  5:38 UTC | newest]

Thread overview: 23+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-08-22  6:07 [Bug tree-optimization/28798] New: remove_phi_node attempts removal of a phi node resized by resize_phi_node hosking at cs dot purdue dot edu
2006-08-22  6:10 ` [Bug tree-optimization/28798] " pinskia at gcc dot gnu dot org
2006-08-22  6:17 ` pinskia at gcc dot gnu dot org
2006-08-22 12:47   ` Daniel Berlin
2006-08-22 12:47 ` dberlin at dberlin dot org
2006-08-23 13:40 ` hosking at cs dot purdue dot edu
2006-08-23 15:16   ` Andrew Pinski
2006-08-23 15:16 ` pinskia at gmail dot com
2006-08-23 18:12 ` pinskia at gcc dot gnu dot org
2006-08-23 22:30 ` hosking at cs dot purdue dot edu
2006-08-23 23:52   ` Daniel Berlin
2006-08-23 23:43 ` hosking at cs dot purdue dot edu
2006-08-24  0:15   ` Andrew Pinski
2006-08-23 23:52 ` dberlin at dberlin dot org
2006-08-24  0:15 ` pinskia at physics dot uc dot edu
2006-08-24  0:57 ` hosking at cs dot purdue dot edu
2006-08-24  2:45   ` Daniel Berlin
2006-08-24  2:45 ` dberlin at dberlin dot org
2006-08-24 15:27 ` hosking at cs dot purdue dot edu
2006-08-25 15:19   ` Daniel Berlin
2006-08-25 15:19 ` dberlin at dberlin dot org
2006-08-29 15:53 ` hosking at cs dot purdue dot edu
2006-08-31  5:38 ` hosking at cs dot purdue dot edu

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).