[Bug tree-optimization/26854] Inordinate compile times on large routines
--- Comment #11 from dberlin at gcc dot gnu dot org 2006-04-20 16:21 --- (In reply to comment #10) > PRE/FRE for mainline need some TLC on their compile-time performance as > indicated by this PR as well. They're #3 & #4 respectively behind the > operator > scanning code and store-ccp and way out of line when compared with the rest of > the tree optimization passes. > I'll look into this in the next few weeks. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26854
[Bug tree-optimization/26626] [4.2 Regression] ICE in in add_virtual_operand
--- Comment #23 from dberlin at gcc dot gnu dot org 2006-05-03 03:19 --- Subject: Bug 26626 Author: dberlin Date: Wed May 3 03:19:22 2006 New Revision: 113493 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=113493 Log: 2006-05-02 Daniel Berlin <[EMAIL PROTECTED]> Fix PR tree-optimization/26626 * tree-ssa-structalias.c (compute_points_to_sets): For now, solve always. * tree-ssa-operands.c (access_can_touch_variable): Allow typecasting through union pointers. Added: trunk/gcc/testsuite/gcc.c-torture/compile/pr26626.c Modified: trunk/gcc/ChangeLog trunk/gcc/tree-ssa-operands.c trunk/gcc/tree-ssa-structalias.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26626
[Bug tree-optimization/27093] [4.2 Regression] verify_ssa failed: definition does not dominate use
--- Comment #6 from dberlin at gcc dot gnu dot org 2006-05-04 16:52 --- G. These phi nodes are all dead, but it still is verifying them anyway. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27093
[Bug tree-optimization/27093] [4.2 Regression] verify_ssa failed: definition does not dominate use
--- Comment #9 from dberlin at gcc dot gnu dot org 2006-05-07 18:18 --- Mine -- dberlin at gcc dot gnu dot org changed: What|Removed |Added AssignedTo|unassigned at gcc dot gnu |dberlin at gcc dot gnu dot |dot org |org Status|NEW |ASSIGNED Last reconfirmed|2006-04-09 17:50:01 |2006-05-07 18:18:00 date|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27093
[Bug tree-optimization/27093] [4.2 Regression] verify_ssa failed: definition does not dominate use
--- Comment #10 from dberlin at gcc dot gnu dot org 2006-05-09 01:28 --- Subject: Bug 27093 Author: dberlin Date: Tue May 9 01:28:47 2006 New Revision: 113641 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=113641 Log: 2006-05-08 Daniel Berlin <[EMAIL PROTECTED]> Fix PR tree-optimization/27093 * tree-ssa-alias.c (recalculate_used_alone): Mark variables for renaming when they become not-used_alone. Modified: trunk/gcc/ChangeLog trunk/gcc/tree-ssa-alias.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27093
[Bug tree-optimization/27093] [4.2 Regression] verify_ssa failed: definition does not dominate use
--- Comment #11 from dberlin at gcc dot gnu dot org 2006-05-09 02:08 --- Fixed -- dberlin at gcc dot gnu dot org changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution||FIXED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27093
[Bug tree-optimization/27373] [4.2 Regression] ICE: add_virtual_operand with pointers to arrays
--- Comment #7 from dberlin at gcc dot gnu dot org 2006-05-14 19:10 --- We aren't marking smt usage for updating in forwprop, but we need to, because forwprop is propagating and address and destroying the smt info. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27373
[Bug tree-optimization/27373] [4.2 Regression] ICE: add_virtual_operand with pointers to arrays
--- Comment #8 from dberlin at gcc dot gnu dot org 2006-05-17 01:16 --- Subject: Bug 27373 Author: dberlin Date: Wed May 17 01:16:08 2006 New Revision: 113840 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=113840 Log: 2006-05-16 Daniel Berlin <[EMAIL PROTECTED]> Fix PR tree-optimization/27373 * tree-ssa-forwprop.c: (forward_propagate_addr_expr_1): Add argument. (forward_propagate_addr_expr): Update call. Added: trunk/gcc/testsuite/gcc.c-torture/compile/pr27373.c Modified: trunk/gcc/ChangeLog trunk/gcc/tree-ssa-forwprop.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27373
[Bug tree-optimization/27373] [4.2 Regression] ICE: add_virtual_operand with pointers to arrays
--- Comment #9 from dberlin at gcc dot gnu dot org 2006-05-17 12:07 --- Fixed -- dberlin at gcc dot gnu dot org changed: What|Removed |Added Status|NEW |RESOLVED Resolution||FIXED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27373
[Bug tree-optimization/27341] [4.2 Regression] ICE in in add_virtual_operand with complex types
--- Comment #8 from dberlin at gcc dot gnu dot org 2006-06-01 12:22 --- The SMT related stuff is a red herring. Someone is not marking things for renaming when they should be. The following patch will show that (it disables the used alone code). Index: tree-ssa-operands.c === --- tree-ssa-operands.c (revision 114136) +++ tree-ssa-operands.c (working copy) @@ -1294,12 +1294,12 @@ add_virtual_operand (tree var, stmt_ann_ || none_added || (TREE_CODE (var) == SYMBOL_MEMORY_TAG && for_clobber - && SMT_USED_ALONE (var))) + /*&& SMT_USED_ALONE (var)*/)) { /* Every bare SMT def we add should have SMT_USED_ALONE set on it, or else we will get the wrong answer on clobbers. */ - if (none_added + if (0 && none_added && !updating_used_alone && aliases_computed_p && TREE_CODE (var) == SYMBOL_MEMORY_TAG) gcc_assert (SMT_USED_ALONE (var)); -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27341
[Bug target/27855] reassociation pass produces ~30% slower matrix multiplication code
--- Comment #10 from dberlin at gcc dot gnu dot org 2006-06-05 15:57 --- (In reply to comment #9) > This thread is moving dangerously close to work in progress.. :-) > I'll have something more definitive to say about it in a few weeks, but I'm > looking at doing significant register pressure reduction at out of ssa time as > a component of a larger hunk of work. Just be careful. The last time i tried something like this, it produced good code on x86, and really crappy code everywhere else. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27855
[Bug tree-optimization/27809] inefficient gimplification of globals
--- Comment #4 from dberlin at gcc dot gnu dot org 2006-06-13 14:26 --- gimplification is almost certainly the wrong place to be doing the kind of dataflow we'd need to determine where we could insert load/save pairs of globals. Really. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27809
[Bug tree-optimization/5035] Incorrectly produces '`' might be used uninitialized in this function'
--- Comment #13 from dberlin at gcc dot gnu dot org 2006-06-13 15:22 --- Some year we'll have to use the control dependence graph to see if all the conditions are the same :) -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=5035
[Bug tree-optimization/28003] [4.2 Regression] optimizer bug
--- Comment #6 from dberlin at gcc dot gnu dot org 2006-06-13 17:15 --- So it should have been marked global, and should alias the global var, but apparently the global var doesn't pop into it's alias set -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28003
[Bug tree-optimization/27341] [4.2 Regression] ICE in in add_virtual_operand with complex types
--- Comment #10 from dberlin at gcc dot gnu dot org 2006-06-15 14:35 --- Uh, nobody told me it was exposed by my patch, and it's certainly not in the bug history, or else i would be working on the bug. In fact, as comment 8 shows, even if you disable the code i added in 2006-02-20, an ICE still occurs. I'll look at this bug anyway -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27341
[Bug tree-optimization/27341] [4.2 Regression] ICE in in add_virtual_operand with complex types
--- Comment #11 from dberlin at gcc dot gnu dot org 2006-06-15 15:04 --- This should fix it It looks like gimplify_val never calls mark_new_vars_to_rename, but may create new statements that nothing else gets a handle to. Index: tree-cfg.c === --- tree-cfg.c (revision 114136) +++ tree-cfg.c (working copy) @@ -5584,6 +5584,8 @@ gimplify_val (block_stmt_iterator *bsi, TREE_BLOCK (new_stmt) = TREE_BLOCK (orig_stmt); bsi_insert_before (bsi, new_stmt, BSI_SAME_STMT); + if (in_ssa_p) +mark_new_vars_to_rename (new_stmt); return t; } I'll look at this bug anyway -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27341
[Bug tree-optimization/27341] [4.2 Regression] ICE in in add_virtual_operand with complex types
--- Comment #13 from dberlin at gcc dot gnu dot org 2006-06-19 14:34 --- Subject: Bug 27341 Author: dberlin Date: Mon Jun 19 14:33:46 2006 New Revision: 114771 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=114771 Log: 2006-06-19 Daniel Berlin <[EMAIL PROTECTED]> Fix PR tree-optimization/27341 * tree-cfg.c (gimplify_val): Call mark_new_vars_to_rename on the statement we get. * tree-complex.c (pass_lower_complex): Update SMT usage. Added: trunk/gcc/testsuite/gcc.c-torture/compile/pr27341-1.c trunk/gcc/testsuite/gcc.c-torture/compile/pr27341-2.c Modified: trunk/gcc/ChangeLog trunk/gcc/tree-cfg.c trunk/gcc/tree-complex.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27341
[Bug tree-optimization/27341] [4.2 Regression] ICE in in add_virtual_operand with complex types
--- Comment #14 from dberlin at gcc dot gnu dot org 2006-06-19 14:34 --- Fixed -- dberlin at gcc dot gnu dot org changed: What|Removed |Added Status|NEW |RESOLVED Resolution||FIXED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27341
[Bug middle-end/38204] PRE for post dominating expressions
--- Comment #2 from dberlin at gcc dot gnu dot org 2008-11-21 16:55 --- (In reply to comment #0) > For this function: > int test (int a, int b, int c, int g) > { > int d, e; > if (a) > d = b * c; > else > d = b - c; > e = b * c + g; > return d + e; > } > > the multiply expression is moved to both branches of the "if", it would be > better to move it before the "if". Intel's compiler does that. > Moving it before the if is a code size optimization that also happens to extend the lifetime of the multiply. So "better" is a relative term. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38204
[Bug tree-optimization/36792] [4.4 Regression] Revision 137631 causes many failures
--- Comment #12 from dberlin at gcc dot gnu dot org 2008-12-10 20:15 --- Subject: Bug 36792 Author: dberlin Date: Wed Dec 10 20:13:39 2008 New Revision: 142659 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=142659 Log: 2008-12-10 Daniel Berlin <[EMAIL PROTECTED]> PR tree-optimization/36792 * tree-ssa-pre.c (compute_avail): Don't insert defs into maximal set. Modified: trunk/gcc/ChangeLog trunk/gcc/testsuite/ChangeLog trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-10.c trunk/gcc/tree-ssa-pre.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36792
[Bug tree-optimization/23382] [4.1 Regression] Does not remove the old HEAP virtual variables in clobbered
--- Comment #9 from dberlin at gcc dot gnu dot org 2005-11-08 16:34 --- Subject: Bug 23382 Author: dberlin Date: Tue Nov 8 16:34:48 2005 New Revision: 106643 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=106643 Log: 2005-11-08 Daniel Berlin <[EMAIL PROTECTED]> Fix PR tree-optimization/23382 * tree-ssa-alias.c (compute_may_aliases): Call delete_old_heap_vars. * tree-dfa.c (referenced_var_remove): New function. * tree-ssa.c (delete_tree_ssa): Call delete_old_heap_vars. * tree-flow.h (referenced_var_remove): Add prototype. (delete_old_heap_vars): Ditto. * tree-ssa-structalias.c (heapvars): New variable. (oldheapvars): Ditto. (get_constraint_for): Put heap vars on heapvars list. (delete_old_heap_vars): New function. Added: trunk/gcc/testsuite/gcc.dg/tree-ssa/pr23382.c Modified: trunk/gcc/ChangeLog trunk/gcc/tree-dfa.c trunk/gcc/tree-flow.h trunk/gcc/tree-ssa-alias.c trunk/gcc/tree-ssa-structalias.c trunk/gcc/tree-ssa.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23382
[Bug tree-optimization/23382] [4.1 Regression] Does not remove the old HEAP virtual variables in clobbered
--- Comment #10 from dberlin at gcc dot gnu dot org 2005-11-08 16:36 --- Fixed -- dberlin at gcc dot gnu dot org changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution||FIXED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23382
[Bug rtl-optimization/24762] [killloop-branch] code motion of non-invariant expressions with hard registers.
--- Comment #6 from dberlin at gcc dot gnu dot org 2005-11-09 22:53 --- 1. Call clobbers aren't definitions. They are clobbers (IE kills). They do not generate a new value, they simply specify the old value is dead. Thus, you don't mean to say "df.c assumes call clobbers ...", because it's not an assumption. 2. The patch is actually an incorrect workaround. The real problem is that df.c on mainline doesn't get reaching definitions right for a number of reasons. For example, explicit clobbers in CALL_INSN_FUNCTION_USAGE but *not* in regs_invalidated_by_call will be treated as gen's, because they don't fall into the special case in df_bb_rd_local_compute. But they are not gen's. Have you tried making sure CLOBBER's don't get into the rd_gen set? I imagine that will fix your bug. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24762
[Bug rtl-optimization/24762] [killloop-branch] code motion of non-invariant expressions with hard registers.
--- Comment #7 from dberlin at gcc dot gnu dot org 2005-11-09 22:57 --- There are also a ton of other bugs related to hard regs in reaching definitions on df.c in mainline, i'm just guessing. Try the df.c from the dataflow-branch, and see if it fixes the bug, because honestly, i think you are barking up the wrong tree here. Clobbers are most *certainly* not new definitions. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24762
[Bug rtl-optimization/24762] [killloop-branch] code motion of non-invariant expressions with hard registers.
--- Comment #9 from dberlin at gcc dot gnu dot org 2005-11-09 23:30 --- Okay, well, there are also bugs in df.c on mainline in regards to not creating uses for "always-live" registers and registers that are live over eh edges, for example. (It does none of this). Seriously. Hard regs are very badly broken in mainline df.c in terms of liveness and use-def/def-use chains. Steven tells me flow.c gets liveness for your particular example wrong too though. In the dataflow branch df.c, we would add a use for the "live on entry to eh" regs, in the artifical uses code for eh blocks, and it would just work. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24762
[Bug c++/23171] [4.1 Regression] ICE on pointer initialization with C99 initializer
--- Comment #11 from dberlin at gcc dot gnu dot org 2005-11-14 18:14 --- Mark, the frontend is producing the address of a constructor, and nothing in the middle end used to be really analyzing static iniatlizers which is why it didn't break before (those that do try to look at them would give up in this case, but static vars analysis can't give up without destroying the results of the entire analysis) IMHO, this easier to fix in the frontend than in the middle end, by simply not producing &CONSTRUCTOR. What exactly is ADDRESSOF(CONSTRUCTOR) anyway? ISTM it should require a temporary variable to evaluate. However, we can't GIMPLIFY it and do that for you because it's a static initializer (and we don't gimplify those), so it's either teach *every single thing that wants to look at DECL_INITIAL for a static initializer* what ADDRESSOF(CONSTUCTOR) is supposed to mean, or make the frontend do something like split it into two variables. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23171
[Bug tree-optimization/24309] [4.1 Regression] ICE with -O3 -ftree-loop-linear
--- Comment #10 from dberlin at gcc dot gnu dot org 2005-11-14 18:18 --- It probably did *nothing at all* before the merge. The ICE is not too hard to fix, i just haven't gotten to it yet I will hopefully soon. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24309
[Bug rtl-optimization/24762] [killloop-branch] code motion of non-invariant expressions with hard registers.
--- Comment #14 from dberlin at gcc dot gnu dot org 2005-11-14 23:10 --- Send me a dump of df_analyze (df, -1, DF_LR | DF_HARD_REGS | DF_ARTIFICIAL_USES), and point out what you say is wrong and i'll make it right. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24762
[Bug tree-optimization/25291] [4.2 Regression] ICE in tree-check add_call_clobber_ops
--- Comment #3 from dberlin at gcc dot gnu dot org 2005-12-07 14:05 --- Mine -- dberlin at gcc dot gnu dot org changed: What|Removed |Added AssignedTo|unassigned at gcc dot gnu |dberlin at gcc dot gnu dot |dot org |org Status|UNCONFIRMED |ASSIGNED Ever Confirmed|0 |1 Last reconfirmed|-00-00 00:00:00 |2005-12-07 14:05:19 date|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25291
[Bug tree-optimization/25291] [4.2 Regression] ICE in tree-check add_call_clobber_ops
--- Comment #4 from dberlin at gcc dot gnu dot org 2005-12-07 16:39 --- Subject: Bug 25291 Author: dberlin Date: Wed Dec 7 16:39:33 2005 New Revision: 108168 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=108168 Log: 2005-12-07 Daniel Berlin <[EMAIL PROTECTED]> Fix PR tree-optimization/25291 * tree-ssa-operands.c (add_call_clobber_ops): Remove redundant and crashing check. Modified: trunk/gcc/ChangeLog trunk/gcc/tree-ssa-operands.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25291
[Bug tree-optimization/25291] [4.2 Regression] ICE in tree-check add_call_clobber_ops
--- Comment #5 from dberlin at gcc dot gnu dot org 2005-12-07 16:40 --- Fixed -- dberlin at gcc dot gnu dot org changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution||FIXED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25291
[Bug tree-optimization/25394] [4.2 Regression] libgcc2.c:2033: ICE: tree check: expected tree that contains 'decl common' structure, have 'name_memory_tag'
--- Comment #1 from dberlin at gcc dot gnu dot org 2005-12-13 18:14 --- Created an attachment (id=10473) --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=10473&action=view) Patch Please give this a try, tell me if it works -- dberlin at gcc dot gnu dot org changed: What|Removed |Added AssignedTo|unassigned at gcc dot gnu |dberlin at gcc dot gnu dot |dot org |org Status|UNCONFIRMED |ASSIGNED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25394
[Bug tree-optimization/23619] Missed pre opportunity
--- Comment #11 from dberlin at gcc dot gnu dot org 2005-12-15 15:04 --- This should be fixed now with the PRE patches committed and the reassocpatches committed. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23619
[Bug tree-optimization/25394] [4.2 Regression] libgcc2.c:2033: ICE: tree check: expected tree that contains 'decl common' structure, have 'name_memory_tag'
--- Comment #9 from dberlin at gcc dot gnu dot org 2005-12-28 14:09 --- Subject: Bug 25394 Author: dberlin Date: Wed Dec 28 14:09:28 2005 New Revision: 109109 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=109109 Log: 2005-12-28 Daniel Berlin <[EMAIL PROTECTED]> Fix PR tree-optimization/25394 * fold-const.c (fold_checksum_tree): Guard portions of checksumming with correct structure checks. Modified: trunk/gcc/ChangeLog trunk/gcc/fold-const.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25394
[Bug tree-optimization/25394] [4.2 Regression] libgcc2.c:2033: ICE: tree check: expected tree that contains 'decl common' structure, have 'name_memory_tag'
--- Comment #10 from dberlin at gcc dot gnu dot org 2005-12-28 14:10 --- Fixed -- dberlin at gcc dot gnu dot org changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution||FIXED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25394
[Bug tree-optimization/23455] tree load PRE is not working properly
--- Comment #9 from dberlin at gcc dot gnu dot org 2006-01-03 18:29 --- Load PRE on globals is going to take a while, because we do some stupid things in hashing (like hashing tcc_declaration's by pointer, instead of DECL_UID). -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23455
[Bug tree-optimization/24001] Simple redundancy not eliminated
--- Comment #6 from dberlin at gcc dot gnu dot org 2006-01-03 18:39 --- You are confused about what load PRE does. It will not lift these load because it is not partially redundant. You are looking for some sort of generic code hoister. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24001
[Bug tree-optimization/22415] [4.0 Regression] ICE in coalesce_abnormal_edges
--- Comment #9 from dberlin at gcc dot gnu dot org 2006-01-12 23:13 --- That would fix it perfectly fine, i'll bootstrap and test it. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=22415
[Bug tree-optimization/25771] [4.2 Regression] ice in coalesce_abnormal_edges, at tree-outof-ssa.c:621
--- Comment #4 from dberlin at gcc dot gnu dot org 2006-01-12 23:18 --- Mine, testing a patch. -- dberlin at gcc dot gnu dot org changed: What|Removed |Added AssignedTo|unassigned at gcc dot gnu |dberlin at gcc dot gnu dot |dot org |org Status|NEW |ASSIGNED Last reconfirmed|2006-01-12 21:48:14 |2006-01-12 23:18:07 date|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25771
[Bug tree-optimization/25771] [4.2 Regression] ice in coalesce_abnormal_edges, at tree-outof-ssa.c:621
--- Comment #5 from dberlin at gcc dot gnu dot org 2006-01-13 16:00 --- Subject: Bug 25771 Author: dberlin Date: Fri Jan 13 16:00:13 2006 New Revision: 109669 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=109669 Log: 2006-01-13 Daniel Berlin <[EMAIL PROTECTED]> PR tree-optimization/25771 * tree-ssa-pre.c (insert_extra_phis): Don't insert merges of abnormal SSA_NAMES. Added: trunk/gcc/testsuite/g++.dg/tree-ssa/pr25771.C Modified: trunk/gcc/ChangeLog trunk/gcc/testsuite/ChangeLog trunk/gcc/tree-ssa-pre.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25771
[Bug tree-optimization/25771] [4.2 Regression] ice in coalesce_abnormal_edges, at tree-outof-ssa.c:621
--- Comment #6 from dberlin at gcc dot gnu dot org 2006-01-14 21:19 --- Fixed -- dberlin at gcc dot gnu dot org changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution||FIXED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25771
[Bug tree-optimization/28544] [4.2 regression] ICE in add_virtual_operand, at tree-ssa-operands.c:1309
--- Comment #8 from dberlin at gcc dot gnu dot org 2006-08-09 14:38 --- I can trivially fix this, but the code isn't going to do what you want when i'm done, since it is an aliasing violation :) The assert in question just happens to be good at catching them. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28544
[Bug tree-optimization/28003] [4.2 Regression] optimizer bug
-- dberlin at gcc dot gnu dot org changed: What|Removed |Added AssignedTo|unassigned at gcc dot gnu |dberlin at gcc dot gnu dot |dot org |org Status|NEW |ASSIGNED Last reconfirmed|2006-06-29 19:47:20 |2006-08-09 14:39:55 date|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28003
[Bug tree-optimization/28544] [4.2 regression] ICE in add_virtual_operand, at tree-ssa-operands.c:1309
-- dberlin at gcc dot gnu dot org changed: What|Removed |Added AssignedTo|unassigned at gcc dot gnu |dberlin at gcc dot gnu dot |dot org |org Status|NEW |ASSIGNED Last reconfirmed|2006-07-30 14:44:23 |2006-08-09 14:40:27 date|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28544
[Bug web/28714] Bugzilla mail sent from invalid address
--- Comment #4 from dberlin at gcc dot gnu dot org 2006-08-18 02:41 --- Should be fixed now -- dberlin at gcc dot gnu dot org changed: What|Removed |Added Status|UNCONFIRMED |RESOLVED Resolution||FIXED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28714
[Bug tree-optimization/28778] [4.0/4.1/4.2 Regression] alias bug with cast and call clobbered
--- Comment #7 from dberlin at gcc dot gnu dot org 2006-08-19 14:10 --- This looks like it has been broken for a long time. Can someone add an alias dump? -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28778
[Bug tree-optimization/28003] [4.2 Regression] optimizer bug
--- Comment #11 from dberlin at gcc dot gnu dot org 2006-08-21 02:16 --- This is impressive. We add b as a may alias to the SMT, then it disappears from the list before call clobbering! -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28003
[Bug tree-optimization/28003] [4.2 Regression] optimizer bug
--- Comment #12 from dberlin at gcc dot gnu dot org 2006-08-22 14:04 --- Subject: Bug 28003 Author: dberlin Date: Tue Aug 22 14:04:16 2006 New Revision: 116323 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=116323 Log: 2006-08-22 Daniel Berlin <[EMAIL PROTECTED]> PR tree-optimization/28003 * tree-ssa-alias.c (compute_may_aliases): Compute call clobbered before grouping aliases. Added: trunk/gcc/testsuite/g++.dg/tree-ssa/pr28003.C Modified: trunk/gcc/ChangeLog trunk/gcc/tree-ssa-alias.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28003
[Bug tree-optimization/28003] [4.2 Regression] optimizer bug
--- Comment #13 from dberlin at gcc dot gnu dot org 2006-08-22 14:05 --- Fixed -- dberlin at gcc dot gnu dot org changed: What|Removed |Added AssignedTo|dberlin at gcc dot gnu dot |unassigned at gcc dot gnu |org |dot org Status|ASSIGNED|NEW http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28003
[Bug tree-optimization/28003] [4.2 Regression] optimizer bug
--- Comment #14 from dberlin at gcc dot gnu dot org 2006-08-22 14:05 --- Fixed -- dberlin at gcc dot gnu dot org changed: What|Removed |Added Status|NEW |RESOLVED Resolution||FIXED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28003
[Bug tree-optimization/28807] [4.2 Regression] wrong code with may_alias and structs
--- Comment #1 from dberlin at gcc dot gnu dot org 2006-08-22 18:18 --- Add an alias dump so we can see what things think of all this? -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28807
[Bug tree-optimization/28868] [4.0/4.1/4.2 Regression] Not elimintating the PHIs which have the same agruments
--- Comment #6 from dberlin at gcc dot gnu dot org 2006-08-29 14:59 --- SCCVN comes up with Value numbers: d_2 = c_1 c_7 = b_6 d_8 = b_6 c_10 = a_9 d_11 = a_9 where # PRED: 3 (fallthru,exec) 4 (fallthru,exec) # dD.1526_2 = PHI ; # cD.1525_1 = PHI ; ... As a result, once integrated into PRE/FRE, it will eliminate uses of the d_2 phi with the c_1 phi, which is what you want. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28868
[Bug target/19087] Overflowed address in dwarf debug line information
--- Comment #24 from dberlin at gcc dot gnu dot org 2006-09-20 00:00 --- You guys should be aware that dwarf2/3 has a field in the header of each dwarf compilation unit labeled "address size" that tells what the address size for that compilation unit is. If this is set to 4, you should be able to use 4 byte addresses and any conforming dwarf2 reader will understand it and use it to determine how many bytes the address forms (DW_FORM_addr, etc) use. See section 7.5.1 of the DWARF3 standard. This is the way the consumer is supposed to know what the address size in a dwarf2 is (there is also a way to tell the consumer what the offset size should be for file offsets, in case you want to have really large debug info on a machine with < 8 byte *addresses*), i'm not sure why you think you need an extra note. See the rest of the DWARF2/3 specification for more details. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19087
[Bug tree-optimization/29156] [4.2 Regression] Misscompilation due to struct alias
--- Comment #2 from dberlin at gcc dot gnu dot org 2006-09-21 02:32 --- So, actually, i'm pretty sure they should have the same SMT, because they should be in the same alias set. Why do they get different SMT's? -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29156
[Bug tree-optimization/29415] [4.2 regression] ] bad code reordering around inline asm block
--- Comment #7 from dberlin at gcc dot gnu dot org 2006-10-11 02:43 --- Actually, AFAICT this is a variant of the struct aliasing bug zdenek reported. The real problem is that we eliminate the false aliases and because their is no real addressable variable here, the asm's miss out on the SMT's. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29415
[Bug tree-optimization/29415] [4.2 regression] ] bad code reordering around inline asm block
--- Comment #8 from dberlin at gcc dot gnu dot org 2006-10-11 02:46 --- I've verified my fix for the other two bugs will fix this (sorry that one is taking so long). -- dberlin at gcc dot gnu dot org changed: What|Removed |Added Last reconfirmed|2006-10-11 01:05:16 |2006-10-11 02:46:10 date|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29415
[Bug tree-optimization/29415] [4.2 Regression] bad code reordering around inline asm block
--- Comment #10 from dberlin at gcc dot gnu dot org 2006-10-13 17:49 --- mine -- dberlin at gcc dot gnu dot org changed: What|Removed |Added AssignedTo|unassigned at gcc dot gnu |dberlin at gcc dot gnu dot |dot org |org Status|NEW |ASSIGNED Last reconfirmed|2006-10-11 02:46:10 |2006-10-13 17:49:17 date|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29415
[Bug tree-optimization/28778] [4.0/4.1/4.2 Regression] alias bug with cast and call clobbered
--- Comment #42 from dberlin at gcc dot gnu dot org 2006-10-13 17:50 --- mine -- dberlin at gcc dot gnu dot org changed: What|Removed |Added AssignedTo|unassigned at gcc dot gnu |dberlin at gcc dot gnu dot |dot org |org Status|NEW |ASSIGNED Last reconfirmed|2006-08-25 19:57:09 |2006-10-13 17:50:04 date|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28778
[Bug tree-optimization/29156] [4.2 Regression] Misscompilation with structs due to new struct alias
--- Comment #7 from dberlin at gcc dot gnu dot org 2006-10-13 17:51 --- Mine -- dberlin at gcc dot gnu dot org changed: What|Removed |Added AssignedTo|unassigned at gcc dot gnu |dberlin at gcc dot gnu dot |dot org |org Status|NEW |ASSIGNED Last reconfirmed|2006-09-20 22:26:43 |2006-10-13 17:51:36 date|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29156
[Bug tree-optimization/29156] [4.2 Regression] Misscompilation with structs due to new struct alias
--- Comment #8 from dberlin at gcc dot gnu dot org 2006-10-19 23:06 --- Subject: Bug 29156 Author: dberlin Date: Thu Oct 19 23:05:53 2006 New Revision: 117891 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=117891 Log: 2006-10-19 Daniel Berlin <[EMAIL PROTECTED]> Fix PR tree-optimization/28778 Fix PR tree-optimization/29156 Fix PR tree-optimization/29415 * tree.h (DECL_PTA_ARTIFICIAL): New macro. (tree_decl_with_vis): Add artificial_pta_var flag. * tree-ssa-alias.c (is_escape_site): Remove alias info argument, pushed into callers. * tree-ssa-structalias.c (nonlocal_for_type): New variable. (nonlocal_all): Ditto. (struct variable_info): Add directly_dereferenced member. (var_escaped_vars): New variable. (escaped_vars_tree): Ditto. (escaped_vars_id): Ditto. (nonlocal_vars_id): Ditto. (new_var_info): Set directly_dereferenced. (graph_size): New variable (build_constraint_graph): Use graph_size. (solve_graph): Don't process constraints that cannot change the solution, don't try to propagate an empty solution to our successors. (process_constraint): Set directly_dereferenced. (could_have_pointers): New function. (get_constraint_for_component_ref): Don't process STRING_CST. (nonlocal_lookup): New function. (nonlocal_insert): Ditto. (create_nonlocal_var): Ditto. (get_nonlocal_id_for_type): Ditto. (get_constraint_for): Allow results vector to be empty in the case of string constants. Handle results of calls properly. (update_alias_info): Update alias info stats on number and type of calls. (find_func_aliases): Use could_have_pointers. (make_constraint_from_escaped): Renamed from make_constraint_to_anything, and changed to make constraints from escape variable. (make_constraint_to_escaped): New function. (find_global_initializers): Ditto. (create_variable_info_for): Make constraint from escaped to any global variable, and from any global variable to the set of escaped vars. (intra_create_variable_infos): Deal with escaped instead of pointing to anything. (set_uids_in_ptset): Do type pruning on directly dereferenced variables. (find_what_p_points_to): Adjust call to set_uids_with_ptset. (init_base_vars): Fix comment, and initialize escaped_vars. (need_to_solve): Removed. (find_escape_constraints): New function. (expand_nonlocal_solutions): Ditto. (compute_points_to_sets): Call find_escape_constraints and expand_nonlocal_solutions. (delete_points_to_sets): Don't fall off the end of the graph. (init_alias_heapvars): Initialize nonlocal_for_type and nonlocal_all. (delete_alias_heapvars): Free nonlocal_for_type and null out nonlocal_all. Added: trunk/gcc/testsuite/gcc.c-torture/execute/pr28778.c trunk/gcc/testsuite/gcc.c-torture/execute/pr29156.c Modified: trunk/gcc/ChangeLog trunk/gcc/testsuite/gcc.dg/tree-ssa/pta-fp.c trunk/gcc/tree-ssa-alias.c trunk/gcc/tree-ssa-operands.c trunk/gcc/tree-ssa-structalias.c trunk/gcc/tree-ssa-structalias.h trunk/gcc/tree.h -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29156
[Bug tree-optimization/29415] [4.2 Regression] bad code reordering around inline asm block
--- Comment #11 from dberlin at gcc dot gnu dot org 2006-10-19 23:06 --- Subject: Bug 29415 Author: dberlin Date: Thu Oct 19 23:05:53 2006 New Revision: 117891 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=117891 Log: 2006-10-19 Daniel Berlin <[EMAIL PROTECTED]> Fix PR tree-optimization/28778 Fix PR tree-optimization/29156 Fix PR tree-optimization/29415 * tree.h (DECL_PTA_ARTIFICIAL): New macro. (tree_decl_with_vis): Add artificial_pta_var flag. * tree-ssa-alias.c (is_escape_site): Remove alias info argument, pushed into callers. * tree-ssa-structalias.c (nonlocal_for_type): New variable. (nonlocal_all): Ditto. (struct variable_info): Add directly_dereferenced member. (var_escaped_vars): New variable. (escaped_vars_tree): Ditto. (escaped_vars_id): Ditto. (nonlocal_vars_id): Ditto. (new_var_info): Set directly_dereferenced. (graph_size): New variable (build_constraint_graph): Use graph_size. (solve_graph): Don't process constraints that cannot change the solution, don't try to propagate an empty solution to our successors. (process_constraint): Set directly_dereferenced. (could_have_pointers): New function. (get_constraint_for_component_ref): Don't process STRING_CST. (nonlocal_lookup): New function. (nonlocal_insert): Ditto. (create_nonlocal_var): Ditto. (get_nonlocal_id_for_type): Ditto. (get_constraint_for): Allow results vector to be empty in the case of string constants. Handle results of calls properly. (update_alias_info): Update alias info stats on number and type of calls. (find_func_aliases): Use could_have_pointers. (make_constraint_from_escaped): Renamed from make_constraint_to_anything, and changed to make constraints from escape variable. (make_constraint_to_escaped): New function. (find_global_initializers): Ditto. (create_variable_info_for): Make constraint from escaped to any global variable, and from any global variable to the set of escaped vars. (intra_create_variable_infos): Deal with escaped instead of pointing to anything. (set_uids_in_ptset): Do type pruning on directly dereferenced variables. (find_what_p_points_to): Adjust call to set_uids_with_ptset. (init_base_vars): Fix comment, and initialize escaped_vars. (need_to_solve): Removed. (find_escape_constraints): New function. (expand_nonlocal_solutions): Ditto. (compute_points_to_sets): Call find_escape_constraints and expand_nonlocal_solutions. (delete_points_to_sets): Don't fall off the end of the graph. (init_alias_heapvars): Initialize nonlocal_for_type and nonlocal_all. (delete_alias_heapvars): Free nonlocal_for_type and null out nonlocal_all. Added: trunk/gcc/testsuite/gcc.c-torture/execute/pr28778.c trunk/gcc/testsuite/gcc.c-torture/execute/pr29156.c Modified: trunk/gcc/ChangeLog trunk/gcc/testsuite/gcc.dg/tree-ssa/pta-fp.c trunk/gcc/tree-ssa-alias.c trunk/gcc/tree-ssa-operands.c trunk/gcc/tree-ssa-structalias.c trunk/gcc/tree-ssa-structalias.h trunk/gcc/tree.h -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29415
[Bug tree-optimization/28778] [4.0/4.1/4.2 Regression] alias bug with cast and call clobbered
--- Comment #43 from dberlin at gcc dot gnu dot org 2006-10-19 23:06 --- Subject: Bug 28778 Author: dberlin Date: Thu Oct 19 23:05:53 2006 New Revision: 117891 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=117891 Log: 2006-10-19 Daniel Berlin <[EMAIL PROTECTED]> Fix PR tree-optimization/28778 Fix PR tree-optimization/29156 Fix PR tree-optimization/29415 * tree.h (DECL_PTA_ARTIFICIAL): New macro. (tree_decl_with_vis): Add artificial_pta_var flag. * tree-ssa-alias.c (is_escape_site): Remove alias info argument, pushed into callers. * tree-ssa-structalias.c (nonlocal_for_type): New variable. (nonlocal_all): Ditto. (struct variable_info): Add directly_dereferenced member. (var_escaped_vars): New variable. (escaped_vars_tree): Ditto. (escaped_vars_id): Ditto. (nonlocal_vars_id): Ditto. (new_var_info): Set directly_dereferenced. (graph_size): New variable (build_constraint_graph): Use graph_size. (solve_graph): Don't process constraints that cannot change the solution, don't try to propagate an empty solution to our successors. (process_constraint): Set directly_dereferenced. (could_have_pointers): New function. (get_constraint_for_component_ref): Don't process STRING_CST. (nonlocal_lookup): New function. (nonlocal_insert): Ditto. (create_nonlocal_var): Ditto. (get_nonlocal_id_for_type): Ditto. (get_constraint_for): Allow results vector to be empty in the case of string constants. Handle results of calls properly. (update_alias_info): Update alias info stats on number and type of calls. (find_func_aliases): Use could_have_pointers. (make_constraint_from_escaped): Renamed from make_constraint_to_anything, and changed to make constraints from escape variable. (make_constraint_to_escaped): New function. (find_global_initializers): Ditto. (create_variable_info_for): Make constraint from escaped to any global variable, and from any global variable to the set of escaped vars. (intra_create_variable_infos): Deal with escaped instead of pointing to anything. (set_uids_in_ptset): Do type pruning on directly dereferenced variables. (find_what_p_points_to): Adjust call to set_uids_with_ptset. (init_base_vars): Fix comment, and initialize escaped_vars. (need_to_solve): Removed. (find_escape_constraints): New function. (expand_nonlocal_solutions): Ditto. (compute_points_to_sets): Call find_escape_constraints and expand_nonlocal_solutions. (delete_points_to_sets): Don't fall off the end of the graph. (init_alias_heapvars): Initialize nonlocal_for_type and nonlocal_all. (delete_alias_heapvars): Free nonlocal_for_type and null out nonlocal_all. Added: trunk/gcc/testsuite/gcc.c-torture/execute/pr28778.c trunk/gcc/testsuite/gcc.c-torture/execute/pr29156.c Modified: trunk/gcc/ChangeLog trunk/gcc/testsuite/gcc.dg/tree-ssa/pta-fp.c trunk/gcc/tree-ssa-alias.c trunk/gcc/tree-ssa-operands.c trunk/gcc/tree-ssa-structalias.c trunk/gcc/tree-ssa-structalias.h trunk/gcc/tree.h -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28778
[Bug tree-optimization/28778] [4.0/4.1/4.2 Regression] alias bug with cast and call clobbered
--- Comment #44 from dberlin at gcc dot gnu dot org 2006-10-19 23:07 --- Fixed. -- dberlin at gcc dot gnu dot org changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution||FIXED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28778
[Bug tree-optimization/29156] [4.2 Regression] Misscompilation with structs due to new struct alias
--- Comment #9 from dberlin at gcc dot gnu dot org 2006-10-19 23:07 --- Fixed. -- dberlin at gcc dot gnu dot org changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution||FIXED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29156
[Bug tree-optimization/29415] [4.2 Regression] bad code reordering around inline asm block
--- Comment #12 from dberlin at gcc dot gnu dot org 2006-10-19 23:07 --- Fixed. -- dberlin at gcc dot gnu dot org changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution||FIXED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29415
[Bug tree-optimization/30630] Trunk GCC hangs while compiling cpu2k6/perlbench at -O2
--- Comment #3 from dberlin at gcc dot gnu dot org 2007-01-29 17:25 --- Subject: Bug 30630 Author: dberlin Date: Mon Jan 29 17:25:04 2007 New Revision: 121295 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=121295 Log: 2007-01-29 Daniel Berlin <[EMAIL PROTECTED]> PR tree-optimization/30630 * tree-ssa-structalias.c (do_complex_constraint): Mark correct variable as changed. Added: trunk/gcc/testsuite/gcc.c-torture/compile/20070129.c Modified: trunk/gcc/ChangeLog trunk/gcc/tree-ssa-structalias.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30630
[Bug tree-optimization/30630] Trunk GCC hangs while compiling cpu2k6/perlbench at -O2
--- Comment #4 from dberlin at gcc dot gnu dot org 2007-01-29 17:25 --- Fixed -- dberlin at gcc dot gnu dot org changed: What|Removed |Added Status|NEW |RESOLVED Resolution||FIXED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30630
[Bug c++/30567] -fPIC -O3 optimizer bug (32-bit target only)
--- Comment #11 from dberlin at gcc dot gnu dot org 2007-02-12 16:37 --- (In reply to comment #10) > Daniel, any idea? > None. This change actually made us more conservative with points-to, it certainly won't cause *more* things to be optimized away. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30567
[Bug target/30052] possible quadratic behaviour.
--- Comment #8 from dberlin at gcc dot gnu dot org 2007-02-12 20:47 --- Does this work on mainline with no real issue? If so, i'll try to backport the solver changes. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30052
[Bug tree-optimization/30559] [4.3 Regression] compiler loops forever with flag -O3
--- Comment #7 from dberlin at gcc dot gnu dot org 2007-02-19 19:34 --- Sorry, the fix was committed before the bug report was filed (IE ~5 minutes before). I forgot to mark this one closed. -- dberlin at gcc dot gnu dot org changed: What|Removed |Added Status|UNCONFIRMED |RESOLVED Resolution||FIXED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30559
[Bug tree-optimization/28544] [4.2 regression] ICE in add_virtual_operand, at tree-ssa-operands.c:1309
--- Comment #21 from dberlin at gcc dot gnu dot org 2007-02-19 23:41 --- (In reply to comment #20) > Is there a backport of the mainline patch that I could review, or ask another > maintainer to review for inclusion in 4.2? > > Thanks, > > -- Mark > The attached patch named "access_debugging.diff" should apply and work for 4.2. Let me know if you would like it there. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28544
[Bug c++/30567] -fPIC -O3 optimizer bug (32-bit target only)
--- Comment #15 from dberlin at gcc dot gnu dot org 2007-02-26 04:38 --- I'll happily confirm I can reproduce it on my i686-pc-linux-gnu machine -- dberlin at gcc dot gnu dot org changed: What|Removed |Added Status|WAITING |NEW Ever Confirmed|0 |1 Last reconfirmed|-00-00 00:00:00 |2007-02-26 04:38:22 date|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30567
[Bug tree-optimization/29922] [4.3 Regression] [Linux] ICE in insert_into_preds_of_block
--- Comment #20 from dberlin at gcc dot gnu dot org 2007-03-09 17:55 --- Uh, i think i accidentally fixed the reduced testcase with my recent alias patch (r122741). Are the others still failing? -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29922
[Bug tree-optimization/31090] Revision 121302 causes 30% performance regression
--- Comment #10 from dberlin at gcc dot gnu dot org 2007-03-09 23:48 --- (In reply to comment #7) > The obvoious difference is more precise alias information: > > -bar: Maximum number of VOPS needed per statement: 80 > +bar: Maximum number of VOPS needed per statement: 71 See, it was buggy before and still getting dup'd symbols into the points-to sets. In particular: 80 NMT.114, UID 1780, real8[0:], is addressable, is global, call clobbered (, is global var ), may aliases: { dyinv dxinv dzinv epsinv SMT.109 dyinv dxinv dzinv epsinv SMT.109 dyinv dxinv dzinv epsinv SMT.109 dyinv dxinv dzinv epsinv SMT.109 dyinv dxinv dzinv epsinv SMT.109 dyinv dxinv dzinv epsinv SMT.109 dyinv dxinv dzinv epsinv SMT.109 dyinv dxinv dzinv epsinv SMT.109 dyinv dxinv dzinv epsinv SMT.109 dyinv dxinv dzinv epsinv SMT.109 dyinv dxinv dzinv epsinv SMT.109 dyinv dxinv dzinv epsinv SMT.109 dyinv dxinv dzinv epsinv SMT.109 dyinv dxinv dzinv epsinv SMT.109 dyinv dxinv dzinv epsinv SMT.109 dyinv dxinv dzinv epsinv SMT.109 } Note it's the same set of symbols repeated 14 times vs 5 NMT.114, UID 1780, real8[0:], is addressable, is global, call clobbered (, is global var ), may aliases: { dyinv dxinv dzinv epsinv SMT.109 } > This caused different partitioning, and this caused your performance drop. Sorry, nothing i can do about this, there is no bug here (in fact, it just shows that the patch removed a bug) You need Diego to look at the partitioning algorithms to get your performance back. -- dberlin at gcc dot gnu dot org changed: What|Removed |Added CC||dnovillo at gcc dot gnu dot ||org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31090
[Bug tree-optimization/28544] [4.2 regression] ICE in add_virtual_operand, at tree-ssa-operands.c:1309
--- Comment #23 from dberlin at gcc dot gnu dot org 2007-03-12 19:09 --- Subject: Bug 28544 Author: dberlin Date: Mon Mar 12 19:09:05 2007 New Revision: 122857 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=122857 Log: 2007-03-12 Daniel Berlin <[EMAIL PROTECTED]> Fix PR tree-optimization/28544 * tree-ssa-operands.c (add_virtual_operand): Move assert triggering on aliasing violations into debugging define Modified: branches/gcc-4_2-branch/gcc/ChangeLog branches/gcc-4_2-branch/gcc/tree-ssa-operands.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28544
[Bug tree-optimization/28544] [4.2 regression] ICE in add_virtual_operand, at tree-ssa-operands.c:1309
--- Comment #24 from dberlin at gcc dot gnu dot org 2007-03-12 19:12 --- Fixed -- dberlin at gcc dot gnu dot org changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution||FIXED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28544
[Bug target/30052] [4.2 Regression] possible quadratic behaviour.
--- Comment #14 from dberlin at gcc dot gnu dot org 2007-03-14 15:12 --- (In reply to comment #13) > It's really all PTA memory. > > Mainline: > > tree PTA : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.00 ( 0%) wall > > 40 kB ( 0%) ggc > TOTAL : 2.18 1.05 3.44 > 48857 kB > > max. VM usage: 63MB > > 4.2: > > tree PTA : 18.41 (88%) usr 1.08 (53%) sys 20.32 (85%) wall > > 3903 kB ( 8%) ggc > TOTAL : 20.92 2.0223.94 > 48672 kB > > max. VM usage: 1.1GB > > 4.1.2 uses 56MB. I'll backport the changes (this is more or less copying tree-ssa-structalias.c from 4.3 to 4.2 and modifying the few things that changed in 4.3 :P) > -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30052
[Bug tree-optimization/29922] [4.3 Regression] [Linux] ICE in insert_into_preds_of_block
--- Comment #24 from dberlin at gcc dot gnu dot org 2007-03-17 23:07 --- Subject: Bug 29922 Author: dberlin Date: Sat Mar 17 23:07:34 2007 New Revision: 123029 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=123029 Log: 2007-03-16 Daniel Berlin <[EMAIL PROTECTED]> Fix PR tree-optimization/29922 * tree-ssa-pre.c (bb_bitmap_sets): Remove RVUSE_* members. (get_representative): Removed. (value_dies_in_block_x): Update for rvuse removal. (valid_in_sets): Update for renaming of vuses_dies_in_block_x. (compute_antic_aux): Handle when PHI nodes appear in non-single-successors. (dump_bitmap_of_names): Removed. (compute_antic_safe): Renamed and removed rvuse calculation. Calculate only antic safe. (insert_into_preds_of_block): Remove assert. (execute_pre): Update for renamed functions. (defer_or_phi_translate_block): New function. Modified: trunk/gcc/ChangeLog trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre12.c trunk/gcc/tree-ssa-pre.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29922
[Bug tree-optimization/29922] [4.3 Regression] [Linux] ICE in insert_into_preds_of_block
--- Comment #26 from dberlin at gcc dot gnu dot org 2007-03-17 23:18 --- Sorry for the delay. Fixed now. -- dberlin at gcc dot gnu dot org changed: What|Removed |Added Status|NEW |RESOLVED Resolution||FIXED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29922
[Bug tree-optimization/30089] Compiling FreeFem3d uses unreasonable amount of time and memory
--- Comment #24 from dberlin at gcc dot gnu dot org 2007-03-30 16:58 --- This is fixed now, rihgt? I forgot to add the PR number to the changelog. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30089
[Bug ada/31504] GCC error: in staticp, at tree.c:2017
--- Comment #1 from dberlin at gcc dot gnu dot org 2007-04-07 23:40 --- See on-list discussion, but basically, it should suffice to simply remove the assert, which will give the Ada frontend the same behavior it used to get. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31504
[Bug ada/31504] GCC error: in staticp, at tree.c:2017
--- Comment #2 from dberlin at gcc dot gnu dot org 2007-04-08 00:50 --- Patch was reverted -- dberlin at gcc dot gnu dot org changed: What|Removed |Added Status|UNCONFIRMED |RESOLVED Resolution||FIXED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31504
[Bug tree-optimization/16157] gcc fails to optimize redundant expression (reassocation)
--- Comment #3 from dberlin at gcc dot gnu dot org 2007-04-16 02:55 --- Don't remember if this is fixed, but not working anymore on it -- dberlin at gcc dot gnu dot org changed: What|Removed |Added AssignedTo|dberlin at gcc dot gnu dot |unassigned at gcc dot gnu |org |dot org Status|ASSIGNED|NEW http://gcc.gnu.org/bugzilla/show_bug.cgi?id=16157
[Bug middle-end/16187] ARRAY_REF should be used for pointers also
--- Comment #7 from dberlin at gcc dot gnu dot org 2007-04-16 02:56 --- The version I produced was turned down, and I have not had time to rewrite it to be what others wanted -- dberlin at gcc dot gnu dot org changed: What|Removed |Added AssignedTo|dberlin at gcc dot gnu dot |unassigned at gcc dot gnu |org |dot org Status|ASSIGNED|NEW http://gcc.gnu.org/bugzilla/show_bug.cgi?id=16187
[Bug tree-optimization/25809] missed PRE optimization - move "invariant casts" out of loops
--- Comment #3 from dberlin at gcc dot gnu dot org 2007-04-16 03:12 --- PRE actually would perform the optimization on these two cases, but it sees the cast as an induction variable. Found partial redundancy for expression (short unsigned int) VH.29 (VH.37) Skipping insertion of phi for partial redundancy: Looks like an induction variable I will change it to decide that only binary expressions are induction variables, for the moment. -- dberlin at gcc dot gnu dot org changed: What|Removed |Added AssignedTo|unassigned at gcc dot gnu |dberlin at gcc dot gnu dot |dot org |org Status|NEW |ASSIGNED Last reconfirmed|2006-01-17 11:47:14 |2007-04-16 03:12:10 date|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25809
[Bug middle-end/31068] ICE at -O1 -fipa-pta
--- Comment #2 from dberlin at gcc dot gnu dot org 2007-04-16 03:15 --- PS, I will fix this sometime after we have LTO. Until then, -fipa-pta is not worth it. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31068
[Bug tree-optimization/25809] missed PRE optimization - move "invariant casts" out of loops
--- Comment #4 from dberlin at gcc dot gnu dot org 2007-04-16 19:14 --- Doing cast motion actually causes about 25 *more* failures in the vectorizer testsuite. I'm closing this as won't fix since it seems there was no other reason to do this. -- dberlin at gcc dot gnu dot org changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution||WONTFIX http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25809
[Bug rtl-optimization/19580] [4.0/4.1/4.2/4.3 Regression] missed load/store motion
--- Comment #30 from dberlin at gcc dot gnu dot org 2007-04-17 06:53 --- Is this really still broken in mainline? At least as of Richard's last update, it wasn't -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19580
[Bug tree-optimization/30567] [4.2 Regression] -O3 optimizer bug
--- Comment #25 from dberlin at gcc dot gnu dot org 2007-04-25 03:14 --- (In reply to comment #23) > This is a regression. Danny? > It actually should get assigned anything as a points-to set, so the "bad" constraints are correct. We should also always get correct aliasing even if everything was assigned ANYTHING as a variable. Sadly, we don't in 4.2.0, as this case shows. I'm not going to get a chance to look at this for at least week, I have something taking priority this week. If you want to tackle it before then, I would suggest trying to see why we decide not to give the SFT's to the variable marked with anything. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30567
[Bug tree-optimization/30567] [4.2 Regression] -O3 optimizer bug
--- Comment #33 from dberlin at gcc dot gnu dot org 2007-04-25 19:45 --- I think richi said on IRC that the following backport from 4.3 will fix it (if so, it's the correct fix here) Index: tree-ssa-structalias.c === --- tree-ssa-structalias.c (revision 122853) +++ tree-ssa-structalias.c (working copy) @@ -3228,7 +3228,8 @@ update_alias_info (tree stmt, struct ali /* If the statement makes a function call, assume that pointer OP will be dereferenced in a store operation inside the called function. */ - if (get_call_expr_in (stmt)) + if (get_call_expr_in (stmt) + || stmt_escape_type == ESCAPE_STORED_IN_GLOBAL) { bitmap_set_bit (ai->dereferenced_ptrs_store, DECL_UID (var)); pi->is_dereferenced = 1; -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30567
[Bug tree-optimization/32723] [4.2 Regression] memory hog in solve_graph
--- Comment #7 from dberlin at gcc dot gnu dot org 2007-07-24 07:16 --- Didn't you commit the shared bitmap fix? -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32723
[Bug tree-optimization/30052] [4.2/4.3 Regression] points-to analysis slow and memory hungry
--- Comment #43 from dberlin at gcc dot gnu dot org 2007-07-26 18:03 --- On my current branch, which i will commit soon, i have tree PTA : 14.56 ( 1%) usr 0.57 ( 1%) sys 16.98 ( 1%) wall 26372 kB ( 2%) ggc tree alias analysis : 577.90 (26%) usr 8.72 ( 8%) sys 611.13 (24%) wall 108272 kB ( 7%) ggc I have looked through this bug report again, I also don't see PTA taking up your memory. (Alias analysis i will try to fix, but it's a bit tricky) What is happening is the memory is increasing slowly. It's not like PTA is suddenly allocating 1.5 gig. So your memory usage is not coming from PTA (at least, not in a way I can solve, unless you see a leak somewhere). It is much more likely someone is leaking memory. In short I have absolutely no plans to work on the memory hog portion of this bug, and deny that points-to analysis is "memory hungry" in 4.3 because i don't see it. -- dberlin at gcc dot gnu dot org changed: What|Removed |Added Keywords|memory-hog | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30052
[Bug tree-optimization/32722] [4.3 Regression] Bootstrap failure with -fno-tree-store-copy-prop
--- Comment #4 from dberlin at gcc dot gnu dot org 2007-08-10 01:37 --- This should be fixed now. I believe echristo bootstrapped with this flag just yesterday, in fact. -- dberlin at gcc dot gnu dot org changed: What|Removed |Added CC||echristo at apple dot com http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32722
[Bug tree-optimization/32722] [4.3 Regression] Bootstrap failure with -fno-tree-store-copy-prop
--- Comment #5 from dberlin at gcc dot gnu dot org 2007-08-10 01:39 --- This should be fixed now (it was a VN/PRE interaction) I believe echristo bootstrapped with this flag just yesterday, in fact. The testcase is certainly not crashing for me anymore Please reopen if it is still broken -- dberlin at gcc dot gnu dot org changed: What|Removed |Added Status|UNCONFIRMED |RESOLVED Resolution||FIXED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32722
[Bug middle-end/30610] huge memory consumption with -O3
--- Comment #4 from dberlin at gcc dot gnu dot org 2007-08-13 12:06 --- It takes 2 iterations, but it has come up with 144 thousand expressions -- dberlin at gcc dot gnu dot org changed: What|Removed |Added AssignedTo|unassigned at gcc dot gnu |dberlin at gcc dot gnu dot |dot org |org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30610
[Bug tree-optimization/32772] [4.3 Regression] error: found real variable when subvariables should have appeared
--- Comment #8 from dberlin at gcc dot gnu dot org 2007-08-19 23:23 --- Subject: Bug 32772 Author: dberlin Date: Sun Aug 19 23:23:29 2007 New Revision: 127629 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=127629 Log: 2007-08-19 Daniel Berlin <[EMAIL PROTECTED]> Fix PR 32772 Fix PR 32716 Fix PR 32328 Fix PR 32303 * tree-flow.h (struct stmt_ann_d): Remove makes_clobbering_call. * tree-ssa-alias.c (init_transitive_clobber_worklist): Add on_worklist argument and avoid adding things to worklist multiple times. (add_to_worklist): Ditto. (mark_aliases_call_clobbered): Mark entire structure clobbered if single SFT is clobbered. (set_initial_properties): Ditto. (compute_call_clobbered): Update for changes to function arguments. (create_overlap_variables_for): Always create SFT for offset 0. (create_structure_vars): Handle PHI's, since we are in SSA form at this point. * tree-ssa-loop-ivopts.c (get_ref_tag): Don't return subvars. * tree-ssa-operands.c (access_can_touch_variable): Don't handle TARGET_MEM_REF. (add_vars_for_offset): Figure out aliases from access + points-to. (add_virtual_operand): Use add_vars-for_offset. (get_tmr_operands): Update for NMT changes, rewrite to be correct. (add_call_clobber_ops): Remove makes_clobbering_call set. (get_expr_operands): Always pass through the INDIRECT_REF reference. * tree-ssa-structalias.c (struct constraint_graph): Remove variables member. Add pe, pe_rep, pointer_label, loc_label, pointed_by, points_to, address_taken, pt_used, number_incoming. (FIRST_ADDR_NODE): Removed. (merge_graph_nodes): Remove broken code for the moment. (init_graph): New function. (build_pred_graph): Remove code to init_graph. Add location equivalence support. (struct scc_info): Rename roots to deleted. (scc_visit): Ditto. (init_scc_info): Ditto (init_topo_info): Use graph->size. (compute_topo_order): Ditto. (do_da_constraint): Removed. (do_sd_constraint): Remove calls to find(). set_union_with_increment should always get 0 as last arg here. (do_complex_constraint): Replace do_da_constraint with assert. Stop calling find. (struct equiv_class_label): New. (pointer_equiv_class_table): Ditto. (location_equiv_class_table): Ditto. (equiv_class_label_hash): Ditto. (equiv_class_label_eq): Ditto (equiv_class_lookup): Ditto. (equiv_class_ladd): Ditto. (pointer_equiv_class): Ditto. (location_equiv_class): Ditto. (condense_visit): Rename and rewrite from label_visit to do only SCC related stuff for HU. (label_visit): Do HU work for HU. (perform_var_substitution): Update to do HU and location equivalence. (free_var_substitution_info): Update to free HU and location equivalence structures. */ (find_equivalent_node): Update for pointer but not location equivalence. (unite_pointer_equivalences): New function. (move_complex_constraints): Rewrite to only do moving. (rewrite_constraints): Split out of move_complex_constraints. (solve_graph): Use graph->size. (process_constraint_1): Add from_call argument, use it. Split *a = &b into two constraints. (process_constraint): Use new process_constraint_1. (get_constraint_for_component_ref): Handle bitmaxsize == -1 case. (get_constraint_for): Handle non-pointer integers properly. Remove code that used to handle structures. (handle_ptr_arith): Fix a few bugs in pointer arithmetic handling with unknown addends. (handle_rhs_call): New function. (find_func_aliases): Use handle_rhs_call. (set_uids_in_ptset): Add an assert. (set_used_smts): Fix bug in not considering unified vars. (compute_tbaa_pruning): Stop initing useless iteration_obstack. (compute_points_to_sets): Update for other function changes. (delete_points_to_sets): Ditto. (ipa_pta_execute): Ditto. (pass_ipa_pta): We need to update SSA after ipa_pta. Modified: trunk/gcc/ChangeLog trunk/gcc/tree-flow.h trunk/gcc/tree-ssa-alias.c trunk/gcc/tree-ssa-loop-ivopts.c trunk/gcc/tree-ssa-operands.c trunk/gcc/tree-ssa-structalias.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32772
[Bug tree-optimization/32303] [4.3 Regression] SPEC2006 447.dealII miscompiled at -O2
--- Comment #2 from dberlin at gcc dot gnu dot org 2007-08-19 23:23 --- Subject: Bug 32303 Author: dberlin Date: Sun Aug 19 23:23:29 2007 New Revision: 127629 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=127629 Log: 2007-08-19 Daniel Berlin <[EMAIL PROTECTED]> Fix PR 32772 Fix PR 32716 Fix PR 32328 Fix PR 32303 * tree-flow.h (struct stmt_ann_d): Remove makes_clobbering_call. * tree-ssa-alias.c (init_transitive_clobber_worklist): Add on_worklist argument and avoid adding things to worklist multiple times. (add_to_worklist): Ditto. (mark_aliases_call_clobbered): Mark entire structure clobbered if single SFT is clobbered. (set_initial_properties): Ditto. (compute_call_clobbered): Update for changes to function arguments. (create_overlap_variables_for): Always create SFT for offset 0. (create_structure_vars): Handle PHI's, since we are in SSA form at this point. * tree-ssa-loop-ivopts.c (get_ref_tag): Don't return subvars. * tree-ssa-operands.c (access_can_touch_variable): Don't handle TARGET_MEM_REF. (add_vars_for_offset): Figure out aliases from access + points-to. (add_virtual_operand): Use add_vars-for_offset. (get_tmr_operands): Update for NMT changes, rewrite to be correct. (add_call_clobber_ops): Remove makes_clobbering_call set. (get_expr_operands): Always pass through the INDIRECT_REF reference. * tree-ssa-structalias.c (struct constraint_graph): Remove variables member. Add pe, pe_rep, pointer_label, loc_label, pointed_by, points_to, address_taken, pt_used, number_incoming. (FIRST_ADDR_NODE): Removed. (merge_graph_nodes): Remove broken code for the moment. (init_graph): New function. (build_pred_graph): Remove code to init_graph. Add location equivalence support. (struct scc_info): Rename roots to deleted. (scc_visit): Ditto. (init_scc_info): Ditto (init_topo_info): Use graph->size. (compute_topo_order): Ditto. (do_da_constraint): Removed. (do_sd_constraint): Remove calls to find(). set_union_with_increment should always get 0 as last arg here. (do_complex_constraint): Replace do_da_constraint with assert. Stop calling find. (struct equiv_class_label): New. (pointer_equiv_class_table): Ditto. (location_equiv_class_table): Ditto. (equiv_class_label_hash): Ditto. (equiv_class_label_eq): Ditto (equiv_class_lookup): Ditto. (equiv_class_ladd): Ditto. (pointer_equiv_class): Ditto. (location_equiv_class): Ditto. (condense_visit): Rename and rewrite from label_visit to do only SCC related stuff for HU. (label_visit): Do HU work for HU. (perform_var_substitution): Update to do HU and location equivalence. (free_var_substitution_info): Update to free HU and location equivalence structures. */ (find_equivalent_node): Update for pointer but not location equivalence. (unite_pointer_equivalences): New function. (move_complex_constraints): Rewrite to only do moving. (rewrite_constraints): Split out of move_complex_constraints. (solve_graph): Use graph->size. (process_constraint_1): Add from_call argument, use it. Split *a = &b into two constraints. (process_constraint): Use new process_constraint_1. (get_constraint_for_component_ref): Handle bitmaxsize == -1 case. (get_constraint_for): Handle non-pointer integers properly. Remove code that used to handle structures. (handle_ptr_arith): Fix a few bugs in pointer arithmetic handling with unknown addends. (handle_rhs_call): New function. (find_func_aliases): Use handle_rhs_call. (set_uids_in_ptset): Add an assert. (set_used_smts): Fix bug in not considering unified vars. (compute_tbaa_pruning): Stop initing useless iteration_obstack. (compute_points_to_sets): Update for other function changes. (delete_points_to_sets): Ditto. (ipa_pta_execute): Ditto. (pass_ipa_pta): We need to update SSA after ipa_pta. Modified: trunk/gcc/ChangeLog trunk/gcc/tree-flow.h trunk/gcc/tree-ssa-alias.c trunk/gcc/tree-ssa-loop-ivopts.c trunk/gcc/tree-ssa-operands.c trunk/gcc/tree-ssa-structalias.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32303
[Bug tree-optimization/32328] [4.2/4.3 Regression] -fstrict-aliasing causes skipped code
--- Comment #21 from dberlin at gcc dot gnu dot org 2007-08-19 23:23 --- Subject: Bug 32328 Author: dberlin Date: Sun Aug 19 23:23:29 2007 New Revision: 127629 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=127629 Log: 2007-08-19 Daniel Berlin <[EMAIL PROTECTED]> Fix PR 32772 Fix PR 32716 Fix PR 32328 Fix PR 32303 * tree-flow.h (struct stmt_ann_d): Remove makes_clobbering_call. * tree-ssa-alias.c (init_transitive_clobber_worklist): Add on_worklist argument and avoid adding things to worklist multiple times. (add_to_worklist): Ditto. (mark_aliases_call_clobbered): Mark entire structure clobbered if single SFT is clobbered. (set_initial_properties): Ditto. (compute_call_clobbered): Update for changes to function arguments. (create_overlap_variables_for): Always create SFT for offset 0. (create_structure_vars): Handle PHI's, since we are in SSA form at this point. * tree-ssa-loop-ivopts.c (get_ref_tag): Don't return subvars. * tree-ssa-operands.c (access_can_touch_variable): Don't handle TARGET_MEM_REF. (add_vars_for_offset): Figure out aliases from access + points-to. (add_virtual_operand): Use add_vars-for_offset. (get_tmr_operands): Update for NMT changes, rewrite to be correct. (add_call_clobber_ops): Remove makes_clobbering_call set. (get_expr_operands): Always pass through the INDIRECT_REF reference. * tree-ssa-structalias.c (struct constraint_graph): Remove variables member. Add pe, pe_rep, pointer_label, loc_label, pointed_by, points_to, address_taken, pt_used, number_incoming. (FIRST_ADDR_NODE): Removed. (merge_graph_nodes): Remove broken code for the moment. (init_graph): New function. (build_pred_graph): Remove code to init_graph. Add location equivalence support. (struct scc_info): Rename roots to deleted. (scc_visit): Ditto. (init_scc_info): Ditto (init_topo_info): Use graph->size. (compute_topo_order): Ditto. (do_da_constraint): Removed. (do_sd_constraint): Remove calls to find(). set_union_with_increment should always get 0 as last arg here. (do_complex_constraint): Replace do_da_constraint with assert. Stop calling find. (struct equiv_class_label): New. (pointer_equiv_class_table): Ditto. (location_equiv_class_table): Ditto. (equiv_class_label_hash): Ditto. (equiv_class_label_eq): Ditto (equiv_class_lookup): Ditto. (equiv_class_ladd): Ditto. (pointer_equiv_class): Ditto. (location_equiv_class): Ditto. (condense_visit): Rename and rewrite from label_visit to do only SCC related stuff for HU. (label_visit): Do HU work for HU. (perform_var_substitution): Update to do HU and location equivalence. (free_var_substitution_info): Update to free HU and location equivalence structures. */ (find_equivalent_node): Update for pointer but not location equivalence. (unite_pointer_equivalences): New function. (move_complex_constraints): Rewrite to only do moving. (rewrite_constraints): Split out of move_complex_constraints. (solve_graph): Use graph->size. (process_constraint_1): Add from_call argument, use it. Split *a = &b into two constraints. (process_constraint): Use new process_constraint_1. (get_constraint_for_component_ref): Handle bitmaxsize == -1 case. (get_constraint_for): Handle non-pointer integers properly. Remove code that used to handle structures. (handle_ptr_arith): Fix a few bugs in pointer arithmetic handling with unknown addends. (handle_rhs_call): New function. (find_func_aliases): Use handle_rhs_call. (set_uids_in_ptset): Add an assert. (set_used_smts): Fix bug in not considering unified vars. (compute_tbaa_pruning): Stop initing useless iteration_obstack. (compute_points_to_sets): Update for other function changes. (delete_points_to_sets): Ditto. (ipa_pta_execute): Ditto. (pass_ipa_pta): We need to update SSA after ipa_pta. Modified: trunk/gcc/ChangeLog trunk/gcc/tree-flow.h trunk/gcc/tree-ssa-alias.c trunk/gcc/tree-ssa-loop-ivopts.c trunk/gcc/tree-ssa-operands.c trunk/gcc/tree-ssa-structalias.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32328
[Bug c++/32716] [4.2/4.3 Regression] Wrong code generation. Alias and C++ virtual bases problem.
--- Comment #8 from dberlin at gcc dot gnu dot org 2007-08-19 23:23 --- Subject: Bug 32716 Author: dberlin Date: Sun Aug 19 23:23:29 2007 New Revision: 127629 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=127629 Log: 2007-08-19 Daniel Berlin <[EMAIL PROTECTED]> Fix PR 32772 Fix PR 32716 Fix PR 32328 Fix PR 32303 * tree-flow.h (struct stmt_ann_d): Remove makes_clobbering_call. * tree-ssa-alias.c (init_transitive_clobber_worklist): Add on_worklist argument and avoid adding things to worklist multiple times. (add_to_worklist): Ditto. (mark_aliases_call_clobbered): Mark entire structure clobbered if single SFT is clobbered. (set_initial_properties): Ditto. (compute_call_clobbered): Update for changes to function arguments. (create_overlap_variables_for): Always create SFT for offset 0. (create_structure_vars): Handle PHI's, since we are in SSA form at this point. * tree-ssa-loop-ivopts.c (get_ref_tag): Don't return subvars. * tree-ssa-operands.c (access_can_touch_variable): Don't handle TARGET_MEM_REF. (add_vars_for_offset): Figure out aliases from access + points-to. (add_virtual_operand): Use add_vars-for_offset. (get_tmr_operands): Update for NMT changes, rewrite to be correct. (add_call_clobber_ops): Remove makes_clobbering_call set. (get_expr_operands): Always pass through the INDIRECT_REF reference. * tree-ssa-structalias.c (struct constraint_graph): Remove variables member. Add pe, pe_rep, pointer_label, loc_label, pointed_by, points_to, address_taken, pt_used, number_incoming. (FIRST_ADDR_NODE): Removed. (merge_graph_nodes): Remove broken code for the moment. (init_graph): New function. (build_pred_graph): Remove code to init_graph. Add location equivalence support. (struct scc_info): Rename roots to deleted. (scc_visit): Ditto. (init_scc_info): Ditto (init_topo_info): Use graph->size. (compute_topo_order): Ditto. (do_da_constraint): Removed. (do_sd_constraint): Remove calls to find(). set_union_with_increment should always get 0 as last arg here. (do_complex_constraint): Replace do_da_constraint with assert. Stop calling find. (struct equiv_class_label): New. (pointer_equiv_class_table): Ditto. (location_equiv_class_table): Ditto. (equiv_class_label_hash): Ditto. (equiv_class_label_eq): Ditto (equiv_class_lookup): Ditto. (equiv_class_ladd): Ditto. (pointer_equiv_class): Ditto. (location_equiv_class): Ditto. (condense_visit): Rename and rewrite from label_visit to do only SCC related stuff for HU. (label_visit): Do HU work for HU. (perform_var_substitution): Update to do HU and location equivalence. (free_var_substitution_info): Update to free HU and location equivalence structures. */ (find_equivalent_node): Update for pointer but not location equivalence. (unite_pointer_equivalences): New function. (move_complex_constraints): Rewrite to only do moving. (rewrite_constraints): Split out of move_complex_constraints. (solve_graph): Use graph->size. (process_constraint_1): Add from_call argument, use it. Split *a = &b into two constraints. (process_constraint): Use new process_constraint_1. (get_constraint_for_component_ref): Handle bitmaxsize == -1 case. (get_constraint_for): Handle non-pointer integers properly. Remove code that used to handle structures. (handle_ptr_arith): Fix a few bugs in pointer arithmetic handling with unknown addends. (handle_rhs_call): New function. (find_func_aliases): Use handle_rhs_call. (set_uids_in_ptset): Add an assert. (set_used_smts): Fix bug in not considering unified vars. (compute_tbaa_pruning): Stop initing useless iteration_obstack. (compute_points_to_sets): Update for other function changes. (delete_points_to_sets): Ditto. (ipa_pta_execute): Ditto. (pass_ipa_pta): We need to update SSA after ipa_pta. Modified: trunk/gcc/ChangeLog trunk/gcc/tree-flow.h trunk/gcc/tree-ssa-alias.c trunk/gcc/tree-ssa-loop-ivopts.c trunk/gcc/tree-ssa-operands.c trunk/gcc/tree-ssa-structalias.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32716
[Bug tree-optimization/32328] [4.2/4.3 Regression] -fstrict-aliasing causes skipped code
--- Comment #22 from dberlin at gcc dot gnu dot org 2007-08-20 01:54 --- All should be fixed -- dberlin at gcc dot gnu dot org changed: What|Removed |Added Status|NEW |RESOLVED Resolution||FIXED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32328