public inbox for gcc-bugs@sourceware.org help / color / mirror / Atom feed
* [Bug tree-optimization/17133] New: [3.5 Regression] wrong code with -ftree-loop-optimize @ 2004-08-21 20:58 belyshev at lubercy dot com 2004-08-21 21:13 ` [Bug tree-optimization/17133] [3.5 Regression] wrong code with -ftree-lim pinskia at gcc dot gnu dot org ` (9 more replies) 0 siblings, 10 replies; 13+ messages in thread From: belyshev at lubercy dot com @ 2004-08-21 20:58 UTC (permalink / raw) To: gcc-bugs use '-O1' to repeat: ------------------------------------------------------------------------------ extern void abort (void); int foo = 0; void *bar = 0; unsigned int baz = 100; void *pure_alloc () { void *res; while (1) { res = (void *) ((((unsigned int) (foo + bar))) & ~1); foo += 2; if (foo < baz) return res; foo = 0; } } int main () { pure_alloc (); if (!foo) abort (); return 0; } ------------------------------------------------------------------------------ -- Summary: [3.5 Regression] wrong code with -ftree-loop-optimize Product: gcc Version: 3.5.0 Status: UNCONFIRMED Keywords: wrong-code Severity: normal Priority: P2 Component: tree-optimization AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: belyshev at lubercy dot com CC: gcc-bugs at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=17133 ^ permalink raw reply [flat|nested] 13+ messages in thread
* [Bug tree-optimization/17133] [3.5 Regression] wrong code with -ftree-lim 2004-08-21 20:58 [Bug tree-optimization/17133] New: [3.5 Regression] wrong code with -ftree-loop-optimize belyshev at lubercy dot com @ 2004-08-21 21:13 ` pinskia at gcc dot gnu dot org 2004-08-31 23:49 ` belyshev at lubercy dot com ` (8 subsequent siblings) 9 siblings, 0 replies; 13+ messages in thread From: pinskia at gcc dot gnu dot org @ 2004-08-21 21:13 UTC (permalink / raw) To: gcc-bugs ------- Additional Comments From pinskia at gcc dot gnu dot org 2004-08-21 21:13 ------- Confirmed. -- What |Removed |Added ---------------------------------------------------------------------------- Severity|normal |critical Status|UNCONFIRMED |NEW Ever Confirmed| |1 Known to fail| |3.5.0 Known to work| |3.4.0 Last reconfirmed|0000-00-00 00:00:00 |2004-08-21 21:13:43 date| | Summary|[3.5 Regression] wrong code |[3.5 Regression] wrong code |with -ftree-loop-optimize |with -ftree-lim Target Milestone|--- |3.5.0 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=17133 ^ permalink raw reply [flat|nested] 13+ messages in thread
* [Bug tree-optimization/17133] [3.5 Regression] wrong code with -ftree-lim 2004-08-21 20:58 [Bug tree-optimization/17133] New: [3.5 Regression] wrong code with -ftree-loop-optimize belyshev at lubercy dot com 2004-08-21 21:13 ` [Bug tree-optimization/17133] [3.5 Regression] wrong code with -ftree-lim pinskia at gcc dot gnu dot org @ 2004-08-31 23:49 ` belyshev at lubercy dot com 2004-09-01 21:19 ` rakdver at atrey dot karlin dot mff dot cuni dot cz ` (7 subsequent siblings) 9 siblings, 0 replies; 13+ messages in thread From: belyshev at lubercy dot com @ 2004-08-31 23:49 UTC (permalink / raw) To: gcc-bugs ------- Additional Comments From belyshev at lubercy dot com 2004-08-31 23:49 ------- Zdenek, please take a look at this bug, it prevents emacs from working. -- What |Removed |Added ---------------------------------------------------------------------------- CC| |rakdver at atrey dot karlin | |dot mff dot cuni dot cz http://gcc.gnu.org/bugzilla/show_bug.cgi?id=17133 ^ permalink raw reply [flat|nested] 13+ messages in thread
* [Bug tree-optimization/17133] [3.5 Regression] wrong code with -ftree-lim 2004-08-21 20:58 [Bug tree-optimization/17133] New: [3.5 Regression] wrong code with -ftree-loop-optimize belyshev at lubercy dot com 2004-08-21 21:13 ` [Bug tree-optimization/17133] [3.5 Regression] wrong code with -ftree-lim pinskia at gcc dot gnu dot org 2004-08-31 23:49 ` belyshev at lubercy dot com @ 2004-09-01 21:19 ` rakdver at atrey dot karlin dot mff dot cuni dot cz 2004-09-05 9:02 ` rakdver at atrey dot karlin dot mff dot cuni dot cz ` (6 subsequent siblings) 9 siblings, 0 replies; 13+ messages in thread From: rakdver at atrey dot karlin dot mff dot cuni dot cz @ 2004-09-01 21:19 UTC (permalink / raw) To: gcc-bugs ------- Additional Comments From rakdver at atrey dot karlin dot mff dot cuni dot cz 2004-09-01 21:19 ------- Subject: Re: [3.5 Regression] wrong code with -ftree-lim Hello, > Zdenek, please take a look at this bug, it prevents emacs from working. the problem is as follows. This is the body of the loop before lim: # foo_1 = PHI <foo_2(0), foo_20(3)>; <L0>:; # VUSE <bar_3>; bar.0_4 = bar; # VUSE <foo_1>; foo.1_5 = foo; foo.2_6 = (unsigned int) foo.1_5; foo.3_7 = (void *) foo.2_6; T.4_8 = bar.0_4 + foo.3_7; T.5_9 = (int) T.4_8; T.6_10 = (unsigned int) T.5_9; T.7_11 = T.6_10 & 0fffffffe; res_12 = (void *) T.7_11; T.8_14 = foo.1_5 + 2; # V_MUST_DEF <foo_15>; foo = T.8_14; foo.2_17 = (unsigned int) T.8_14; # VUSE <baz_18>; baz.9_19 = baz; if (foo.2_17 < baz.9_19) goto <L1>; else goto <L2>; # SUCC: 3 [90.0%] (false,exec) 2 [10.0%] (true,exec) # BLOCK 2 # PRED: 1 [10.0%] (true,exec) <L1>:; return res_12; # SUCC: EXIT [100.0%] # BLOCK 3 # PRED: 1 [90.0%] (false,exec) <L2>:; # V_MUST_DEF <foo_20>; foo = 0; goto <bb 1> (<L0>); # SUCC: 1 [100.0%] (fallthru,dfs_back,exec) Note that foo_15 is not used anywhere; then lim has currently no way how to learn about the foo = T.8_14 statement, since it only traces def and use chains from the phi node defining foo_1. Ooops.... I currently do not know how to fix it, I will think about what the correct solution is. Zdenek -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=17133 ^ permalink raw reply [flat|nested] 13+ messages in thread
* [Bug tree-optimization/17133] [3.5 Regression] wrong code with -ftree-lim 2004-08-21 20:58 [Bug tree-optimization/17133] New: [3.5 Regression] wrong code with -ftree-loop-optimize belyshev at lubercy dot com ` (2 preceding siblings ...) 2004-09-01 21:19 ` rakdver at atrey dot karlin dot mff dot cuni dot cz @ 2004-09-05 9:02 ` rakdver at atrey dot karlin dot mff dot cuni dot cz 2004-09-08 18:37 ` pinskia at gcc dot gnu dot org ` (5 subsequent siblings) 9 siblings, 0 replies; 13+ messages in thread From: rakdver at atrey dot karlin dot mff dot cuni dot cz @ 2004-09-05 9:02 UTC (permalink / raw) To: gcc-bugs ------- Additional Comments From rakdver at atrey dot karlin dot mff dot cuni dot cz 2004-09-05 09:02 ------- Subject: Re: [3.5 Regression] wrong code with -ftree-lim Hello, here is the patch; I will submit it once it passes regtesting. Zdenek Index: Makefile.in =================================================================== RCS file: /cvs/gcc/gcc/gcc/Makefile.in,v retrieving revision 1.1370 diff -c -3 -p -r1.1370 Makefile.in *** Makefile.in 4 Sep 2004 03:26:56 -0000 1.1370 --- Makefile.in 4 Sep 2004 13:18:08 -0000 *************** tree-ssa-loop-manip.o : tree-ssa-loop-ma *** 1728,1734 **** tree-ssa-loop-im.o : tree-ssa-loop-im.c $(TREE_FLOW_H) $(CONFIG_H) \ $(SYSTEM_H) $(RTL_H) $(TREE_H) $(TM_P_H) $(CFGLOOP_H) domwalk.h $(PARAMS_H)\ output.h diagnostic.h $(TIMEVAR_H) $(TM_H) coretypes.h $(TREE_DUMP_H) \ ! tree-pass.h flags.h tree-ssa-alias.o : tree-ssa-alias.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \ $(RTL_H) $(TREE_H) $(TM_P_H) $(EXPR_H) $(GGC_H) tree-inline.h $(FLAGS_H) \ function.h $(TIMEVAR_H) tree-alias-common.h convert.h $(TM_H) coretypes.h \ --- 1728,1734 ---- tree-ssa-loop-im.o : tree-ssa-loop-im.c $(TREE_FLOW_H) $(CONFIG_H) \ $(SYSTEM_H) $(RTL_H) $(TREE_H) $(TM_P_H) $(CFGLOOP_H) domwalk.h $(PARAMS_H)\ output.h diagnostic.h $(TIMEVAR_H) $(TM_H) coretypes.h $(TREE_DUMP_H) \ ! tree-pass.h flags.h $(HASHTAB_H) tree-ssa-alias.o : tree-ssa-alias.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \ $(RTL_H) $(TREE_H) $(TM_P_H) $(EXPR_H) $(GGC_H) tree-inline.h $(FLAGS_H) \ function.h $(TIMEVAR_H) tree-alias-common.h convert.h $(TM_H) coretypes.h \ Index: tree-ssa-loop-im.c =================================================================== RCS file: /cvs/gcc/gcc/gcc/tree-ssa-loop-im.c,v retrieving revision 2.8 diff -c -3 -p -r2.8 tree-ssa-loop-im.c *** tree-ssa-loop-im.c 4 Sep 2004 03:26:57 -0000 2.8 --- tree-ssa-loop-im.c 4 Sep 2004 13:18:08 -0000 *************** Software Foundation, 59 Temple Place - S *** 37,42 **** --- 37,43 ---- #include "params.h" #include "tree-pass.h" #include "flags.h" + #include "hashtab.h" /* A type for the list of statements that have to be moved in order to be able to hoist an invariant computation. */ *************** struct lim_aux_data *** 78,90 **** #define LIM_DATA(STMT) ((struct lim_aux_data *) (stmt_ann (STMT)->common.aux)) ! /* Description of a memory reference for store motion. */ ! struct mem_ref { tree *ref; /* The reference itself. */ tree stmt; /* The statement in that it occurs. */ ! struct mem_ref *next; /* Next use in the chain. */ }; /* Minimum cost of an expensive expression. */ --- 79,104 ---- #define LIM_DATA(STMT) ((struct lim_aux_data *) (stmt_ann (STMT)->common.aux)) ! /* Description of a memory reference location for store motion. */ ! struct mem_ref_loc { tree *ref; /* The reference itself. */ tree stmt; /* The statement in that it occurs. */ ! struct mem_ref_loc *next; /* Next use in the chain. */ ! }; ! ! /* Description of a memory reference for store motion. */ ! ! struct mem_ref ! { ! tree mem; /* The memory itself. */ ! hashval_t hash; /* Its hash value. */ ! bool is_stored; /* True if there is a store to the location ! in the loop. */ ! struct mem_ref_loc *locs; /* The locations where it is found. */ ! bitmap possibly_aliases; /* The bitmap of tags the memory reference ! possibly aliases. */ }; /* Minimum cost of an expensive expression. */ *************** struct mem_ref *** 94,103 **** block will be executed. */ #define ALWAYS_EXECUTED_IN(BB) ((struct loop *) (BB)->aux) - /* Maximum uid in the statement in the function. */ - - static unsigned max_uid; - /* Calls CBCK for each index in memory reference ADDR_P. There are two kinds situations handled; in each of these cases, the memory reference and DATA are passed to the callback: --- 108,113 ---- *************** movement_possibility (tree stmt) *** 196,203 **** if (TREE_SIDE_EFFECTS (rhs)) return MOVE_IMPOSSIBLE; ! if (TREE_CODE (lhs) != SSA_NAME ! || tree_could_trap_p (rhs)) return MOVE_PRESERVE_EXECUTION; return MOVE_POSSIBLE; --- 206,218 ---- if (TREE_SIDE_EFFECTS (rhs)) return MOVE_IMPOSSIBLE; ! /* Due to V_MUST_DEFS the ssa form for virtual uses no longer describes ! output dependence relation, so avoid moving out statements ! with VDEFS. */ ! if (TREE_CODE (lhs) != SSA_NAME) ! return MOVE_IMPOSSIBLE; ! ! if (tree_could_trap_p (rhs)) return MOVE_PRESERVE_EXECUTION; return MOVE_POSSIBLE; *************** force_move_till (tree ref, tree *index, *** 763,775 **** return true; } ! /* Records memory reference *REF (that occurs in statement STMT) ! to the list MEM_REFS. */ static void ! record_mem_ref (struct mem_ref **mem_refs, tree stmt, tree *ref) { ! struct mem_ref *aref = xmalloc (sizeof (struct mem_ref)); aref->stmt = stmt; aref->ref = ref; --- 778,790 ---- return true; } ! /* Records memory reference location *REF to the list MEM_REFS. The reference ! occurs in statement STMT. */ static void ! record_mem_ref_loc (struct mem_ref_loc **mem_refs, tree stmt, tree *ref) { ! struct mem_ref_loc *aref = xmalloc (sizeof (struct mem_ref_loc)); aref->stmt = stmt; aref->ref = ref; *************** record_mem_ref (struct mem_ref **mem_ref *** 778,789 **** *mem_refs = aref; } ! /* Releases list of memory references MEM_REFS. */ static void ! free_mem_refs (struct mem_ref *mem_refs) { ! struct mem_ref *act; while (mem_refs) { --- 793,804 ---- *mem_refs = aref; } ! /* Releases list of memory reference locations MEM_REFS. */ static void ! free_mem_ref_locs (struct mem_ref_loc *mem_refs) { ! struct mem_ref_loc *act; while (mem_refs) { *************** free_mem_refs (struct mem_ref *mem_refs) *** 793,1007 **** } } - /* If VAR is defined in LOOP and the statement it is defined in does not belong - to the set SEEN, add the statement to QUEUE of length IN_QUEUE and - to the set SEEN. */ - - static void - maybe_queue_var (tree var, struct loop *loop, - sbitmap seen, tree *queue, unsigned *in_queue) - { - tree stmt = SSA_NAME_DEF_STMT (var); - basic_block def_bb = bb_for_stmt (stmt); - - if (!def_bb - || !flow_bb_inside_loop_p (loop, def_bb) - || TEST_BIT (seen, stmt_ann (stmt)->uid)) - return; - - SET_BIT (seen, stmt_ann (stmt)->uid); - queue[(*in_queue)++] = stmt; - } - - /* If COMMON_REF is NULL, set COMMON_REF to *OP and return true. - Otherwise return true if the memory reference *OP is equal to COMMON_REF. - Record the reference OP to list MEM_REFS. STMT is the statement in that - the reference occurs. */ - - struct sra_data - { - struct mem_ref **mem_refs; - tree common_ref; - tree stmt; - }; - - static bool - fem_single_reachable_address (tree *op, void *data) - { - struct sra_data *sra_data = data; - - if (sra_data->common_ref - && !operand_equal_p (*op, sra_data->common_ref, 0)) - return false; - sra_data->common_ref = *op; - - record_mem_ref (sra_data->mem_refs, sra_data->stmt, op); - return true; - } - - /* Runs CALLBACK for each operand of STMT that is a memory reference. DATA - is passed to the CALLBACK as well. The traversal stops if CALLBACK - returns false, for_each_memref then returns false as well. Otherwise - for_each_memref returns true. */ - - static bool - for_each_memref (tree stmt, bool (*callback)(tree *, void *), void *data) - { - tree *op; - - if (TREE_CODE (stmt) == RETURN_EXPR) - stmt = TREE_OPERAND (stmt, 1); - - if (TREE_CODE (stmt) == MODIFY_EXPR) - { - op = &TREE_OPERAND (stmt, 0); - if (TREE_CODE (*op) != SSA_NAME - && !callback (op, data)) - return false; - - op = &TREE_OPERAND (stmt, 1); - if (TREE_CODE (*op) != SSA_NAME - && is_gimple_lvalue (*op) - && !callback (op, data)) - return false; - - stmt = TREE_OPERAND (stmt, 1); - } - - if (TREE_CODE (stmt) == WITH_SIZE_EXPR) - stmt = TREE_OPERAND (stmt, 0); - - if (TREE_CODE (stmt) == CALL_EXPR) - { - tree args; - - for (args = TREE_OPERAND (stmt, 1); args; args = TREE_CHAIN (args)) - { - op = &TREE_VALUE (args); - - if (TREE_CODE (*op) != SSA_NAME - && is_gimple_lvalue (*op) - && !callback (op, data)) - return false; - } - } - - return true; - } - - /* Determine whether all memory references inside the LOOP that correspond - to virtual ssa names defined in statement STMT are equal. - If so, store the list of the references to MEM_REFS, and return one - of them. Otherwise store NULL to MEM_REFS and return NULL_TREE. - *SEEN_CALL_STMT is set to true if the virtual operands suggest - that the reference might be clobbered by a call inside the LOOP. */ - - static tree - single_reachable_address (struct loop *loop, tree stmt, - struct mem_ref **mem_refs, - bool *seen_call_stmt) - { - tree *queue = xmalloc (sizeof (tree) * max_uid); - sbitmap seen = sbitmap_alloc (max_uid); - unsigned in_queue = 1; - dataflow_t df; - unsigned i, n; - struct sra_data sra_data; - tree call; - tree val; - ssa_op_iter iter; - - sbitmap_zero (seen); - - *mem_refs = NULL; - sra_data.mem_refs = mem_refs; - sra_data.common_ref = NULL_TREE; - - queue[0] = stmt; - SET_BIT (seen, stmt_ann (stmt)->uid); - *seen_call_stmt = false; - - while (in_queue) - { - stmt = queue[--in_queue]; - sra_data.stmt = stmt; - - if (LIM_DATA (stmt) - && LIM_DATA (stmt)->sm_done) - goto fail; - - switch (TREE_CODE (stmt)) - { - case MODIFY_EXPR: - case CALL_EXPR: - case RETURN_EXPR: - if (!for_each_memref (stmt, fem_single_reachable_address, - &sra_data)) - goto fail; - - /* If this is a function that may depend on the memory location, - record the fact. We cannot directly refuse call clobbered - operands here, since sra_data.common_ref did not have - to be set yet. */ - call = get_call_expr_in (stmt); - if (call - && !(call_expr_flags (call) & ECF_CONST)) - *seen_call_stmt = true; - - /* Traverse also definitions of the VUSES (there may be other - distinct from the one we used to get to this statement). */ - FOR_EACH_SSA_TREE_OPERAND (val, stmt, iter, SSA_OP_VIRTUAL_USES) - maybe_queue_var (val, loop, seen, queue, &in_queue); - - break; - - case PHI_NODE: - for (i = 0; i < (unsigned) PHI_NUM_ARGS (stmt); i++) - maybe_queue_var (PHI_ARG_DEF (stmt, i), loop, - seen, queue, &in_queue); - break; - - default: - goto fail; - } - - /* Find uses of virtual names. */ - df = get_immediate_uses (stmt); - n = num_immediate_uses (df); - - for (i = 0; i < n; i++) - { - stmt = immediate_use (df, i); - - if (!flow_bb_inside_loop_p (loop, bb_for_stmt (stmt))) - continue; - - if (TEST_BIT (seen, stmt_ann (stmt)->uid)) - continue; - SET_BIT (seen, stmt_ann (stmt)->uid); - - queue[in_queue++] = stmt; - } - } - - free (queue); - sbitmap_free (seen); - - return sra_data.common_ref; - - fail: - free_mem_refs (*mem_refs); - *mem_refs = NULL; - free (queue); - sbitmap_free (seen); - - return NULL; - } - /* Rewrites memory references in list MEM_REFS by variable TMP_VAR. */ static void ! rewrite_mem_refs (tree tmp_var, struct mem_ref *mem_refs) { tree var; ssa_op_iter iter; --- 808,817 ---- } } /* Rewrites memory references in list MEM_REFS by variable TMP_VAR. */ static void ! rewrite_mem_refs (tree tmp_var, struct mem_ref_loc *mem_refs) { tree var; ssa_op_iter iter; *************** rewrite_mem_refs (tree tmp_var, struct m *** 1030,1038 **** static void schedule_sm (struct loop *loop, edge *exits, unsigned n_exits, tree ref, ! struct mem_ref *mem_refs) { ! struct mem_ref *aref; tree tmp_var; unsigned i; tree load, store; --- 840,848 ---- static void schedule_sm (struct loop *loop, edge *exits, unsigned n_exits, tree ref, ! struct mem_ref_loc *mem_refs) { ! struct mem_ref_loc *aref; tree tmp_var; unsigned i; tree load, store; *************** schedule_sm (struct loop *loop, edge *ex *** 1074,1150 **** } } ! /* Returns true if REF may be clobbered by calls. */ ! ! static bool ! is_call_clobbered_ref (tree ref) ! { ! tree base; ! ! base = get_base_address (ref); ! if (!base) ! return true; ! ! if (DECL_P (base)) ! return is_call_clobbered (base); ! ! if (TREE_CODE (base) == INDIRECT_REF) ! { ! /* Check whether the alias tags associated with the pointer ! are call clobbered. */ ! tree ptr = TREE_OPERAND (base, 0); ! struct ptr_info_def *pi = SSA_NAME_PTR_INFO (ptr); ! tree nmt = (pi) ? pi->name_mem_tag : NULL_TREE; ! tree tmt = var_ann (SSA_NAME_VAR (ptr))->type_mem_tag; ! ! if ((nmt && is_call_clobbered (nmt)) ! || (tmt && is_call_clobbered (tmt))) ! return true; ! ! return false; ! } ! ! abort (); ! } ! ! /* Determine whether all memory references inside LOOP corresponding to the ! virtual ssa name REG are equal to each other, and whether the address of ! this common reference can be hoisted outside of the loop. If this is true, ! prepare the statements that load the value of the memory reference to a ! temporary variable in the loop preheader, store it back on the loop exits, ! and replace all the references inside LOOP by this temporary variable. ! LOOP has N_EXITS stored in EXITS. */ static void ! determine_lsm_reg (struct loop *loop, edge *exits, unsigned n_exits, tree reg) { ! tree ref; ! struct mem_ref *mem_refs, *aref; struct loop *must_exec; ! bool sees_call; ! ! if (is_gimple_reg (reg)) ! return; ! ! ref = single_reachable_address (loop, SSA_NAME_DEF_STMT (reg), &mem_refs, ! &sees_call); ! if (!ref) ! return; ! /* If we cannot create a ssa name for the result, give up. */ ! if (!is_gimple_reg_type (TREE_TYPE (ref)) ! || TREE_THIS_VOLATILE (ref)) ! goto fail; ! ! /* If there is a call that may use the location, give up as well. */ ! if (sees_call ! && is_call_clobbered_ref (ref)) ! goto fail; ! if (!for_each_index (&ref, may_move_till, loop)) ! goto fail; ! if (tree_could_trap_p (ref)) { /* If the memory access is unsafe (i.e. it might trap), ensure that some of the statements in that it occurs is always executed when the loop --- 884,917 ---- } } ! /* Check whether memory reference REF can be hoisted out of the LOOP. If this ! is true, prepare the statements that load the value of the memory reference ! to a temporary variable in the loop preheader, store it back on the loop ! exits, and replace all the references inside LOOP by this temporary variable. ! LOOP has N_EXITS stored in EXITS. TAG_REF_COUNT contains for each alias ! tags number of different memory references that use/clobber it in LOOP. */ static void ! determine_lsm_ref (struct loop *loop, edge *exits, unsigned n_exits, ! struct mem_ref *ref, unsigned *tag_ref_count) { ! struct mem_ref_loc *aref; struct loop *must_exec; ! int i; ! /* In case the memory is not stored to, there is nothing for SM to do. */ ! if (!ref->is_stored) ! return; ! /* If any of the tags aliased with ref is accessed via a different ref, then ! fail. */ ! EXECUTE_IF_SET_IN_BITMAP (ref->possibly_aliases, 0, i, ! { ! if (tag_ref_count[i] != 1) ! return; ! }); ! if (tree_could_trap_p (ref->mem)) { /* If the memory access is unsafe (i.e. it might trap), ensure that some of the statements in that it occurs is always executed when the loop *************** determine_lsm_reg (struct loop *loop, ed *** 1157,1163 **** least one of the statements containing the memory reference is executed. */ ! for (aref = mem_refs; aref; aref = aref->next) { if (!LIM_DATA (aref->stmt)) continue; --- 924,930 ---- least one of the statements containing the memory reference is executed. */ ! for (aref = ref->locs; aref; aref = aref->next) { if (!LIM_DATA (aref->stmt)) continue; *************** determine_lsm_reg (struct loop *loop, ed *** 1172,1184 **** } if (!aref) ! goto fail; } ! schedule_sm (loop, exits, n_exits, ref, mem_refs); ! fail: ; ! free_mem_refs (mem_refs); } /* Checks whether LOOP (with N_EXITS exits stored in EXITS array) is suitable --- 939,972 ---- } if (!aref) ! return; } ! schedule_sm (loop, exits, n_exits, ref->mem, ref->locs); ! } ! ! /* Attempts to hoist memory reference described in SLOT out of loop ! described in DATA. Callback for htab_traverse. */ ! ! struct hmr_data ! { ! struct loop *loop; /* Loop from that the reference should be hoisted. */ ! edge *exits; /* Exits of the loop. */ ! unsigned n_exits; /* Length of the exits array. */ ! unsigned *tag_ref_count; ! /* Number of references to each alias analysis tag. */ ! }; ! ! static int ! hoist_memory_reference (void **slot, void *data) ! { ! struct mem_ref *ref = *slot; ! struct hmr_data *hmr_data = data; ! determine_lsm_ref (hmr_data->loop, hmr_data->exits, hmr_data->n_exits, ! ref, hmr_data->tag_ref_count); ! ! return 1; } /* Checks whether LOOP (with N_EXITS exits stored in EXITS array) is suitable *************** loop_suitable_for_sm (struct loop *loop *** 1198,1212 **** return true; } /* Try to perform store motion for all memory references modified inside LOOP. */ static void determine_lsm_loop (struct loop *loop) { - tree phi; unsigned n_exits; edge *exits = get_loop_exit_edges (loop, &n_exits); if (!loop_suitable_for_sm (loop, exits, n_exits)) { --- 986,1190 ---- return true; } + /* A hash function for struct mem_ref object OBJ. */ + + static hashval_t + memref_hash (const void *obj) + { + const struct mem_ref *mem = obj; + + return mem->hash; + } + + /* An equality function for struct mem_ref object OBJ1 with + memory reference OBJ2. */ + + static int + memref_eq (const void *obj1, const void *obj2) + { + const struct mem_ref *mem1 = obj1; + + return operand_equal_p (mem1->mem, (tree) obj2, 0); + } + + /* A function to free the struct mem_ref object OBJ. */ + + static void + memref_del (void *obj) + { + struct mem_ref *mem = obj; + + BITMAP_XFREE (mem->possibly_aliases); + free_mem_ref_locs (mem->locs); + free (mem); + } + + /* Increases count in UNKNOWN_REF_COUNTS for each alias tag refered + in STMT. */ + + static void + gather_mem_refs_stmt_unknown (unsigned *unknown_ref_counts, tree stmt) + { + ssa_op_iter oi; + tree tag; + + FOR_EACH_SSA_TREE_OPERAND (tag, stmt, oi, + (SSA_OP_VIRTUAL_DEFS | SSA_OP_VUSE)) + { + if (TREE_CODE (tag) == SSA_NAME) + tag = SSA_NAME_VAR (tag); + + unknown_ref_counts[var_ann (tag)->uid]++; + } + } + + /* Gathers memory references in statement STMT in LOOP, storing the + information about them in MEM_REFS hash table. If we cannot fully + analyse STMT, increase the counter for each alias tag refered by + statement in UNKNOWN_REF_COUNTS. */ + + static void + gather_mem_refs_stmt (struct loop *loop, htab_t mem_refs, + unsigned *unknown_ref_counts, tree stmt) + { + tree *lhs, *rhs, *mem; + hashval_t hash; + PTR *slot; + struct mem_ref *ref; + ssa_op_iter oi; + tree tag; + bool is_stored; + + get_stmt_operands (stmt); + + if (!STMT_V_MAY_DEF_OPS (stmt) + && !STMT_V_MUST_DEF_OPS (stmt) + && !STMT_VUSE_OPS (stmt)) + return; + + /* Recognize MEM = (SSA_NAME | invariant) and SSA_NAME = MEM patterns. */ + if (TREE_CODE (stmt) != MODIFY_EXPR) + { + gather_mem_refs_stmt_unknown (unknown_ref_counts, stmt); + return; + } + lhs = &TREE_OPERAND (stmt, 0); + rhs = &TREE_OPERAND (stmt, 1); + + if (TREE_CODE (*lhs) == SSA_NAME) + { + if (!is_gimple_addressable (*rhs)) + { + gather_mem_refs_stmt_unknown (unknown_ref_counts, stmt); + return; + } + + mem = rhs; + is_stored = false; + } + else if (TREE_CODE (*rhs) == SSA_NAME + || is_gimple_min_invariant (*rhs)) + { + mem = lhs; + is_stored = true; + } + else + { + gather_mem_refs_stmt_unknown (unknown_ref_counts, stmt); + return; + } + + /* If we cannot create a ssa name for the result, give up. */ + if (!is_gimple_reg_type (TREE_TYPE (*mem)) + || TREE_THIS_VOLATILE (*mem)) + { + gather_mem_refs_stmt_unknown (unknown_ref_counts, stmt); + return; + } + + /* If we cannot move the reference from the loop, fail. */ + if (!for_each_index (mem, may_move_till, loop)) + { + gather_mem_refs_stmt_unknown (unknown_ref_counts, stmt); + return; + } + + hash = iterative_hash_expr (*mem, 0); + slot = htab_find_slot_with_hash (mem_refs, *mem, hash, INSERT); + + if (*slot) + ref = *slot; + else + { + ref = xmalloc (sizeof (struct mem_ref)); + ref->mem = *mem; + ref->hash = hash; + ref->locs = NULL; + ref->is_stored = false; + ref->possibly_aliases = BITMAP_XMALLOC (); + *slot = ref; + } + ref->is_stored |= is_stored; + + record_mem_ref_loc (&ref->locs, stmt, mem); + FOR_EACH_SSA_TREE_OPERAND (tag, stmt, oi, + (SSA_OP_VIRTUAL_DEFS | SSA_OP_VUSE)) + { + if (TREE_CODE (tag) == SSA_NAME) + tag = SSA_NAME_VAR (tag); + + bitmap_set_bit (ref->possibly_aliases, var_ann (tag)->uid); + } + } + + /* Gathers memory references in LOOP, storing the information about them + in MEM_REFS hash table. For each alias tag store number of statements + statements that we could not fully analyse and that refer to it in + UNKNOWN_REF_COUNTS. */ + + static void + gather_mem_refs (struct loop *loop, htab_t mem_refs, + unsigned *unknown_ref_counts) + { + basic_block *body = get_loop_body (loop); + block_stmt_iterator bsi; + unsigned i; + + for (i = 0; i < loop->num_nodes; i++) + for (bsi = bsi_start (body[i]); !bsi_end_p (bsi); bsi_next (&bsi)) + gather_mem_refs_stmt (loop, mem_refs, unknown_ref_counts, + bsi_stmt (bsi)); + + free (body); + } + + /* Increases number of references for each alias tag associated with + reference passed in SLOT in the array passed in DATA. Callback + for htab_traverse. */ + + static int + count_tag_references (void **slot, void *data) + { + struct mem_ref *ref = *slot; + unsigned *tag_ref_counts = data; + int i; + + EXECUTE_IF_SET_IN_BITMAP (ref->possibly_aliases, 0, i, tag_ref_counts[i]++); + + return 1; + } + /* Try to perform store motion for all memory references modified inside LOOP. */ static void determine_lsm_loop (struct loop *loop) { unsigned n_exits; edge *exits = get_loop_exit_edges (loop, &n_exits); + htab_t mem_refs; + unsigned *tag_ref_counts; + struct hmr_data hmr_data; if (!loop_suitable_for_sm (loop, exits, n_exits)) { *************** determine_lsm_loop (struct loop *loop) *** 1214,1222 **** return; } ! for (phi = phi_nodes (loop->header); phi; phi = TREE_CHAIN (phi)) ! determine_lsm_reg (loop, exits, n_exits, PHI_RESULT (phi)); free (exits); } --- 1192,1214 ---- return; } ! mem_refs = htab_create (100, memref_hash, memref_eq, memref_del); ! ! /* Find the memory references in LOOP. */ ! tag_ref_counts = xcalloc (num_referenced_vars, sizeof (unsigned)); ! gather_mem_refs (loop, mem_refs, tag_ref_counts); ! ! /* Count the number of references for each memory aliasing tag. */ ! htab_traverse (mem_refs, count_tag_references, tag_ref_counts); ! ! /* Hoist all suitable memory references. */ ! hmr_data.loop = loop; ! hmr_data.exits = exits; ! hmr_data.n_exits = n_exits; ! hmr_data.tag_ref_count = tag_ref_counts; ! htab_traverse (mem_refs, hoist_memory_reference, &hmr_data); + htab_delete (mem_refs); free (exits); } *************** static void *** 1227,1254 **** determine_lsm (struct loops *loops) { struct loop *loop; - basic_block bb; - - /* Create a UID for each statement in the function. Ordering of the - UIDs is not important for this pass. */ - max_uid = 0; - FOR_EACH_BB (bb) - { - block_stmt_iterator bsi; - tree phi; - - for (bsi = bsi_start (bb); !bsi_end_p (bsi); bsi_next (&bsi)) - stmt_ann (bsi_stmt (bsi))->uid = max_uid++; - - for (phi = phi_nodes (bb); phi; phi = TREE_CHAIN (phi)) - stmt_ann (phi)->uid = max_uid++; - } - - compute_immediate_uses (TDFA_USE_VOPS, NULL); ! /* Pass the loops from the outermost. For each virtual operand loop phi node ! check whether all the references inside the loop correspond to a single ! address, and if so, move them. */ loop = loops->tree_root->inner; while (1) --- 1219,1227 ---- determine_lsm (struct loops *loops) { struct loop *loop; ! /* Pass the loops from the outermost and perform the store motion as ! suitable. */ loop = loops->tree_root->inner; while (1) *************** determine_lsm (struct loops *loops) *** 1265,1271 **** loop = loop->outer; if (loop == loops->tree_root) { - free_df (); loop_commit_inserts (); return; } --- 1238,1243 ---- -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=17133 ^ permalink raw reply [flat|nested] 13+ messages in thread
* [Bug tree-optimization/17133] [3.5 Regression] wrong code with -ftree-lim 2004-08-21 20:58 [Bug tree-optimization/17133] New: [3.5 Regression] wrong code with -ftree-loop-optimize belyshev at lubercy dot com ` (3 preceding siblings ...) 2004-09-05 9:02 ` rakdver at atrey dot karlin dot mff dot cuni dot cz @ 2004-09-08 18:37 ` pinskia at gcc dot gnu dot org 2004-09-11 20:38 ` rakdver at gcc dot gnu dot org ` (4 subsequent siblings) 9 siblings, 0 replies; 13+ messages in thread From: pinskia at gcc dot gnu dot org @ 2004-09-08 18:37 UTC (permalink / raw) To: gcc-bugs ------- Additional Comments From pinskia at gcc dot gnu dot org 2004-09-08 18:37 ------- *** Bug 17357 has been marked as a duplicate of this bug. *** -- What |Removed |Added ---------------------------------------------------------------------------- CC| |dann at godzilla dot ics dot | |uci dot edu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=17133 ^ permalink raw reply [flat|nested] 13+ messages in thread
* [Bug tree-optimization/17133] [3.5 Regression] wrong code with -ftree-lim 2004-08-21 20:58 [Bug tree-optimization/17133] New: [3.5 Regression] wrong code with -ftree-loop-optimize belyshev at lubercy dot com ` (4 preceding siblings ...) 2004-09-08 18:37 ` pinskia at gcc dot gnu dot org @ 2004-09-11 20:38 ` rakdver at gcc dot gnu dot org 2004-09-12 18:39 ` [Bug tree-optimization/17133] [4.0 " rakdver at gcc dot gnu dot org ` (3 subsequent siblings) 9 siblings, 0 replies; 13+ messages in thread From: rakdver at gcc dot gnu dot org @ 2004-09-11 20:38 UTC (permalink / raw) To: gcc-bugs ------- Additional Comments From rakdver at gcc dot gnu dot org 2004-09-11 20:38 ------- Patch: http://gcc.gnu.org/ml/gcc-patches/2004-09/msg01120.html -- What |Removed |Added ---------------------------------------------------------------------------- Keywords| |patch Known to fail|4.0 |4.0.0 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=17133 ^ permalink raw reply [flat|nested] 13+ messages in thread
* [Bug tree-optimization/17133] [4.0 Regression] wrong code with -ftree-lim 2004-08-21 20:58 [Bug tree-optimization/17133] New: [3.5 Regression] wrong code with -ftree-loop-optimize belyshev at lubercy dot com ` (5 preceding siblings ...) 2004-09-11 20:38 ` rakdver at gcc dot gnu dot org @ 2004-09-12 18:39 ` rakdver at gcc dot gnu dot org 2004-10-17 20:30 ` giovannibajo at libero dot it ` (2 subsequent siblings) 9 siblings, 0 replies; 13+ messages in thread From: rakdver at gcc dot gnu dot org @ 2004-09-12 18:39 UTC (permalink / raw) To: gcc-bugs ------- Additional Comments From rakdver at gcc dot gnu dot org 2004-09-12 18:39 ------- *** Bug 17425 has been marked as a duplicate of this bug. *** -- What |Removed |Added ---------------------------------------------------------------------------- CC| |snyder at fnal dot gov http://gcc.gnu.org/bugzilla/show_bug.cgi?id=17133 ^ permalink raw reply [flat|nested] 13+ messages in thread
* [Bug tree-optimization/17133] [4.0 Regression] wrong code with -ftree-lim 2004-08-21 20:58 [Bug tree-optimization/17133] New: [3.5 Regression] wrong code with -ftree-loop-optimize belyshev at lubercy dot com ` (6 preceding siblings ...) 2004-09-12 18:39 ` [Bug tree-optimization/17133] [4.0 " rakdver at gcc dot gnu dot org @ 2004-10-17 20:30 ` giovannibajo at libero dot it 2004-10-27 17:46 ` cvs-commit at gcc dot gnu dot org 2004-10-29 5:43 ` pinskia at gcc dot gnu dot org 9 siblings, 0 replies; 13+ messages in thread From: giovannibajo at libero dot it @ 2004-10-17 20:30 UTC (permalink / raw) To: gcc-bugs ------- Additional Comments From giovannibajo at libero dot it 2004-10-17 20:29 ------- Zdenek, maybe it's time to ping this patch? -- What |Removed |Added ---------------------------------------------------------------------------- AssignedTo|unassigned at gcc dot gnu |rakdver at gcc dot gnu dot |dot org |org Status|NEW |ASSIGNED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=17133 ^ permalink raw reply [flat|nested] 13+ messages in thread
* [Bug tree-optimization/17133] [4.0 Regression] wrong code with -ftree-lim 2004-08-21 20:58 [Bug tree-optimization/17133] New: [3.5 Regression] wrong code with -ftree-loop-optimize belyshev at lubercy dot com ` (7 preceding siblings ...) 2004-10-17 20:30 ` giovannibajo at libero dot it @ 2004-10-27 17:46 ` cvs-commit at gcc dot gnu dot org 2004-10-29 5:43 ` pinskia at gcc dot gnu dot org 9 siblings, 0 replies; 13+ messages in thread From: cvs-commit at gcc dot gnu dot org @ 2004-10-27 17:46 UTC (permalink / raw) To: gcc-bugs ------- Additional Comments From cvs-commit at gcc dot gnu dot org 2004-10-27 17:45 ------- Subject: Bug 17133 CVSROOT: /cvs/gcc Module name: gcc Changes by: dberlin@gcc.gnu.org 2004-10-27 17:45:25 Modified files: gcc : ChangeLog tree-cfg.c tree-dfa.c tree-flow-inline.h tree-flow.h tree-into-ssa.c tree-optimize.c tree-pass.h tree-pretty-print.c tree-ssa-ccp.c tree-ssa-dce.c tree-ssa-loop-im.c tree-ssa-loop-manip.c tree-ssa-operands.c tree-ssa-operands.h tree-ssa.c tree-vectorizer.c Log message: 2004-10-27 Daniel Berlin <dberlin@dberlin.org> Fix PR tree-optimization/17133 * tree-cfg.c (rewrite_to_new_ssa_names_bb): Also rewrite must def kill operand. * tree-flow-inline.h: V_MUST_DEF_OP became V_MUST_DEF_RESULT. (get_v_must_def_result_ptr): Modify for new structure of v_must_defs array. (get_v_must_def_kill_ptr): New. (op_iter_next_use): Add support for the kill that occurs in V_MUST_DEFs. (op_iter_next_tree): Ditto. Also V_MAY_DEF_OP became V_MAY_DEF_RESULT. (op_iter_next_def): V_MAY_DEF_OP became V_MAY_DEF_RESULT. (op_iter_init): Initialize new mustu members. (op_iter_next_mustdef): New function. (op_iter_init_mustdef): Ditto. * tree-flow.h (rewrite_def_def_chains): New function. * tree-into-ssa.c (mark_def_sites): Handle mustdefkill operands. (ssa_mark_def_sites): Ditto. (rewrite_stmt): Ditto. (ssa_rewrite_stmt): Ditto. (rewrite_blocks): Factor out from rewrite_into_ssa. (mark_def_block_sites): Ditto. (rewrite_def_def_chains): New function, just rewrites def-def chains without phi node insertion. * tree-pass.h (TODO_fix_def_def_chains): New todo flag. * tree-optimize.c (execute_todo): Handle TODO_fix_def_def_chains. * tree-pretty-print.c (dump_vops): Print out MUST_DEF's so that they include the rhs now. * tree-ssa-ccp.c (visit_assignment): V_MUST_DEF_OP became V_MUST_DEF_RESULT. * tree-ssa-dce.c (mark_operand_necessary): Add phionly argument. Update callers. (mark_really_necessary_kill_operand_phis): New function. (perform_tree_ssa_dce): Call it. (pass_dce): Add TODO_fix_def_def_chains. (pass_cd_dce): Ditto. * tree-ssa-loop-im.c (determine_max_movement): Look at kills as well. (rewrite_mem_refs): Ditto. * tree-ssa-loop-manip.c (find_uses_to_rename_stmt): Look at kills as well. * tree-ssa-operands.c (allocate_v_may_def_optype): v_may_def_operand_type_t became v_def_use_operand_type_t. (allocate_v_must_def_optype) Ditto. (finalize_ssa_v_must_defs): Update for new operand type, as well as setting the use portion as well. (copy_virtual_operands): Copy the kill operand as well. (create_ssa_artficial_load_stmt): V_MUST_DEF_OP became V_MUST_DEF_RESULT. * tree-ssa-operands.h (v_may_def_operand_type): Renamed to v_def_use_operand_type. (v_must_def_optype_d): Use v_def_use_operand_type. (V_MUST_DEF_OP_*): Renamed to V_MUST_DEF_RESULT_* (V_MUST_DEF_KILL_*): New macros. (struct ssa_operand_iterator_d): Add num_v_mustu and v_mustu_i members. Rename existing must_i and num_v_must members to mustd_i and num_v_mustd. (SSA_OP_VMUSTDEFKILL): New flag. (SSA_OP_VIRTUAL_KILLS): New flag. (SSA_OP_ALL_OPERANDS): Add in SSA_OP_ALL_KILLS. (SSA_OP_ALL_KILLS): New flag. (FOR_EACH_SSA_MUSTDEF_OPERAND): New macro. * tree-ssa.c (verify_ssa): Verify virtual kills as well. * tree-vectorizer.c (vect_create_data_ref_ptr): V_MUST_DEF_OP became V_MUST_DEF_RESULT. (rename_variables_in_bb): Rename kill pointer as well. * tree-dfa.c (compute_immediate_uses_for_stmt): Add kills into the immediate uses. Patches: http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?cvsroot=gcc&r1=2.6047&r2=2.6048 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-cfg.c.diff?cvsroot=gcc&r1=2.89&r2=2.90 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-dfa.c.diff?cvsroot=gcc&r1=2.40&r2=2.41 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-flow-inline.h.diff?cvsroot=gcc&r1=2.24&r2=2.25 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-flow.h.diff?cvsroot=gcc&r1=2.54&r2=2.55 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-into-ssa.c.diff?cvsroot=gcc&r1=2.25&r2=2.26 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-optimize.c.diff?cvsroot=gcc&r1=2.57&r2=2.58 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-pass.h.diff?cvsroot=gcc&r1=2.19&r2=2.20 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-pretty-print.c.diff?cvsroot=gcc&r1=2.46&r2=2.47 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-ssa-ccp.c.diff?cvsroot=gcc&r1=2.47&r2=2.48 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-ssa-dce.c.diff?cvsroot=gcc&r1=2.22&r2=2.23 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-ssa-loop-im.c.diff?cvsroot=gcc&r1=2.18&r2=2.19 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-ssa-loop-manip.c.diff?cvsroot=gcc&r1=2.11&r2=2.12 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-ssa-operands.c.diff?cvsroot=gcc&r1=2.50&r2=2.51 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-ssa-operands.h.diff?cvsroot=gcc&r1=2.7&r2=2.8 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-ssa.c.diff?cvsroot=gcc&r1=2.49&r2=2.50 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-vectorizer.c.diff?cvsroot=gcc&r1=2.20&r2=2.21 -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=17133 ^ permalink raw reply [flat|nested] 13+ messages in thread
* [Bug tree-optimization/17133] [4.0 Regression] wrong code with -ftree-lim 2004-08-21 20:58 [Bug tree-optimization/17133] New: [3.5 Regression] wrong code with -ftree-loop-optimize belyshev at lubercy dot com ` (8 preceding siblings ...) 2004-10-27 17:46 ` cvs-commit at gcc dot gnu dot org @ 2004-10-29 5:43 ` pinskia at gcc dot gnu dot org 9 siblings, 0 replies; 13+ messages in thread From: pinskia at gcc dot gnu dot org @ 2004-10-29 5:43 UTC (permalink / raw) To: gcc-bugs ------- Additional Comments From pinskia at gcc dot gnu dot org 2004-10-29 05:43 ------- Fixed. -- What |Removed |Added ---------------------------------------------------------------------------- Status|ASSIGNED |RESOLVED Resolution| |FIXED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=17133 ^ permalink raw reply [flat|nested] 13+ messages in thread
[parent not found: <20040821205808.17133.belyshev@depni.sinp.msu.ru>]
* [Bug tree-optimization/17133] [4.0 Regression] wrong code with -ftree-lim [not found] <20040821205808.17133.belyshev@depni.sinp.msu.ru> @ 2005-01-09 22:05 ` cvs-commit at gcc dot gnu dot org 2005-01-10 3:57 ` cvs-commit at gcc dot gnu dot org 1 sibling, 0 replies; 13+ messages in thread From: cvs-commit at gcc dot gnu dot org @ 2005-01-09 22:05 UTC (permalink / raw) To: gcc-bugs ------- Additional Comments From cvs-commit at gcc dot gnu dot org 2005-01-09 22:05 ------- Subject: Bug 17133 CVSROOT: /cvs/gcc Module name: gcc Branch: apple-ppc-branch Changes by: dalej@gcc.gnu.org 2005-01-09 22:05:17 Modified files: gcc : tree-cfg.c tree-dfa.c tree-flow-inline.h tree-flow.h tree-pretty-print.c tree-ssa-loop-im.c tree-ssa-loop-manip.c tree-ssa-operands.c tree-ssa-operands.h tree-vectorizer.c tree-pass.h tree-ssa-ccp.c tree-ssa-loop-ch.c tree-ssa-loop.c tree-ssa-phiopt.c tree-into-ssa.c tree-optimize.c tree-ssa.c tree-ssa-dce.c ChangeLog.apple-ppc Log message: 2005-01-09 Dale Johannesen <dalej@apple.com> Radar 3941146 Following patches from mainline: 2004-10-27 Daniel Berlin <dberlin@dberlin.org> Fix PR tree-optimization/17133 * tree-cfg.c (rewrite_to_new_ssa_names_bb): Also rewrite must def kill operand. * tree-flow-inline.h: V_MUST_DEF_OP became V_MUST_DEF_RESULT. (get_v_must_def_result_ptr): Modify for new structure of v_must_defs array. (get_v_must_def_kill_ptr): New. (op_iter_next_use): Add support for the kill that occurs in V_MUST_DEFs. (op_iter_next_tree): Ditto. Also V_MAY_DEF_OP became V_MAY_DEF_RESULT. (op_iter_next_def): V_MAY_DEF_OP became V_MAY_DEF_RESULT. (op_iter_init): Initialize new mustu members. (op_iter_next_mustdef): New function. (op_iter_init_mustdef): Ditto. * tree-flow.h (rewrite_def_def_chains): New function. * tree-into-ssa.c (mark_def_sites): Handle mustdefkill operands. (ssa_mark_def_sites): Ditto. (rewrite_stmt): Ditto. (ssa_rewrite_stmt): Ditto. (rewrite_blocks): Factor out from rewrite_into_ssa. (mark_def_block_sites): Ditto. (rewrite_def_def_chains): New function, just rewrites def-def chains without phi node insertion. * tree-pass.h (TODO_fix_def_def_chains): New todo flag. * tree-optimize.c (execute_todo): Handle TODO_fix_def_def_chains. * tree-pretty-print.c (dump_vops): Print out MUST_DEF's so that they include the rhs now. * tree-ssa-ccp.c (visit_assignment): V_MUST_DEF_OP became V_MUST_DEF_RESULT. * tree-ssa-dce.c (mark_operand_necessary): Add phionly argument. Update callers. (mark_really_necessary_kill_operand_phis): New function. (perform_tree_ssa_dce): Call it. (pass_dce): Add TODO_fix_def_def_chains. (pass_cd_dce): Ditto. * tree-ssa-loop-im.c (determine_max_movement): Look at kills as well. (rewrite_mem_refs): Ditto. * tree-ssa-loop-manip.c (find_uses_to_rename_stmt): Look at kills as well. * tree-ssa-operands.c (allocate_v_may_def_optype): v_may_def_operand_type_t became v_def_use_operand_type_t. (allocate_v_must_def_optype) Ditto. (finalize_ssa_v_must_defs): Update for new operand type, as well as setting the use portion as well. (copy_virtual_operands): Copy the kill operand as well. (create_ssa_artficial_load_stmt): V_MUST_DEF_OP became V_MUST_DEF_RESULT. * tree-ssa-operands.h (v_may_def_operand_type): Renamed to v_def_use_operand_type. (v_must_def_optype_d): Use v_def_use_operand_type. (V_MUST_DEF_OP_*): Renamed to V_MUST_DEF_RESULT_* (V_MUST_DEF_KILL_*): New macros. (struct ssa_operand_iterator_d): Add num_v_mustu and v_mustu_i members. Rename existing must_i and num_v_must members to mustd_i and num_v_mustd. (SSA_OP_VMUSTDEFKILL): New flag. (SSA_OP_VIRTUAL_KILLS): New flag. (SSA_OP_ALL_OPERANDS): Add in SSA_OP_ALL_KILLS. (SSA_OP_ALL_KILLS): New flag. (FOR_EACH_SSA_MUSTDEF_OPERAND): New macro. * tree-ssa.c (verify_ssa): Verify virtual kills as well. * tree-vectorizer.c (vect_create_data_ref_ptr): V_MUST_DEF_OP became V_MUST_DEF_RESULT. (rename_variables_in_bb): Rename kill pointer as well. * tree-dfa.c (compute_immediate_uses_for_stmt): Add kills into the immediate uses. 2004-10-28 Daniel Berlin <dberlin@dberlin.org> * tree-into-ssa.c (rewrite_virtual_phi_arguments): New function. (rewrite_blocks): Modify argument, and use it to decide which function to call. (rewrite_def_def_chains): Call rewrite_blocks with true here. (rewrite_into_ssa): and call it with false here. 2004-11-16 Daniel Berlin <dberlin@dberlin.org> Fix PR tree-optimization/18519 * tree-optimize (execute_todo): Add case for TODO_cleanup_cfg. * tree-pass.h: Add TODO_cleanup_cfg. * tree-ssa-ccp.c (pass_ccp): Use TODO_cleanup_cfg. (ccp_finalize): Remove call to cleanup_cfg. * tree-ssa-dce.c (pass_dce): Use TODO_cleanup_cfg and TODO_dump_func. (pass_cd_dce): Ditto. (perform_tree_ssa_dce): Remove call to cleanup_cfg, dump_function_to_file. * tree-ssa-loop-ch.c (copy_loop_headers): Remove call to cleanup_cfg. (pass_ch): Add TODO_cleanup_cfg. * tree-ssa-loop.c (tree_ssa_loop_done): Remove call to cleanup_cfg. (pass_loop_done): Add TODO_cleanup_cfg. * tree-ssa-phiopt.c (pass_phiopt): Ditto. (tree_ssa_phiopt): Remove call to cleanup_cfg. Patches: http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-cfg.c.diff?cvsroot=gcc&only_with_tag=apple-ppc-branch&r1=1.1.4.278.2.15&r2=1.1.4.278.2.16 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-dfa.c.diff?cvsroot=gcc&only_with_tag=apple-ppc-branch&r1=1.1.4.222.2.10&r2=1.1.4.222.2.11 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-flow-inline.h.diff?cvsroot=gcc&only_with_tag=apple-ppc-branch&r1=1.1.2.68.2.7&r2=1.1.2.68.2.8 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-flow.h.diff?cvsroot=gcc&only_with_tag=apple-ppc-branch&r1=1.1.4.197.2.15&r2=1.1.4.197.2.16 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-pretty-print.c.diff?cvsroot=gcc&only_with_tag=apple-ppc-branch&r1=1.1.2.78.2.9&r2=1.1.2.78.2.10 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-ssa-loop-im.c.diff?cvsroot=gcc&only_with_tag=apple-ppc-branch&r1=1.1.4.9&r2=1.1.4.10 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-ssa-loop-manip.c.diff?cvsroot=gcc&only_with_tag=apple-ppc-branch&r1=1.1.4.12&r2=1.1.4.13 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-ssa-operands.c.diff?cvsroot=gcc&only_with_tag=apple-ppc-branch&r1=1.1.2.17.2.13&r2=1.1.2.17.2.14 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-ssa-operands.h.diff?cvsroot=gcc&only_with_tag=apple-ppc-branch&r1=1.1.2.2.6.6&r2=1.1.2.2.6.7 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-vectorizer.c.diff?cvsroot=gcc&only_with_tag=apple-ppc-branch&r1=1.1.4.26&r2=1.1.4.27 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-pass.h.diff?cvsroot=gcc&only_with_tag=apple-ppc-branch&r1=1.1.2.19.2.11&r2=1.1.2.19.2.12 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-ssa-ccp.c.diff?cvsroot=gcc&only_with_tag=apple-ppc-branch&r1=1.1.2.148.2.5&r2=1.1.2.148.2.6 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-ssa-loop-ch.c.diff?cvsroot=gcc&only_with_tag=apple-ppc-branch&r1=2.3.4.5&r2=2.3.4.6 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-ssa-loop.c.diff?cvsroot=gcc&only_with_tag=apple-ppc-branch&r1=1.1.2.11.2.10&r2=1.1.2.11.2.11 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-ssa-phiopt.c.diff?cvsroot=gcc&only_with_tag=apple-ppc-branch&r1=1.1.2.9.2.8&r2=1.1.2.9.2.9 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-into-ssa.c.diff?cvsroot=gcc&only_with_tag=apple-ppc-branch&r1=1.1.2.1.2.9&r2=1.1.2.1.2.10 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-optimize.c.diff?cvsroot=gcc&only_with_tag=apple-ppc-branch&r1=1.1.4.134.2.13&r2=1.1.4.134.2.14 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-ssa.c.diff?cvsroot=gcc&only_with_tag=apple-ppc-branch&r1=1.1.4.216.2.10&r2=1.1.4.216.2.11 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-ssa-dce.c.diff?cvsroot=gcc&only_with_tag=apple-ppc-branch&r1=1.1.2.83.2.7&r2=1.1.2.83.2.8 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.apple-ppc.diff?cvsroot=gcc&only_with_tag=apple-ppc-branch&r1=1.1.2.261&r2=1.1.2.262 -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=17133 ^ permalink raw reply [flat|nested] 13+ messages in thread
* [Bug tree-optimization/17133] [4.0 Regression] wrong code with -ftree-lim [not found] <20040821205808.17133.belyshev@depni.sinp.msu.ru> 2005-01-09 22:05 ` cvs-commit at gcc dot gnu dot org @ 2005-01-10 3:57 ` cvs-commit at gcc dot gnu dot org 1 sibling, 0 replies; 13+ messages in thread From: cvs-commit at gcc dot gnu dot org @ 2005-01-10 3:57 UTC (permalink / raw) To: gcc-bugs ------- Additional Comments From cvs-commit at gcc dot gnu dot org 2005-01-10 03:57 ------- Subject: Bug 17133 CVSROOT: /cvs/gcc Module name: gcc Branch: apple-gcc_os_35-branch Changes by: dalej@gcc.gnu.org 2005-01-10 03:57:26 Modified files: gcc : tree-cfg.c tree-dfa.c tree-flow-inline.h tree-flow.h tree-pretty-print.c tree-ssa-loop-im.c tree-ssa-loop-manip.c tree-ssa-operands.c tree-ssa-operands.h tree-vectorizer.c tree-pass.h tree-ssa-ccp.c tree-ssa-loop-ch.c tree-ssa-loop.c tree-ssa-phiopt.c tree-into-ssa.c tree-optimize.c tree-ssa.c tree-ssa-dce.c ChangeLog.apple-ppc Log message: 2005-01-09 Dale Johannesen <dalej@apple.com> Radar 3941146 Following patches from mainline: 2004-10-27 Daniel Berlin <dberlin@dberlin.org> Fix PR tree-optimization/17133 * tree-cfg.c (rewrite_to_new_ssa_names_bb): Also rewrite must def kill operand. * tree-flow-inline.h: V_MUST_DEF_OP became V_MUST_DEF_RESULT. (get_v_must_def_result_ptr): Modify for new structure of v_must_defs array. (get_v_must_def_kill_ptr): New. (op_iter_next_use): Add support for the kill that occurs in V_MUST_DEFs. (op_iter_next_tree): Ditto. Also V_MAY_DEF_OP became V_MAY_DEF_RESULT. (op_iter_next_def): V_MAY_DEF_OP became V_MAY_DEF_RESULT. (op_iter_init): Initialize new mustu members. (op_iter_next_mustdef): New function. (op_iter_init_mustdef): Ditto. * tree-flow.h (rewrite_def_def_chains): New function. * tree-into-ssa.c (mark_def_sites): Handle mustdefkill operands. (ssa_mark_def_sites): Ditto. (rewrite_stmt): Ditto. (ssa_rewrite_stmt): Ditto. (rewrite_blocks): Factor out from rewrite_into_ssa. (mark_def_block_sites): Ditto. (rewrite_def_def_chains): New function, just rewrites def-def chains without phi node insertion. * tree-pass.h (TODO_fix_def_def_chains): New todo flag. * tree-optimize.c (execute_todo): Handle TODO_fix_def_def_chains. * tree-pretty-print.c (dump_vops): Print out MUST_DEF's so that they include the rhs now. * tree-ssa-ccp.c (visit_assignment): V_MUST_DEF_OP became V_MUST_DEF_RESULT. * tree-ssa-dce.c (mark_operand_necessary): Add phionly argument. Update callers. (mark_really_necessary_kill_operand_phis): New function. (perform_tree_ssa_dce): Call it. (pass_dce): Add TODO_fix_def_def_chains. (pass_cd_dce): Ditto. * tree-ssa-loop-im.c (determine_max_movement): Look at kills as well. (rewrite_mem_refs): Ditto. * tree-ssa-loop-manip.c (find_uses_to_rename_stmt): Look at kills as well. * tree-ssa-operands.c (allocate_v_may_def_optype): v_may_def_operand_type_t became v_def_use_operand_type_t. (allocate_v_must_def_optype) Ditto. (finalize_ssa_v_must_defs): Update for new operand type, as well as setting the use portion as well. (copy_virtual_operands): Copy the kill operand as well. (create_ssa_artficial_load_stmt): V_MUST_DEF_OP became V_MUST_DEF_RESULT. * tree-ssa-operands.h (v_may_def_operand_type): Renamed to v_def_use_operand_type. (v_must_def_optype_d): Use v_def_use_operand_type. (V_MUST_DEF_OP_*): Renamed to V_MUST_DEF_RESULT_* (V_MUST_DEF_KILL_*): New macros. (struct ssa_operand_iterator_d): Add num_v_mustu and v_mustu_i members. Rename existing must_i and num_v_must members to mustd_i and num_v_mustd. (SSA_OP_VMUSTDEFKILL): New flag. (SSA_OP_VIRTUAL_KILLS): New flag. (SSA_OP_ALL_OPERANDS): Add in SSA_OP_ALL_KILLS. (SSA_OP_ALL_KILLS): New flag. (FOR_EACH_SSA_MUSTDEF_OPERAND): New macro. * tree-ssa.c (verify_ssa): Verify virtual kills as well. * tree-vectorizer.c (vect_create_data_ref_ptr): V_MUST_DEF_OP became V_MUST_DEF_RESULT. (rename_variables_in_bb): Rename kill pointer as well. * tree-dfa.c (compute_immediate_uses_for_stmt): Add kills into the immediate uses. 2004-10-28 Daniel Berlin <dberlin@dberlin.org> * tree-into-ssa.c (rewrite_virtual_phi_arguments): New function. (rewrite_blocks): Modify argument, and use it to decide which function to call. (rewrite_def_def_chains): Call rewrite_blocks with true here. (rewrite_into_ssa): and call it with false here. 2004-11-16 Daniel Berlin <dberlin@dberlin.org> Fix PR tree-optimization/18519 * tree-optimize (execute_todo): Add case for TODO_cleanup_cfg. * tree-pass.h: Add TODO_cleanup_cfg. * tree-ssa-ccp.c (pass_ccp): Use TODO_cleanup_cfg. (ccp_finalize): Remove call to cleanup_cfg. * tree-ssa-dce.c (pass_dce): Use TODO_cleanup_cfg and TODO_dump_func. (pass_cd_dce): Ditto. (perform_tree_ssa_dce): Remove call to cleanup_cfg, dump_function_to_file. * tree-ssa-loop-ch.c (copy_loop_headers): Remove call to cleanup_cfg. (pass_ch): Add TODO_cleanup_cfg. * tree-ssa-loop.c (tree_ssa_loop_done): Remove call to cleanup_cfg. (pass_loop_done): Add TODO_cleanup_cfg. * tree-ssa-phiopt.c (pass_phiopt): Ditto. (tree_ssa_phiopt): Remove call to cleanup_cfg. Patches: http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-cfg.c.diff?cvsroot=gcc&only_with_tag=apple-gcc_os_35-branch&r1=1.1.4.278.2.12&r2=1.1.4.278.2.12.2.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-dfa.c.diff?cvsroot=gcc&only_with_tag=apple-gcc_os_35-branch&r1=1.1.4.222.2.9&r2=1.1.4.222.2.9.2.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-flow-inline.h.diff?cvsroot=gcc&only_with_tag=apple-gcc_os_35-branch&r1=1.1.2.68.2.6&r2=1.1.2.68.2.6.2.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-flow.h.diff?cvsroot=gcc&only_with_tag=apple-gcc_os_35-branch&r1=1.1.4.197.2.12&r2=1.1.4.197.2.12.2.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-pretty-print.c.diff?cvsroot=gcc&only_with_tag=apple-gcc_os_35-branch&r1=1.1.2.78.2.8&r2=1.1.2.78.2.8.2.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-ssa-loop-im.c.diff?cvsroot=gcc&only_with_tag=apple-gcc_os_35-branch&r1=1.1.4.9&r2=1.1.4.9.2.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-ssa-loop-manip.c.diff?cvsroot=gcc&only_with_tag=apple-gcc_os_35-branch&r1=1.1.4.11&r2=1.1.4.11.2.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-ssa-operands.c.diff?cvsroot=gcc&only_with_tag=apple-gcc_os_35-branch&r1=1.1.2.17.2.12&r2=1.1.2.17.2.12.2.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-ssa-operands.h.diff?cvsroot=gcc&only_with_tag=apple-gcc_os_35-branch&r1=1.1.2.2.6.6&r2=1.1.2.2.6.6.2.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-vectorizer.c.diff?cvsroot=gcc&only_with_tag=apple-gcc_os_35-branch&r1=1.1.4.22&r2=1.1.4.22.2.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-pass.h.diff?cvsroot=gcc&only_with_tag=apple-gcc_os_35-branch&r1=1.1.2.19.2.9&r2=1.1.2.19.2.9.2.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-ssa-ccp.c.diff?cvsroot=gcc&only_with_tag=apple-gcc_os_35-branch&r1=1.1.2.148.2.5&r2=1.1.2.148.2.5.2.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-ssa-loop-ch.c.diff?cvsroot=gcc&only_with_tag=apple-gcc_os_35-branch&r1=2.3.4.5&r2=2.3.4.5.2.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-ssa-loop.c.diff?cvsroot=gcc&only_with_tag=apple-gcc_os_35-branch&r1=1.1.2.11.2.9&r2=1.1.2.11.2.9.2.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-ssa-phiopt.c.diff?cvsroot=gcc&only_with_tag=apple-gcc_os_35-branch&r1=1.1.2.9.2.7&r2=1.1.2.9.2.7.2.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-into-ssa.c.diff?cvsroot=gcc&only_with_tag=apple-gcc_os_35-branch&r1=1.1.2.1.2.8&r2=1.1.2.1.2.8.2.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-optimize.c.diff?cvsroot=gcc&only_with_tag=apple-gcc_os_35-branch&r1=1.1.4.134.2.9&r2=1.1.4.134.2.9.2.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-ssa.c.diff?cvsroot=gcc&only_with_tag=apple-gcc_os_35-branch&r1=1.1.4.216.2.8&r2=1.1.4.216.2.8.2.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-ssa-dce.c.diff?cvsroot=gcc&only_with_tag=apple-gcc_os_35-branch&r1=1.1.2.83.2.7&r2=1.1.2.83.2.7.2.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.apple-ppc.diff?cvsroot=gcc&only_with_tag=apple-gcc_os_35-branch&r1=1.1.2.190.2.9&r2=1.1.2.190.2.10 -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=17133 ^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2005-01-10 3:57 UTC | newest] Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2004-08-21 20:58 [Bug tree-optimization/17133] New: [3.5 Regression] wrong code with -ftree-loop-optimize belyshev at lubercy dot com 2004-08-21 21:13 ` [Bug tree-optimization/17133] [3.5 Regression] wrong code with -ftree-lim pinskia at gcc dot gnu dot org 2004-08-31 23:49 ` belyshev at lubercy dot com 2004-09-01 21:19 ` rakdver at atrey dot karlin dot mff dot cuni dot cz 2004-09-05 9:02 ` rakdver at atrey dot karlin dot mff dot cuni dot cz 2004-09-08 18:37 ` pinskia at gcc dot gnu dot org 2004-09-11 20:38 ` rakdver at gcc dot gnu dot org 2004-09-12 18:39 ` [Bug tree-optimization/17133] [4.0 " rakdver at gcc dot gnu dot org 2004-10-17 20:30 ` giovannibajo at libero dot it 2004-10-27 17:46 ` cvs-commit at gcc dot gnu dot org 2004-10-29 5:43 ` pinskia at gcc dot gnu dot org [not found] <20040821205808.17133.belyshev@depni.sinp.msu.ru> 2005-01-09 22:05 ` cvs-commit at gcc dot gnu dot org 2005-01-10 3:57 ` cvs-commit 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).