public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug tree-optimization/33508] New: tree struct aliasing goes into a loop marking call clobbers.
@ 2007-09-20 10:35 ramana dot radhakrishnan at celunite dot com
2007-09-20 10:45 ` [Bug tree-optimization/33508] " ramana dot radhakrishnan at celunite dot com
` (9 more replies)
0 siblings, 10 replies; 11+ messages in thread
From: ramana dot radhakrishnan at celunite dot com @ 2007-09-20 10:35 UTC (permalink / raw)
To: gcc-bugs
Using head from today to build a telecom stack on the ARM port.
It spends nearly 100% of time in tree call clobbering for a particularly nasty
testcase which I am attaching.
Almost every time I do a Ctrl-C in gdb I hit myself in the function
set_initial_properties with a similar backtrace.
. #0 0x0847f0da in var_ann (t=0xb6f433c8)
at ../../gnu/gcc/tree-flow-inline.h:204
#1 0x0847eee5 in mark_call_clobbered (var=0xb6f433c8, escape_type=256)
at ../../gnu/gcc/tree-flow-inline.h:878
#2 0x08480ce6 in set_initial_properties (ai=0x8a8b280)
at ../../gnu/gcc/tree-ssa-alias.c:565
#3 0x08481198 in compute_call_clobbered (ai=0x8a8b280)
at ../../gnu/gcc/tree-ssa-alias.c:619
in the hunk
if (TREE_CODE (alias) == STRUCT_FIELD_TAG)
{
subvar_t svars;
svars = get_subvars_for_var (SFT_PARENT_VAR (alias));
for (; svars; svars = svars->next)
if (!unmodifiable_var_p (alias))
mark_call_clobbered (svars->var, pi->escape_mask);
}
else if (!unmodifiable_var_p (alias))
mark_call_clobbered (alias, pi->escape_mask);
I tried by reverting the patch from r127629 but that didn't help straight off.
Doing a binary search I got to the versions r127831-37 :
r127831 is the last revision of the tree that builds this testcase without any
compile time regressions.
r127836 is the first revision of the tree where this goes awry with a huge
compile time regression .
versions (r127832-35) do not build for undeclared references to
forbidden_auto_inc_dec_classes in regclass.c. I haven't yet seen what's gone
into these commits to make any informed decisions.
This is the statistic with the
garbage collection : 0.43 ( 0%) usr 0.03 ( 0%) sys 4.51 ( 0%) wall
0 kB ( 0%) ggc
callgraph construction: 0.01 ( 0%) usr 0.00 ( 0%) sys 0.05 ( 0%) wall
69 kB ( 0%) ggc
callgraph optimization: 0.00 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall
51 kB ( 0%) ggc
ipa type escape : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall
0 kB ( 0%) ggc
cfg cleanup : 0.02 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall
2 kB ( 0%) ggc
CFG verifier : 0.03 ( 0%) usr 0.00 ( 0%) sys 0.04 ( 0%) wall
0 kB ( 0%) ggc
trivially dead code : 0.00 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall
0 kB ( 0%) ggc
df live regs : 0.02 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall
0 kB ( 0%) ggc
df live&initialized regs: 0.02 ( 0%) usr 0.00 ( 0%) sys 0.02 ( 0%) wall
0 kB ( 0%) ggc
df use-def / def-use chains: 0.00 ( 0%) usr 0.01 ( 0%) sys 0.01 ( 0%)
wall 0 kB ( 0%) ggc
df reg dead/unused notes: 0.02 ( 0%) usr 0.00 ( 0%) sys 0.03 ( 0%) wall
19 kB ( 0%) ggc
register information : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.00 ( 0%) wall
0 kB ( 0%) ggc
alias analysis : 0.00 ( 0%) usr 0.00 ( 0%) sys 0.02 ( 0%) wall
88 kB ( 0%) ggc
preprocessing : 0.13 ( 0%) usr 0.04 ( 0%) sys 0.19 ( 0%) wall
1636 kB ( 4%) ggc
lexical analysis : 0.05 ( 0%) usr 0.10 ( 1%) sys 0.09 ( 0%) wall
0 kB ( 0%) ggc
parser : 0.22 ( 0%) usr 0.09 ( 1%) sys 0.39 ( 0%) wall
7237 kB (19%) ggc
inline heuristics : 0.04 ( 0%) usr 0.00 ( 0%) sys 0.18 ( 0%) wall
325 kB ( 1%) ggc
integration : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.00 ( 0%) wall
91 kB ( 0%) ggc
tree CFG cleanup : 0.02 ( 0%) usr 0.00 ( 0%) sys 0.06 ( 0%) wall
3 kB ( 0%) ggc
tree VRP : 0.04 ( 0%) usr 0.00 ( 0%) sys 1.11 ( 0%) wall
338 kB ( 1%) ggc
tree copy propagation : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.07 ( 0%) wall
20 kB ( 0%) ggc
tree PTA : 0.06 ( 0%) usr 0.00 ( 0%) sys 0.11 ( 0%) wall
123 kB ( 0%) ggc
tree alias analysis : 0.53 ( 0%) usr 0.00 ( 0%) sys 1.27 ( 0%) wall
23 kB ( 0%) ggc
tree call clobbering :3604.47 (100%) usr 12.38 (95%) sys4166.01 (99%) wall
0 kB ( 0%) ggc
tree flow sensitive alias: 0.01 ( 0%) usr 0.00 ( 0%) sys 0.04 ( 0%) wall
150 kB ( 0%) ggc
tree flow insensitive alias: 0.54 ( 0%) usr 0.00 ( 0%) sys 0.73 ( 0%)
wall 0 kB ( 0%) ggc
tree memory partitioning: 1.91 ( 0%) usr 0.04 ( 0%) sys 3.32 ( 0%) wall
2 kB ( 0%) ggc
tree SSA rewrite : 0.00 ( 0%) usr 0.00 ( 0%) sys 0.27 ( 0%) wall
338 kB ( 1%) ggc
tree SSA incremental : 0.21 ( 0%) usr 0.00 ( 0%) sys 0.30 ( 0%) wall
17 kB ( 0%) ggc
tree operand scan : 1.96 ( 0%) usr 0.04 ( 0%) sys 4.16 ( 0%) wall
507 kB ( 1%) ggc
dominator optimization: 0.58 ( 0%) usr 0.00 ( 0%) sys 0.78 ( 0%) wall
234 kB ( 1%) ggc
tree SRA : 0.00 ( 0%) usr 0.00 ( 0%) sys 0.12 ( 0%) wall
1 kB ( 0%) ggc
tree CCP : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.04 ( 0%) wall
17 kB ( 0%) ggc
tree reassociation : 0.00 ( 0%) usr 0.00 ( 0%) sys 0.17 ( 0%) wall
11 kB ( 0%) ggc
tree PRE : 0.15 ( 0%) usr 0.00 ( 0%) sys 0.23 ( 0%) wall
192 kB ( 1%) ggc
tree FRE : 0.04 ( 0%) usr 0.00 ( 0%) sys 0.42 ( 0%) wall
113 kB ( 0%) ggc
tree code sinking : 0.00 ( 0%) usr 0.00 ( 0%) sys 0.18 ( 0%) wall
5 kB ( 0%) ggc
tree forward propagate: 0.00 ( 0%) usr 0.00 ( 0%) sys 0.07 ( 0%) wall
40 kB ( 0%) ggc
tree conservative DCE : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall
0 kB ( 0%) ggc
tree loop bounds : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall
4 kB ( 0%) ggc
tree iv optimization : 0.00 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall
38 kB ( 0%) ggc
tree loop init : 0.00 ( 0%) usr 0.00 ( 0%) sys 0.08 ( 0%) wall
12 kB ( 0%) ggc
tree SSA to normal : 0.00 ( 0%) usr 0.00 ( 0%) sys 0.52 ( 0%) wall
31 kB ( 0%) ggc
tree SSA verifier : 4.07 ( 0%) usr 0.27 ( 2%) sys 5.43 ( 0%) wall
99 kB ( 0%) ggc
tree STMT verifier : 0.18 ( 0%) usr 0.00 ( 0%) sys 0.22 ( 0%) wall
0 kB ( 0%) ggc
dominance computation : 0.02 ( 0%) usr 0.00 ( 0%) sys 0.02 ( 0%) wall
0 kB ( 0%) ggc
expand : 0.96 ( 0%) usr 0.06 ( 0%) sys 9.88 ( 0%) wall
25260 kB (66%) ggc
forward prop : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall
32 kB ( 0%) ggc
CSE : 0.06 ( 0%) usr 0.01 ( 0%) sys 0.46 ( 0%) wall
18 kB ( 0%) ggc
dead code elimination : 0.00 ( 0%) usr 0.01 ( 0%) sys 0.01 ( 0%) wall
0 kB ( 0%) ggc
dead store elim1 : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.10 ( 0%) wall
17 kB ( 0%) ggc
dead store elim2 : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall
24 kB ( 0%) ggc
loop analysis : 0.00 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall
15 kB ( 0%) ggc
CPROP 1 : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.00 ( 0%) wall
15 kB ( 0%) ggc
PRE : 0.00 ( 0%) usr 0.00 ( 0%) sys 0.14 ( 0%) wall
6 kB ( 0%) ggc
CPROP 2 : 0.00 ( 0%) usr 0.00 ( 0%) sys 0.11 ( 0%) wall
15 kB ( 0%) ggc
bypass jumps : 0.02 ( 0%) usr 0.00 ( 0%) sys 0.00 ( 0%) wall
14 kB ( 0%) ggc
auto inc dec : 0.00 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall
7 kB ( 0%) ggc
CSE 2 : 0.04 ( 0%) usr 0.00 ( 0%) sys 0.07 ( 0%) wall
8 kB ( 0%) ggc
combiner : 0.02 ( 0%) usr 0.00 ( 0%) sys 0.38 ( 0%) wall
37 kB ( 0%) ggc
regmove : 0.03 ( 0%) usr 0.00 ( 0%) sys 0.04 ( 0%) wall
2 kB ( 0%) ggc
scheduling : 0.04 ( 0%) usr 0.00 ( 0%) sys 0.24 ( 0%) wall
39 kB ( 0%) ggc
local alloc : 0.06 ( 0%) usr 0.00 ( 0%) sys 0.06 ( 0%) wall
98 kB ( 0%) ggc
global alloc : 0.04 ( 0%) usr 0.00 ( 0%) sys 0.26 ( 0%) wall
35 kB ( 0%) ggc
reload CSE regs : 0.03 ( 0%) usr 0.00 ( 0%) sys 0.13 ( 0%) wall
52 kB ( 0%) ggc
thread pro- & epilogue: 0.01 ( 0%) usr 0.00 ( 0%) sys 0.00 ( 0%) wall
34 kB ( 0%) ggc
peephole 2 : 0.00 ( 0%) usr 0.00 ( 0%) sys 0.02 ( 0%) wall
0 kB ( 0%) ggc
rename registers : 0.03 ( 0%) usr 0.00 ( 0%) sys 0.06 ( 0%) wall
0 kB ( 0%) ggc
scheduling 2 : 0.07 ( 0%) usr 0.00 ( 0%) sys 0.10 ( 0%) wall
7 kB ( 0%) ggc
machine dep reorg : 0.00 ( 0%) usr 0.00 ( 0%) sys 0.02 ( 0%) wall
4 kB ( 0%) ggc
final : 0.03 ( 0%) usr 0.00 ( 0%) sys 0.74 ( 0%) wall
0 kB ( 0%) ggc
symout : 0.00 ( 0%) usr 0.00 ( 0%) sys 0.22 ( 0%) wall
0 kB ( 0%) ggc
TOTAL :3617.35 13.09 4205.33
38504 kB
--
Summary: tree struct aliasing goes into a loop marking call
clobbers.
Product: gcc
Version: unknown
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: tree-optimization
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: ramana dot radhakrishnan at celunite dot com
GCC build triplet: i686-linux-gnu
GCC host triplet: i686-linux-gnu
GCC target triplet: arm-none-eabi
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33508
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Bug tree-optimization/33508] tree struct aliasing goes into a loop marking call clobbers.
2007-09-20 10:35 [Bug tree-optimization/33508] New: tree struct aliasing goes into a loop marking call clobbers ramana dot radhakrishnan at celunite dot com
@ 2007-09-20 10:45 ` ramana dot radhakrishnan at celunite dot com
2007-09-20 11:50 ` rguenth at gcc dot gnu dot org
` (8 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: ramana dot radhakrishnan at celunite dot com @ 2007-09-20 10:45 UTC (permalink / raw)
To: gcc-bugs
------- Comment #1 from ramana dot radhakrishnan at celunite dot com 2007-09-20 10:44 -------
Created an attachment (id=14229)
--> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=14229&action=view)
testcase.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33508
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Bug tree-optimization/33508] tree struct aliasing goes into a loop marking call clobbers.
2007-09-20 10:35 [Bug tree-optimization/33508] New: tree struct aliasing goes into a loop marking call clobbers ramana dot radhakrishnan at celunite dot com
2007-09-20 10:45 ` [Bug tree-optimization/33508] " ramana dot radhakrishnan at celunite dot com
@ 2007-09-20 11:50 ` rguenth at gcc dot gnu dot org
2007-09-20 12:06 ` rguenth at gcc dot gnu dot org
` (7 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2007-09-20 11:50 UTC (permalink / raw)
To: gcc-bugs
------- Comment #2 from rguenth at gcc dot gnu dot org 2007-09-20 11:50 -------
At least the unmodifiable_var_p (alias) call looks suspicious (but probably
unrelated to the problem):
Index: tree-ssa-alias.c
===================================================================
--- tree-ssa-alias.c (revision 128618)
+++ tree-ssa-alias.c (working copy)
@@ -561,7 +561,7 @@ set_initial_properties (struct alias_inf
subvar_t svars;
svars = get_subvars_for_var (SFT_PARENT_VAR (alias));
for (; svars; svars = svars->next)
- if (!unmodifiable_var_p (alias))
+ if (!unmodifiable_var_p (svars->var))
mark_call_clobbered (svars->var, pi->escape_mask);
}
else if (!unmodifiable_var_p (alias))
what we have is that SFT_PARENT_VAR is of type 'union Meep' which has
quite a lot of fields and the above loop is quadratic in the number of
fields.
--
rguenth at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |rguenth at gcc dot gnu dot
| |org
Keywords| |alias
Summary|tree struct aliasing goes |tree struct aliasing goes
|into a loop marking call |into a loop marking call
|clobbers. |clobbers.
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33508
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Bug tree-optimization/33508] tree struct aliasing goes into a loop marking call clobbers.
2007-09-20 10:35 [Bug tree-optimization/33508] New: tree struct aliasing goes into a loop marking call clobbers ramana dot radhakrishnan at celunite dot com
2007-09-20 10:45 ` [Bug tree-optimization/33508] " ramana dot radhakrishnan at celunite dot com
2007-09-20 11:50 ` rguenth at gcc dot gnu dot org
@ 2007-09-20 12:06 ` rguenth at gcc dot gnu dot org
2007-09-20 12:07 ` rguenth at gcc dot gnu dot org
` (6 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2007-09-20 12:06 UTC (permalink / raw)
To: gcc-bugs
------- Comment #3 from rguenth at gcc dot gnu dot org 2007-09-20 12:06 -------
(gdb) call bitmap_count_bits (pi->pt_vars)
$23 = 10307
that is, we have all SFTs in pi->pt_vars and as we process them we loop over
all of them again.
--
rguenth at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Ever Confirmed|0 |1
Keywords| |compile-time-hog
Last reconfirmed|0000-00-00 00:00:00 |2007-09-20 12:06:32
date| |
Version|unknown |4.3.0
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33508
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Bug tree-optimization/33508] tree struct aliasing goes into a loop marking call clobbers.
2007-09-20 10:35 [Bug tree-optimization/33508] New: tree struct aliasing goes into a loop marking call clobbers ramana dot radhakrishnan at celunite dot com
` (2 preceding siblings ...)
2007-09-20 12:06 ` rguenth at gcc dot gnu dot org
@ 2007-09-20 12:07 ` rguenth at gcc dot gnu dot org
2007-09-20 13:30 ` [Bug tree-optimization/33508] [4.3 Regression] " rguenth at gcc dot gnu dot org
` (5 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2007-09-20 12:07 UTC (permalink / raw)
To: gcc-bugs
------- Comment #4 from rguenth at gcc dot gnu dot org 2007-09-20 12:07 -------
Created an attachment (id=14230)
--> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=14230&action=view)
patch fixing the problem
This fixes it. The idea is to keep track of which parent vars we need to add
all subvars to the call clobbered list in a bitmap and process them after the
first walk.
--
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
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33508
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Bug tree-optimization/33508] [4.3 Regression] tree struct aliasing goes into a loop marking call clobbers.
2007-09-20 10:35 [Bug tree-optimization/33508] New: tree struct aliasing goes into a loop marking call clobbers ramana dot radhakrishnan at celunite dot com
` (3 preceding siblings ...)
2007-09-20 12:07 ` rguenth at gcc dot gnu dot org
@ 2007-09-20 13:30 ` rguenth at gcc dot gnu dot org
2007-09-20 13:52 ` ramana dot radhakrishnan at celunite dot com
` (4 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2007-09-20 13:30 UTC (permalink / raw)
To: gcc-bugs
------- Comment #5 from rguenth at gcc dot gnu dot org 2007-09-20 13:29 -------
4.2 doesn't have this extra loop.
--
rguenth at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
Summary|tree struct aliasing goes |[4.3 Regression] tree struct
|into a loop marking call |aliasing goes into a loop
|clobbers. |marking call clobbers.
Target Milestone|--- |4.3.0
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33508
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Bug tree-optimization/33508] [4.3 Regression] tree struct aliasing goes into a loop marking call clobbers.
2007-09-20 10:35 [Bug tree-optimization/33508] New: tree struct aliasing goes into a loop marking call clobbers ramana dot radhakrishnan at celunite dot com
` (4 preceding siblings ...)
2007-09-20 13:30 ` [Bug tree-optimization/33508] [4.3 Regression] " rguenth at gcc dot gnu dot org
@ 2007-09-20 13:52 ` ramana dot radhakrishnan at celunite dot com
2007-09-20 15:12 ` dberlin at dberlin dot org
` (3 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: ramana dot radhakrishnan at celunite dot com @ 2007-09-20 13:52 UTC (permalink / raw)
To: gcc-bugs
------- Comment #6 from ramana dot radhakrishnan at celunite dot com 2007-09-20 13:52 -------
(In reply to comment #4)
> Created an attachment (id=14230)
--> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=14230&action=view) [edit]
> patch fixing the problem
>
> This fixes it. The idea is to keep track of which parent vars we need to add
> all subvars to the call clobbered list in a bitmap and process them after the
> first walk.
>
Yep it does - Thanks for the quick fix. I am testing it now and will let you
know in a bit .
(In reply to comment #5)
> 4.2 doesn't have this extra loop.
>
--
ramana dot radhakrishnan at celunite dot com changed:
What |Removed |Added
----------------------------------------------------------------------------
Version|4.3.0 |unknown
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33508
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Bug tree-optimization/33508] [4.3 Regression] tree struct aliasing goes into a loop marking call clobbers.
2007-09-20 10:35 [Bug tree-optimization/33508] New: tree struct aliasing goes into a loop marking call clobbers ramana dot radhakrishnan at celunite dot com
` (5 preceding siblings ...)
2007-09-20 13:52 ` ramana dot radhakrishnan at celunite dot com
@ 2007-09-20 15:12 ` dberlin at dberlin dot org
2007-09-20 15:21 ` rguenther at suse dot de
` (2 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: dberlin at dberlin dot org @ 2007-09-20 15:12 UTC (permalink / raw)
To: gcc-bugs
------- Comment #7 from dberlin at gcc dot gnu dot org 2007-09-20 15:12 -------
Subject: Re: [4.3 Regression] tree struct aliasing goes into a loop marking
call clobbers.
On 20 Sep 2007 13:52:11 -0000, ramana dot radhakrishnan at celunite
dot com <gcc-bugzilla@gcc.gnu.org> wrote:
>
>
> ------- Comment #6 from ramana dot radhakrishnan at celunite dot com 2007-09-20 13:52 -------
> (In reply to comment #4)
> > Created an attachment (id=14230)
--> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=14230&action=view)
> --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=14230&action=view) [edit]
> > patch fixing the problem
> >
> > This fixes it. The idea is to keep track of which parent vars we need to add
> > all subvars to the call clobbered list in a bitmap and process them after the
> > first walk.
I don't have enough context handy in the patch to see if you moved it
outside the transitive loop, or just the initial loop.
You can move it outside the initial loop, but not the transitive loop,
because the SFT's may themselves be pointers (obviously for
non-pointer SFT's, you can certainly ignore them).
You could also speed this up dramatically by not queuing non-pointers.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33508
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Bug tree-optimization/33508] [4.3 Regression] tree struct aliasing goes into a loop marking call clobbers.
2007-09-20 10:35 [Bug tree-optimization/33508] New: tree struct aliasing goes into a loop marking call clobbers ramana dot radhakrishnan at celunite dot com
` (6 preceding siblings ...)
2007-09-20 15:12 ` dberlin at dberlin dot org
@ 2007-09-20 15:21 ` rguenther at suse dot de
2007-09-21 9:37 ` rguenth at gcc dot gnu dot org
2007-09-21 9:39 ` rguenth at gcc dot gnu dot org
9 siblings, 0 replies; 11+ messages in thread
From: rguenther at suse dot de @ 2007-09-20 15:21 UTC (permalink / raw)
To: gcc-bugs
------- Comment #8 from rguenther at suse dot de 2007-09-20 15:20 -------
Subject: Re: [4.3 Regression] tree struct
aliasing goes into a loop marking call clobbers.
On Thu, 20 Sep 2007, dberlin at dberlin dot org wrote:
> ------- Comment #7 from dberlin at gcc dot gnu dot org 2007-09-20 15:12 -------
> Subject: Re: [4.3 Regression] tree struct aliasing goes into a loop marking
> call clobbers.
>
> On 20 Sep 2007 13:52:11 -0000, ramana dot radhakrishnan at celunite
> dot com <gcc-bugzilla@gcc.gnu.org> wrote:
> >
> >
> > ------- Comment #6 from ramana dot radhakrishnan at celunite dot com 2007-09-20 13:52 -------
> > (In reply to comment #4)
> > > Created an attachment (id=14230)
--> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=14230&action=view)
> --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=14230&action=view)
> > --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=14230&action=view) [edit]
> > > patch fixing the problem
> > >
> > > This fixes it. The idea is to keep track of which parent vars we need to add
> > > all subvars to the call clobbered list in a bitmap and process them after the
> > > first walk.
>
>
> I don't have enough context handy in the patch to see if you moved it
> outside the transitive loop, or just the initial loop.
> You can move it outside the initial loop, but not the transitive loop,
> because the SFT's may themselves be pointers (obviously for
> non-pointer SFT's, you can certainly ignore them).
I only moved it outside of the innermost EXECUTE_IF_SET_IN_BITMAP loop
on aliases, which should be safe. I don't completely understand what
you mean with non queuing non-pointers - I suppose queuing non-pointers
in the worklist in mark_aliases_call_clobbered?
Richard.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33508
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Bug tree-optimization/33508] [4.3 Regression] tree struct aliasing goes into a loop marking call clobbers.
2007-09-20 10:35 [Bug tree-optimization/33508] New: tree struct aliasing goes into a loop marking call clobbers ramana dot radhakrishnan at celunite dot com
` (7 preceding siblings ...)
2007-09-20 15:21 ` rguenther at suse dot de
@ 2007-09-21 9:37 ` rguenth at gcc dot gnu dot org
2007-09-21 9:39 ` rguenth at gcc dot gnu dot org
9 siblings, 0 replies; 11+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2007-09-21 9:37 UTC (permalink / raw)
To: gcc-bugs
------- Comment #9 from rguenth at gcc dot gnu dot org 2007-09-21 09:37 -------
Subject: Bug 33508
Author: rguenth
Date: Fri Sep 21 09:36:52 2007
New Revision: 128645
URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=128645
Log:
2007-09-21 Richard Guenther <rguenther@suse.de>
PR tree-optimization/33508
* tree-ssa-alias.c (mark_aliases_call_clobbered): Avoid
quadratic loop by keeping a bitmap of variables we have
to clobber all subvariables for.
(set_initial_properties): Likewise.
Modified:
trunk/gcc/ChangeLog
trunk/gcc/tree-ssa-alias.c
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33508
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Bug tree-optimization/33508] [4.3 Regression] tree struct aliasing goes into a loop marking call clobbers.
2007-09-20 10:35 [Bug tree-optimization/33508] New: tree struct aliasing goes into a loop marking call clobbers ramana dot radhakrishnan at celunite dot com
` (8 preceding siblings ...)
2007-09-21 9:37 ` rguenth at gcc dot gnu dot org
@ 2007-09-21 9:39 ` rguenth at gcc dot gnu dot org
9 siblings, 0 replies; 11+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2007-09-21 9:39 UTC (permalink / raw)
To: gcc-bugs
------- Comment #10 from rguenth at gcc dot gnu dot org 2007-09-21 09:38 -------
Fixed.
--
rguenth at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|ASSIGNED |RESOLVED
Resolution| |FIXED
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33508
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2007-09-21 9:39 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-09-20 10:35 [Bug tree-optimization/33508] New: tree struct aliasing goes into a loop marking call clobbers ramana dot radhakrishnan at celunite dot com
2007-09-20 10:45 ` [Bug tree-optimization/33508] " ramana dot radhakrishnan at celunite dot com
2007-09-20 11:50 ` rguenth at gcc dot gnu dot org
2007-09-20 12:06 ` rguenth at gcc dot gnu dot org
2007-09-20 12:07 ` rguenth at gcc dot gnu dot org
2007-09-20 13:30 ` [Bug tree-optimization/33508] [4.3 Regression] " rguenth at gcc dot gnu dot org
2007-09-20 13:52 ` ramana dot radhakrishnan at celunite dot com
2007-09-20 15:12 ` dberlin at dberlin dot org
2007-09-20 15:21 ` rguenther at suse dot de
2007-09-21 9:37 ` rguenth at gcc dot gnu dot org
2007-09-21 9:39 ` 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).