diff options
author | Kazu Hirata <kazu@cs.umass.edu> | 2002-06-04 11:30:46 +0000 |
---|---|---|
committer | Kazu Hirata <kazu@gcc.gnu.org> | 2002-06-04 11:30:46 +0000 |
commit | 589005ff217dde6c3c22842e27315d597a8fe710 (patch) | |
tree | e46147f472cc001827083ec7631a1140948ce7c6 | |
parent | 94213cff2aab4c3107aad20145838219caa829e0 (diff) | |
download | gcc-589005ff217dde6c3c22842e27315d597a8fe710.tar.gz |
gbl-ctors.h: Fix formatting.
* gbl-ctors.h: Fix formatting.
* gcc.c: Likewise.
* gccspec.c: Likewise.
* gcov.c: Likewise.
* gcov-io.h: Likewise.
* gcse.c: Likewise.
* ggc-common.c: Likewise.
* ggc.h: Likewise.
* ggc-page.c: Likewise.
* ggc-simple.c: Likewise.
* global.c: Likewise.
* graph.h: Likewise.
* gthr-dce.h: Likewise.
* gthr.h: Likewise.
* gthr-posix.h: Likewise.
* gthr-rtems.h: Likewise.
* gthr-solaris.h: Likewise.
* gthr-win32.h: Likewise.
From-SVN: r54240
-rw-r--r-- | gcc/ChangeLog | 23 | ||||
-rw-r--r-- | gcc/gbl-ctors.h | 2 | ||||
-rw-r--r-- | gcc/gcc.c | 80 | ||||
-rw-r--r-- | gcc/gccspec.c | 2 | ||||
-rw-r--r-- | gcc/gcov-io.h | 2 | ||||
-rw-r--r-- | gcc/gcov.c | 14 | ||||
-rw-r--r-- | gcc/gcse.c | 350 | ||||
-rw-r--r-- | gcc/ggc-common.c | 28 | ||||
-rw-r--r-- | gcc/ggc-page.c | 68 | ||||
-rw-r--r-- | gcc/ggc-simple.c | 10 | ||||
-rw-r--r-- | gcc/ggc.h | 10 | ||||
-rw-r--r-- | gcc/global.c | 36 | ||||
-rw-r--r-- | gcc/graph.h | 2 | ||||
-rw-r--r-- | gcc/gthr-dce.h | 24 | ||||
-rw-r--r-- | gcc/gthr-posix.h | 76 | ||||
-rw-r--r-- | gcc/gthr-rtems.h | 2 | ||||
-rw-r--r-- | gcc/gthr-solaris.h | 12 | ||||
-rw-r--r-- | gcc/gthr-win32.h | 52 | ||||
-rw-r--r-- | gcc/gthr.h | 2 |
19 files changed, 408 insertions, 387 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ea60f963b3c..3f2df697a8f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,24 @@ +2002-06-04 Kazu Hirata <kazu@cs.umass.edu> + + * gbl-ctors.h: Fix formatting. + * gcc.c: Likewise. + * gccspec.c: Likewise. + * gcov.c: Likewise. + * gcov-io.h: Likewise. + * gcse.c: Likewise. + * ggc-common.c: Likewise. + * ggc.h: Likewise. + * ggc-page.c: Likewise. + * ggc-simple.c: Likewise. + * global.c: Likewise. + * graph.h: Likewise. + * gthr-dce.h: Likewise. + * gthr.h: Likewise. + * gthr-posix.h: Likewise. + * gthr-rtems.h: Likewise. + * gthr-solaris.h: Likewise. + * gthr-win32.h: Likewise. + 2002-06-03 Geoffrey Keating <geoffk@redhat.com> Merge from pch-branch: @@ -1206,7 +1227,7 @@ Mon Jun 3 11:53:01 CEST 2002 Jan Hubicka <jh@suse.cz> 2002-06-02 Kazu Hirata <kazu@cs.umass.edu> - * emit-rtl.c: Likewise. + * emit-rtl.c: Fix formatting. * errors.h: Likewise. * except.c: Likewise. * explow.c: Likewise. diff --git a/gcc/gbl-ctors.h b/gcc/gbl-ctors.h index 02e6835fa27..3cc363d29d9 100644 --- a/gcc/gbl-ctors.h +++ b/gcc/gbl-ctors.h @@ -78,6 +78,6 @@ do { \ for (nptrs = 0; __CTOR_LIST__[nptrs + 1] != 0; nptrs++); \ for (i = nptrs; i >= 1; i--) \ __CTOR_LIST__[i] (); \ -} while (0) +} while (0) #endif diff --git a/gcc/gcc.c b/gcc/gcc.c index 50b219f3569..3c18f1a21e4 100644 --- a/gcc/gcc.c +++ b/gcc/gcc.c @@ -242,7 +242,7 @@ static const struct modify_target } modify_target[] = MODIFY_TARGET_NAME; #endif - + /* The number of errors that have occurred; the link phase will not be run if this is non-zero. */ static int error_count = 0; @@ -1522,12 +1522,12 @@ init_spec () { const char *p = libgcc_spec; int in_sep = 1; - + /* Transform the extant libgcc_spec into one that uses the shared libgcc when given the proper command line arguments. */ while (*p) { - if (in_sep && *p == '-' && strncmp (p, "-lgcc", 5) == 0) + if (in_sep && *p == '-' && strncmp (p, "-lgcc", 5) == 0) { init_gcc_specs (&obstack, #ifdef NO_SHARED_LIBGCC_MULTILIB @@ -2758,8 +2758,8 @@ execute () { const char *const *j; - if (verbose_only_flag) - { + if (verbose_only_flag) + { for (j = commands[i].argv; *j; j++) { const char *p; @@ -2772,8 +2772,8 @@ execute () } fputc ('"', stderr); } - } - else + } + else for (j = commands[i].argv; *j; j++) fprintf (stderr, " %s", *j); @@ -2784,7 +2784,7 @@ execute () } fflush (stderr); if (verbose_only_flag != 0) - return 0; + return 0; #ifdef DEBUG notice ("\nGo ahead? (y or n) "); fflush (stderr); @@ -3384,20 +3384,20 @@ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\n" add_linker_option ("--help", 6); } else if (strcmp (argv[i], "-ftarget-help") == 0) - { - /* translate_options() has turned --target-help into -ftarget-help. */ - target_help_flag = 1; + { + /* translate_options() has turned --target-help into -ftarget-help. */ + target_help_flag = 1; - /* We will be passing a dummy file on to the sub-processes. */ - n_infiles++; - n_switches++; + /* We will be passing a dummy file on to the sub-processes. */ + n_infiles++; + n_switches++; /* CPP driver cannot obtain switch from cc1_options. */ if (is_cpp_driver) add_preprocessor_option ("--target-help", 13); - add_assembler_option ("--target-help", 13); - add_linker_option ("--target-help", 13); - } + add_assembler_option ("--target-help", 13); + add_linker_option ("--target-help", 13); + } else if (! strcmp (argv[i], "-pass-exit-codes")) { pass_exit_codes = 1; @@ -3572,7 +3572,7 @@ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\n" tmp[++ len] = 0; value = tmp; } - + /* As a kludge, if the arg is "[foo/]stageN/", just add "[foo/]include" to the include prefix. */ if ((len == 7 @@ -3703,7 +3703,7 @@ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\n" if (is_modify_target_name) break; -#endif +#endif n_switches++; @@ -3893,7 +3893,7 @@ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\n" /* -save-temps overrides -pipe, so that temp files are produced */ if (save_temps_flag) error ("warning: -pipe ignored because -save-temps specified"); - /* -time overrides -pipe because we can't get correct stats when + /* -time overrides -pipe because we can't get correct stats when multiple children are running at once. */ else if (report_times) error ("warning: -pipe ignored because -time specified"); @@ -4509,7 +4509,7 @@ do_spec_1 (spec, inswitch, soft_matched_part) } suffix_length += strlen (TARGET_OBJECT_SUFFIX); } - + /* If the input_filename has the same suffix specified for the %g, %u, or %U, and -save-temps is specified, we could end up using that file as an intermediate @@ -4517,7 +4517,7 @@ do_spec_1 (spec, inswitch, soft_matched_part) gcc -save-temps foo.s would clobber foo.s with the output of cpp0). So check for this condition and generate a temp file as the intermediate. */ - + if (save_temps_flag) { temp_filename_length = basename_length + suffix_length; @@ -4529,7 +4529,7 @@ do_spec_1 (spec, inswitch, soft_matched_part) if (strcmp (temp_filename, input_filename) != 0) { struct stat st_temp; - + /* Note, set_input() resets input_stat_set to 0. */ if (input_stat_set == 0) { @@ -4537,17 +4537,17 @@ do_spec_1 (spec, inswitch, soft_matched_part) if (input_stat_set >= 0) input_stat_set = 1; } - + /* If we have the stat for the input_filename and we can do the stat for the temp_filename then the they could still refer to the same file if st_dev/st_ino's are the same. */ - + if (input_stat_set != 1 || stat (temp_filename, &st_temp) < 0 || input_stat.st_dev != st_temp.st_dev || input_stat.st_ino != st_temp.st_ino) - { + { temp_filename = save_string (temp_filename, temp_filename_length + 1); obstack_grow (&obstack, temp_filename, @@ -4755,8 +4755,8 @@ do_spec_1 (spec, inswitch, soft_matched_part) case 'C': { const char *const spec - = (input_file_compiler->cpp_spec - ? input_file_compiler->cpp_spec + = (input_file_compiler->cpp_spec + ? input_file_compiler->cpp_spec : cpp_spec); value = do_spec_1 (spec, 0, NULL); if (value != 0) @@ -4984,17 +4984,17 @@ do_spec_1 (spec, inswitch, soft_matched_part) obstack_1grow (&obstack, '%'); break; - case '.': - { - unsigned len = 0; + case '.': + { + unsigned len = 0; - while (p[len] && p[len] != ' ' && p[len] != '%') - len++; - suffix_subst = save_string (p - 1, len + 1); - p += len; - } + while (p[len] && p[len] != ' ' && p[len] != '%') + len++; + suffix_subst = save_string (p - 1, len + 1); + p += len; + } break; - + case '*': if (soft_matched_part) { @@ -5693,7 +5693,7 @@ set_input (filename) } else input_suffix = ""; - + /* If a spec for 'g', 'u', or 'U' is seen with -save-temps then we will need to do a stat on the input_filename. The INPUT_STAT_SET signals that the stat is needed. */ @@ -6095,7 +6095,7 @@ main (argc, argv) input_file_compiler = lookup_compiler (infiles[i].name, input_filename_length, infiles[i].language); - + if (input_file_compiler) { /* Ok, we found an applicable compiler. Run its spec. */ @@ -6234,7 +6234,7 @@ lookup_compiler (name, length, language) && !strcmp (cp->suffix, name + length - strlen (cp->suffix)) )) - break; + break; } #if defined (OS2) ||defined (HAVE_DOS_BASED_FILE_SYSTEM) diff --git a/gcc/gccspec.c b/gcc/gccspec.c index 867cbd52e05..79f3d667d5e 100644 --- a/gcc/gccspec.c +++ b/gcc/gccspec.c @@ -57,7 +57,7 @@ lang_specific_driver (in_argc, in_argv, in_added_libraries) } else { - int len; + int len; /* If the filename ends in .m or .mi, we are compiling ObjC and want to pass -shared-libgcc. */ diff --git a/gcc/gcov-io.h b/gcc/gcov-io.h index 9e1c081b16d..4c547b5969d 100644 --- a/gcc/gcov-io.h +++ b/gcc/gcov-io.h @@ -74,7 +74,7 @@ __store_gcov_type (value, dest, bytes) if (value && value != -1) return 1; - for(; i < bytes ; i++) + for(; i < bytes ; i++) dest[i] = 0; dest[bytes - 1] |= upper_bit; return 0; diff --git a/gcc/gcov.c b/gcc/gcov.c index fbc3d00e898..01e1a1dd77e 100644 --- a/gcc/gcov.c +++ b/gcc/gcov.c @@ -687,7 +687,7 @@ create_program_flow_graph (bptr) __read_long (&function_name_len, bbg_file, 4); function_name = xmalloc (function_name_len + 1); fread (function_name, 1, function_name_len + 1, bbg_file); - + /* Skip padding. */ tmp = (function_name_len + 1) % 4; @@ -695,7 +695,7 @@ create_program_flow_graph (bptr) fseek (bbg_file, 4 - tmp, SEEK_CUR); __read_long (&tmp, bbg_file, 4); /* ignore -1. */ - + /* Read the cfg checksum. */ __read_long (&cfg_checksum, bbg_file, 4); @@ -729,7 +729,7 @@ create_program_flow_graph (bptr) __read_long (&flag_bits, bbg_file, 4); if (flag_bits & 0x1) arcptr->on_tree++; - else + else instr_arcs++; arcptr->fake = !! (flag_bits & 0x2); arcptr->fall_through = !! (flag_bits & 0x4); @@ -1063,9 +1063,9 @@ calculate_branch_probs (current_graph, block_num, branch_probs, last_line_num) a_ptr = (struct arcdata *) xmalloc (sizeof (struct arcdata)); a_ptr->total = total; if (total == 0) - a_ptr->hits = 0; + a_ptr->hits = 0; else - a_ptr->hits = arcptr->arc_count; + a_ptr->hits = arcptr->arc_count; a_ptr->call_insn = arcptr->fake; if (output_function_summary) @@ -1565,8 +1565,8 @@ output_data () ((a_ptr->hits * 100) + (a_ptr->total >> 1)) / a_ptr->total); - fnotice (gcov_file, - "branch %d taken = %s%%\n", i, c); + fnotice (gcov_file, + "branch %d taken = %s%%\n", i, c); } } } diff --git a/gcc/gcse.c b/gcc/gcse.c index fa20e96a395..531a0fc0a37 100644 --- a/gcc/gcse.c +++ b/gcc/gcse.c @@ -158,7 +158,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA #include "basic-block.h" #include "output.h" #include "function.h" -#include "expr.h" +#include "expr.h" #include "except.h" #include "ggc.h" #include "params.h" @@ -454,13 +454,13 @@ static int reg_set_table_size; #define REG_SET_TABLE_SLOP 100 /* This is a list of expressions which are MEMs and will be used by load - or store motion. + or store motion. Load motion tracks MEMs which aren't killed by anything except itself. (ie, loads and stores to a single location). - We can then allow movement of these MEM refs with a little special + We can then allow movement of these MEM refs with a little special allowance. (all stores copy the same value to the reaching reg used for the loads). This means all values used to store into memory must have - no side effects so we can re-issue the setter value. + no side effects so we can re-issue the setter value. Store Motion uses this structure as an expression table to track stores which look interesting, and might be moveable towards the exit block. */ @@ -622,7 +622,7 @@ static int bypass_conditional_jumps PARAMS ((void)); static void alloc_pre_mem PARAMS ((int, int)); static void free_pre_mem PARAMS ((void)); static void compute_pre_data PARAMS ((void)); -static int pre_expr_reaches_here_p PARAMS ((basic_block, struct expr *, +static int pre_expr_reaches_here_p PARAMS ((basic_block, struct expr *, basic_block)); static void insert_insn_end_bb PARAMS ((struct expr *, basic_block, int)); static void pre_insert_copy_insn PARAMS ((struct expr *, rtx)); @@ -635,7 +635,7 @@ static void alloc_code_hoist_mem PARAMS ((int, int)); static void free_code_hoist_mem PARAMS ((void)); static void compute_code_hoist_vbeinout PARAMS ((void)); static void compute_code_hoist_data PARAMS ((void)); -static int hoist_expr_reaches_here_p PARAMS ((basic_block, int, basic_block, +static int hoist_expr_reaches_here_p PARAMS ((basic_block, int, basic_block, char *)); static void hoist_code PARAMS ((void)); static int one_code_hoisting_pass PARAMS ((void)); @@ -677,7 +677,7 @@ static inline struct ls_expr * first_ls_expr PARAMS ((void)); static inline struct ls_expr * next_ls_expr PARAMS ((struct ls_expr *)); static int simple_mem PARAMS ((rtx)); static void invalidate_any_buried_refs PARAMS ((rtx)); -static void compute_ld_motion_mems PARAMS ((void)); +static void compute_ld_motion_mems PARAMS ((void)); static void trim_ld_motion_mems PARAMS ((void)); static void update_ld_motion_stores PARAMS ((struct expr *)); static void reg_set_info PARAMS ((rtx, rtx, void *)); @@ -693,7 +693,7 @@ static void build_store_vectors PARAMS ((void)); static void insert_insn_start_bb PARAMS ((rtx, basic_block)); static int insert_store PARAMS ((struct ls_expr *, edge)); static void replace_store_insn PARAMS ((rtx, rtx, basic_block)); -static void delete_store PARAMS ((struct ls_expr *, +static void delete_store PARAMS ((struct ls_expr *, basic_block)); static void free_store_memory PARAMS ((void)); static void store_motion PARAMS ((void)); @@ -726,7 +726,7 @@ gcse_main (f, file) setjmp, so just punt to be safe. */ if (current_function_calls_setjmp) return 0; - + /* Assume that we do not need to run jump optimizations after gcse. */ run_jump_opt_after_gcse = 0; @@ -764,7 +764,7 @@ gcse_main (f, file) /* If allocating memory for the cprop bitmap would take up too much storage it's better just to disable the optimization. */ - if ((n_basic_blocks + if ((n_basic_blocks * SBITMAP_SET_SIZE (max_gcse_regno) * sizeof (SBITMAP_ELT_TYPE)) > MAX_GCSE_MEMORY) { @@ -826,7 +826,7 @@ gcse_main (f, file) if (optimize_size) changed |= one_classic_gcse_pass (pass + 1); else - { + { changed |= one_pre_gcse_pass (pass + 1); /* We may have just created new basic blocks. Release and recompute various things which are sized on the number of @@ -863,7 +863,7 @@ gcse_main (f, file) for space, we use a classic gcse algorithm instead of partial redundancy algorithms). */ if (optimize_size) - { + { max_gcse_regno = max_reg_num (); alloc_gcse_mem (f); changed |= one_code_hoisting_pass (); @@ -871,7 +871,7 @@ gcse_main (f, file) if (max_pass_bytes < bytes_used) max_pass_bytes = bytes_used; - } + } if (file) { @@ -1118,7 +1118,7 @@ get_bitmap_width (n, x, y) the expr hash table; if nonzero this routine looks at the set hash table. Additionally, TRANSP is computed as ~TRANSP, since this is really cprop's ABSALTERED. */ - + static void compute_local_properties (transp, comp, antloc, setp) sbitmap *transp; @@ -1128,7 +1128,7 @@ compute_local_properties (transp, comp, antloc, setp) { unsigned int i, hash_table_size; struct expr **hash_table; - + /* Initialize any bitmaps that were passed in. */ if (transp) { @@ -1378,7 +1378,7 @@ oprs_unchanged_p (x, insn, avail_p) if (info->last_bb != current_bb) return 1; - if (avail_p) + if (avail_p) return info->last_set < INSN_CUID (insn); else return info->first_set >= INSN_CUID (insn); @@ -1470,8 +1470,8 @@ mems_conflict_for_gcse_p (dest, setter, data) return; /* If we are setting a MEM in our list of specially recognized MEMs, - don't mark as killed this time. */ - + don't mark as killed this time. */ + if (dest == gcse_mem_operand && pre_ldst_mems != NULL) { if (!find_rtx_in_ldst (dest)) @@ -1522,7 +1522,7 @@ load_killed_in_block_p (bb, uid_limit, x, avail_p) return 1; /* SETTER must be an INSN of some kind that sets memory. Call - note_stores to examine each hunk of memory that is modified. + note_stores to examine each hunk of memory that is modified. The note_stores interface is pretty limited, so we have to communicate via global variables. Yuk. */ @@ -1587,7 +1587,7 @@ hash_string_1 (ps) { unsigned hash = 0; const unsigned char *p = (const unsigned char *) ps; - + if (p) while (*p) hash += *p++; @@ -1995,7 +1995,7 @@ insert_expr_in_table (x, mode, insn, antic_p, avail_p) /* Add EXPR to end of this hash chain. */ last_expr->next_same_hash = cur_expr; - /* Set the fields of the expr element. */ + /* Set the fields of the expr element. */ cur_expr->expr = x; cur_expr->bitmap_index = n_exprs++; cur_expr->next_same_hash = NULL; @@ -2318,7 +2318,7 @@ dump_hash_table (file, name, table, table_size, total_size) unsigned int *hash_val; struct expr *expr; - flat_table + flat_table = (struct expr **) xcalloc (total_size, sizeof (struct expr *)); hash_val = (unsigned int *) xmalloc (total_size * sizeof (unsigned int)); @@ -2384,7 +2384,7 @@ record_last_reg_set_info (insn, regno) Note we store a pair of elements in the list, so they have to be taken off pairwise. */ -static void +static void canon_list_insert (dest, unused1, v_insn) rtx dest ATTRIBUTE_UNUSED; rtx unused1 ATTRIBUTE_UNUSED; @@ -2408,12 +2408,12 @@ canon_list_insert (dest, unused1, v_insn) dest_addr = get_addr (XEXP (dest, 0)); dest_addr = canon_rtx (dest_addr); - insn = (rtx) v_insn; + insn = (rtx) v_insn; bb = BLOCK_NUM (insn); - canon_modify_mem_list[bb] = + canon_modify_mem_list[bb] = alloc_EXPR_LIST (VOIDmode, dest_addr, canon_modify_mem_list[bb]); - canon_modify_mem_list[bb] = + canon_modify_mem_list[bb] = alloc_EXPR_LIST (VOIDmode, dest, canon_modify_mem_list[bb]); bitmap_set_bit (canon_modify_mem_list_set, bb); } @@ -2438,8 +2438,8 @@ record_last_mem_set_info (insn) /* Note that traversals of this loop (other than for free-ing) will break after encountering a CALL_INSN. So, there's no need to insert a pair of items, as canon_list_insert does. */ - canon_modify_mem_list[bb] = - alloc_INSN_LIST (insn, canon_modify_mem_list[bb]); + canon_modify_mem_list[bb] = + alloc_INSN_LIST (insn, canon_modify_mem_list[bb]); bitmap_set_bit (canon_modify_mem_list_set, bb); } else @@ -2527,7 +2527,7 @@ compute_hash_table (set_p) if (GET_CODE (insn) == CALL_INSN) { bool clobbers_all = false; -#ifdef NON_SAVING_SETJMP +#ifdef NON_SAVING_SETJMP if (NON_SAVING_SETJMP && find_reg_note (insn, REG_SETJMP, NULL_RTX)) clobbers_all = true; @@ -2552,12 +2552,12 @@ compute_hash_table (set_p) if (INSN_P (insn)) { if (find_reg_note (insn, REG_LIBCALL, NULL_RTX)) - in_libcall_block = 1; - else if (set_p && find_reg_note (insn, REG_RETVAL, NULL_RTX)) - in_libcall_block = 0; - hash_scan_insn (insn, set_p, in_libcall_block); - if (!set_p && find_reg_note (insn, REG_RETVAL, NULL_RTX)) - in_libcall_block = 0; + in_libcall_block = 1; + else if (set_p && find_reg_note (insn, REG_RETVAL, NULL_RTX)) + in_libcall_block = 0; + hash_scan_insn (insn, set_p, in_libcall_block); + if (!set_p && find_reg_note (insn, REG_RETVAL, NULL_RTX)) + in_libcall_block = 0; } } @@ -2814,7 +2814,7 @@ oprs_not_set_p (x, insn) return 1; case MEM: - if (load_killed_in_block_p (BLOCK_FOR_INSN (insn), + if (load_killed_in_block_p (BLOCK_FOR_INSN (insn), INSN_CUID (insn), x, 0)) return 0; else @@ -3030,7 +3030,7 @@ compute_kill_rd () } } -/* Compute the reaching definitions as in +/* Compute the reaching definitions as in Compilers Principles, Techniques, and Tools. Aho, Sethi, Ullman, Chapter 10. It is the same algorithm as used for computing available expressions but applied to the gens and kills of reaching definitions. */ @@ -3263,7 +3263,7 @@ expr_reaches_here_p_work (occr, expr, bb, check_self_loop, visited) else { visited[pred_bb->index] = 1; - if (expr_reaches_here_p_work (occr, expr, pred_bb, check_self_loop, + if (expr_reaches_here_p_work (occr, expr, pred_bb, check_self_loop, visited)) return 1; @@ -3288,7 +3288,7 @@ expr_reaches_here_p (occr, expr, bb, check_self_loop) char *visited = (char *) xcalloc (last_basic_block, 1); rval = expr_reaches_here_p_work (occr, expr, bb, check_self_loop, visited); - + free (visited); return rval; } @@ -3306,7 +3306,7 @@ computing_insn (expr, insn) basic_block bb = BLOCK_FOR_INSN (insn); if (expr->avail_occr->next == NULL) - { + { if (BLOCK_FOR_INSN (expr->avail_occr->insn) == bb) /* The available expression is actually itself (i.e. a loop in the flow graph) so do nothing. */ @@ -3319,7 +3319,7 @@ computing_insn (expr, insn) else { /* Pattern is computed more than once. - Search backwards from this insn to see how many of these + Search backwards from this insn to see how many of these computations actually reach this insn. */ struct occr *occr; rtx insn_computes_expr = NULL; @@ -3437,7 +3437,7 @@ can_disregard_other_sets (addr_this_reg, insn, for_combine) return 0; } - *addr_this_reg = this_reg; + *addr_this_reg = this_reg; } return number_of_reaching_defs; @@ -3593,7 +3593,7 @@ handle_avail_expr (insn, expr) REGNO (SET_DEST (PATTERN (NEXT_INSN (insn_computes_expr))))); fprintf (gcse_file, "set in insn %d\n", - INSN_UID (insn_computes_expr)); + INSN_UID (insn_computes_expr)); } } } @@ -3826,7 +3826,7 @@ compute_transp (x, indx, bmap, set_p) dest = XEXP (list_entry, 0); list_entry = XEXP (list_entry, 1); dest_addr = XEXP (list_entry, 0); - + if (canon_true_dependence (dest, GET_MODE (dest), dest_addr, x, rtx_addr_varies_p)) { @@ -4016,7 +4016,7 @@ find_avail_set (regno, insn) /* SET1 contains the last set found that can be returned to the caller for use in a substitution. */ struct expr *set1 = 0; - + /* Loops are not possible here. To get a loop we would need two sets available at the start of the block containing INSN. ie we would need two sets like this available at the start of the block: @@ -4043,7 +4043,7 @@ find_avail_set (regno, insn) /* If no available set was found we've reached the end of the (possibly empty) copy chain. */ if (set == 0) - break; + break; if (GET_CODE (set->expr) != SET) abort (); @@ -4052,7 +4052,7 @@ find_avail_set (regno, insn) /* We know the set is available. Now check that SRC is ANTLOC (i.e. none of the source operands - have changed since the start of the block). + have changed since the start of the block). If the source operand changed, we may still use it for the next iteration of this loop, but we may not use it for substitutions. */ @@ -4080,7 +4080,7 @@ find_avail_set (regno, insn) it is the instruction that immediately preceeds JUMP, and must be a single SET of a register. FROM is what we will try to replace, SRC is the constant we will try to substitute for it. Returns nonzero - if a change was made. */ + if a change was made. */ static int cprop_jump (bb, setcc, jump, from, src) @@ -4111,7 +4111,7 @@ cprop_jump (bb, setcc, jump, from, src) register. */ if (rtx_equal_p (new, new_set)) return 0; - + /* If this is now a no-op delete it, otherwise this must be a valid insn. */ if (new == pc_rtx) delete_insn (jump); @@ -4167,7 +4167,7 @@ cprop_insn (bb, insn, alter_jumps) reg_use_count = 0; note_uses (&PATTERN (insn), find_used_regs, NULL); - + note = find_reg_equal_equiv_note (insn); /* We may win even when propagating constants into notes. */ @@ -4196,7 +4196,7 @@ cprop_insn (bb, insn, alter_jumps) set = find_avail_set (regno, insn); if (! set) continue; - + pat = set->expr; /* ??? We might be able to handle PARALLELs. Later. */ if (GET_CODE (pat) != SET) @@ -4214,7 +4214,7 @@ cprop_insn (bb, insn, alter_jumps) if (alter_jumps && (sset = single_set (insn)) != NULL && any_condjump_p (NEXT_INSN (insn)) - && onlyjump_p (NEXT_INSN (insn))) + && onlyjump_p (NEXT_INSN (insn))) { rtx dest = SET_DEST (sset); if ((REG_P (dest) || CC0_P (dest)) @@ -4449,30 +4449,30 @@ bypass_block (bb, setcc, jump) for (i = 0; i < reg_use_count; i++) { struct reg_use *reg_used = ®_use_table[i]; - unsigned int regno = REGNO (reg_used->reg_rtx); + unsigned int regno = REGNO (reg_used->reg_rtx); basic_block dest, old_dest; - struct expr *set; - rtx src, new; + struct expr *set; + rtx src, new; - if (regno >= max_gcse_regno) - continue; + if (regno >= max_gcse_regno) + continue; - set = find_bypass_set (regno, e->src->index); + set = find_bypass_set (regno, e->src->index); if (! set) continue; - src = SET_SRC (pc_set (jump)); + src = SET_SRC (pc_set (jump)); if (setcc != NULL) src = simplify_replace_rtx (src, - SET_DEST (PATTERN (setcc)), - SET_SRC (PATTERN (setcc))); + SET_DEST (PATTERN (setcc)), + SET_SRC (PATTERN (setcc))); new = simplify_replace_rtx (src, reg_used->reg_rtx, - SET_SRC (set->expr)); + SET_SRC (set->expr)); - if (new == pc_rtx) + if (new == pc_rtx) dest = FALLTHRU_EDGE (bb)->dest; else if (GET_CODE (new) == LABEL_REF) dest = BRANCH_EDGE (bb)->dest; @@ -4530,7 +4530,7 @@ bypass_conditional_jumps () changed = 0; FOR_BB_BETWEEN (bb, ENTRY_BLOCK_PTR->next_bb->next_bb, - EXIT_BLOCK_PTR, next_bb) + EXIT_BLOCK_PTR, next_bb) { /* Check for more than one predecessor. */ if (bb->pred && bb->pred->pred_next) @@ -4710,7 +4710,7 @@ compute_pre_data () sbitmap_vector_free (antloc); antloc = NULL; sbitmap_vector_free (ae_kill); - ae_kill = NULL; + ae_kill = NULL; sbitmap_free (trapping_expr); } @@ -4795,7 +4795,7 @@ pre_expr_reaches_here_p (occr_bb, expr, bb) /* Given an expr, generate RTL which we can insert at the end of a BB, - or on an edge. Set the block number of any insns generated to + or on an edge. Set the block number of any insns generated to the value of BB. */ static rtx @@ -4818,13 +4818,13 @@ process_insert_insn (expr) expression to make sure we don't have any sharing issues. */ else if (insn_invalid_p (emit_insn (gen_rtx_SET (VOIDmode, reg, exp)))) abort (); - + pat = gen_sequence (); end_sequence (); return pat; } - + /* Add EXPR to the end of basic block BB. This is used by both the PRE and code hoisting. @@ -4864,7 +4864,7 @@ insert_insn_end_bb (expr, bb, pre) Check this. */ if (GET_CODE (insn) == INSN && pre && !TEST_BIT (antloc[bb->index], expr->bitmap_index) - && !TEST_BIT (transp[bb->index], expr->bitmap_index)) + && !TEST_BIT (transp[bb->index], expr->bitmap_index)) abort (); /* If this is a jump table, then we can't insert stuff here. Since @@ -4901,7 +4901,7 @@ insert_insn_end_bb (expr, bb, pre) /* Keeping in mind SMALL_REGISTER_CLASSES and parameters in registers, we search backward and place the instructions before the first parameter is loaded. Do this for everyone for consistency and a - presumtion that we'll get better code elsewhere as well. + presumtion that we'll get better code elsewhere as well. It should always be the case that we can put these instructions anywhere in the basic block with performing PRE optimizations. @@ -4909,7 +4909,7 @@ insert_insn_end_bb (expr, bb, pre) if (pre && !TEST_BIT (antloc[bb->index], expr->bitmap_index) - && !TEST_BIT (transp[bb->index], expr->bitmap_index)) + && !TEST_BIT (transp[bb->index], expr->bitmap_index)) abort (); /* Since different machines initialize their parameter registers @@ -5129,7 +5129,7 @@ pre_insert_copies () continue; /* Or if the expression doesn't reach the deleted one. */ - if (! pre_expr_reaches_here_p (BLOCK_FOR_INSN (avail->insn), + if (! pre_expr_reaches_here_p (BLOCK_FOR_INSN (avail->insn), expr, BLOCK_FOR_INSN (occr->insn))) continue; @@ -5377,7 +5377,7 @@ add_label_notes (x, insn) REG_NOTES (insn) = gen_rtx_INSN_LIST (REG_LABEL, XEXP (x, 0), REG_NOTES (insn)); if (LABEL_P (XEXP (x, 0))) - LABEL_NUSES (XEXP (x, 0))++; + LABEL_NUSES (XEXP (x, 0))++; return; } @@ -5428,7 +5428,7 @@ compute_transpout () if (GET_CODE (XEXP (expr->expr, 0)) == SYMBOL_REF && CONSTANT_POOL_ADDRESS_P (XEXP (expr->expr, 0))) continue; - + /* ??? Optimally, we would use interprocedural alias analysis to determine if this mem is actually killed by this call. */ @@ -5484,7 +5484,7 @@ delete_null_pointer_checks_1 (block_reg, nonnull_avin, basic_block bb, current_block; sbitmap *nonnull_local = npi->nonnull_local; sbitmap *nonnull_killed = npi->nonnull_killed; - + /* Compute local properties, nonnull and killed. A register will have the nonnull property if at the end of the current block its value is known to be nonnull. The killed property indicates that somewhere in @@ -5607,11 +5607,11 @@ delete_null_pointer_checks_1 (block_reg, nonnull_avin, delete_insn (last_insn); if (compare_and_branch == 2) - delete_insn (earliest); + delete_insn (earliest); purge_dead_edges (bb); /* Don't check this block again. (Note that BLOCK_END is - invalid here; we deleted the last instruction in the + invalid here; we deleted the last instruction in the block.) */ block_reg[bb->index] = 0; } @@ -5629,7 +5629,7 @@ delete_null_pointer_checks_1 (block_reg, nonnull_avin, So, if every path leading to a conditional branch has an available memory reference of that form, then we know the register can not have the value - zero at the conditional branch. + zero at the conditional branch. So we merely need to compute the local properies and propagate that data around the cfg, then optimize where possible. @@ -5702,7 +5702,7 @@ delete_null_pointer_checks (f) if (!condition || (GET_CODE (condition) != NE && GET_CODE (condition) != EQ) || GET_CODE (XEXP (condition, 1)) != CONST_INT - || (XEXP (condition, 1) + || (XEXP (condition, 1) != CONST0_RTX (GET_MODE (XEXP (condition, 0))))) continue; @@ -5860,7 +5860,7 @@ hoist_expr_reaches_here_p (expr_bb, expr_index, bb, visited) { edge pred; int visited_allocated_locally = 0; - + if (visited == NULL) { @@ -5892,7 +5892,7 @@ hoist_expr_reaches_here_p (expr_bb, expr_index, bb, visited) break; } } - if (visited_allocated_locally) + if (visited_allocated_locally) free (visited); return (pred == NULL); @@ -5950,7 +5950,7 @@ hoist_code () continue; /* Note if the expression would reach the dominated block - unimpared if it was placed at the end of BB. + unimpared if it was placed at the end of BB. Keep track of how many times this expression is hoistable from a dominated block into BB. */ @@ -5975,7 +5975,7 @@ hoist_code () } } } - + /* If we found nothing to hoist, then quit now. */ if (! found) continue; @@ -6027,7 +6027,7 @@ hoist_code () abort (); insn = occr->insn; - + set = single_set (insn); if (! set) abort (); @@ -6098,10 +6098,10 @@ one_code_hoisting_pass () } 'i' is both loaded and stored to in the loop. Normally, gcse cannot move - the load out since its live around the loop, and stored at the bottom - of the loop. + the load out since its live around the loop, and stored at the bottom + of the loop. - The 'Load Motion' referred to and implemented in this file is + The 'Load Motion' referred to and implemented in this file is an enhancement to gcse which when using edge based lcm, recognizes this situation and allows gcse to move the load out of the loop. @@ -6137,13 +6137,13 @@ ldst_entry (x) ptr->hash_index = 0; pre_ldst_mems = ptr; } - + return ptr; } /* Free up an individual ldst entry. */ -static void +static void free_ldst_entry (ptr) struct ls_expr * ptr; { @@ -6158,7 +6158,7 @@ free_ldst_entry (ptr) static void free_ldst_mems () { - while (pre_ldst_mems) + while (pre_ldst_mems) { struct ls_expr * tmp = pre_ldst_mems; @@ -6213,7 +6213,7 @@ find_rtx_in_ldst (x) rtx x; { struct ls_expr * ptr; - + for (ptr = pre_ldst_mems; ptr != NULL; ptr = ptr->next) if (expr_equiv_p (ptr->pattern, x) && ! ptr->invalid) return ptr; @@ -6258,31 +6258,31 @@ next_ls_expr (ptr) side effects. These are the types of loads we consider for the ld_motion list, otherwise we let the usual aliasing take care of it. */ -static int +static int simple_mem (x) rtx x; { if (GET_CODE (x) != MEM) return 0; - + if (MEM_VOLATILE_P (x)) return 0; - + if (GET_MODE (x) == BLKmode) return 0; if (!rtx_varies_p (XEXP (x, 0), 0)) return 1; - + return 0; } -/* Make sure there isn't a buried reference in this pattern anywhere. - If there is, invalidate the entry for it since we're not capable - of fixing it up just yet.. We have to be sure we know about ALL +/* Make sure there isn't a buried reference in this pattern anywhere. + If there is, invalidate the entry for it since we're not capable + of fixing it up just yet.. We have to be sure we know about ALL loads since the aliasing code will allow all entries in the ld_motion list to not-alias itself. If we miss a load, we will get - the wrong value since gcse might common it and we won't know to + the wrong value since gcse might common it and we won't know to fix it up. */ static void @@ -6302,7 +6302,7 @@ invalidate_any_buried_refs (x) /* Recursively process the insn. */ fmt = GET_RTX_FORMAT (GET_CODE (x)); - + for (i = GET_RTX_LENGTH (GET_CODE (x)) - 1; i >= 0; i--) { if (fmt[i] == 'e') @@ -6315,17 +6315,17 @@ invalidate_any_buried_refs (x) /* Find all the 'simple' MEMs which are used in LOADs and STORES. Simple being defined as MEM loads and stores to symbols, with no - side effects and no registers in the expression. If there are any + side effects and no registers in the expression. If there are any uses/defs which don't match this criteria, it is invalidated and trimmed out later. */ -static void +static void compute_ld_motion_mems () { struct ls_expr * ptr; basic_block bb; rtx insn; - + pre_ldst_mems = NULL; FOR_EACH_BB (bb) @@ -6355,7 +6355,7 @@ compute_ld_motion_mems () /* Make sure there isn't a buried load somewhere. */ invalidate_any_buried_refs (src); } - + /* Check for stores. Don't worry about aliased ones, they will block any movement we might do later. We only care about this exact pattern since those are the only @@ -6363,7 +6363,7 @@ compute_ld_motion_mems () if (GET_CODE (dest) == MEM && simple_mem (dest)) { ptr = ldst_entry (dest); - + if (GET_CODE (src) != MEM && GET_CODE (src) != ASM_OPERANDS) ptr->stores = alloc_INSN_LIST (insn, ptr->stores); @@ -6378,7 +6378,7 @@ compute_ld_motion_mems () } } -/* Remove any references that have been either invalidated or are not in the +/* Remove any references that have been either invalidated or are not in the expression list for pre gcse. */ static void @@ -6391,18 +6391,18 @@ trim_ld_motion_mems () { int del = ptr->invalid; struct expr * expr = NULL; - + /* Delete if entry has been made invalid. */ - if (!del) + if (!del) { unsigned int i; - + del = 1; /* Delete if we cannot find this mem in the expression list. */ for (i = 0; i < expr_hash_table_size && del; i++) { - for (expr = expr_hash_table[i]; - expr != NULL; + for (expr = expr_hash_table[i]; + expr != NULL; expr = expr->next_same_hash) if (expr_equiv_p (expr->expr, ptr->pattern)) { @@ -6411,7 +6411,7 @@ trim_ld_motion_mems () } } } - + if (del) { if (last != NULL) @@ -6456,16 +6456,16 @@ update_ld_motion_stores (expr) if ((mem_ptr = find_rtx_in_ldst (expr->expr))) { - /* We can try to find just the REACHED stores, but is shouldn't - matter to set the reaching reg everywhere... some might be + /* We can try to find just the REACHED stores, but is shouldn't + matter to set the reaching reg everywhere... some might be dead and should be eliminated later. */ /* We replace SET mem = expr with SET reg = expr - SET mem = reg , where reg is the + SET mem = reg , where reg is the reaching reg used in the load. */ rtx list = mem_ptr->stores; - + for ( ; list != NULL_RTX; list = XEXP (list, 1)) { rtx insn = XEXP (list, 0); @@ -6477,7 +6477,7 @@ update_ld_motion_stores (expr) /* If we've already copied it, continue. */ if (expr->reaching_reg == src) continue; - + if (gcse_file) { fprintf (gcse_file, "PRE: store updated with reaching reg "); @@ -6486,7 +6486,7 @@ update_ld_motion_stores (expr) print_inline_rtx (gcse_file, insn, 8); fprintf (gcse_file, "\n"); } - + copy = gen_move_insn ( reg, SET_SRC (pat)); new = emit_insn_before (copy, insn); record_one_set (REGNO (reg), new); @@ -6501,7 +6501,7 @@ update_ld_motion_stores (expr) /* Store motion code. */ -/* This is used to communicate the target bitvector we want to use in the +/* This is used to communicate the target bitvector we want to use in the reg_set_info routine when called via the note_stores mechanism. */ static sbitmap * regvec; @@ -6525,7 +6525,7 @@ reg_set_info (dest, setter, data) SET_BIT (*regvec, REGNO (dest)); } -/* Return non-zero if the register operands of expression X are killed +/* Return non-zero if the register operands of expression X are killed anywhere in basic block BB. */ static int @@ -6579,7 +6579,7 @@ store_ops_ok (x, bb) i = GET_RTX_LENGTH (code) - 1; fmt = GET_RTX_FORMAT (code); - + for (; i >= 0; i--) { if (fmt[i] == 'e') @@ -6594,14 +6594,14 @@ store_ops_ok (x, bb) x = tem; goto repeat; } - + if (! store_ops_ok (tem, bb)) return 0; } else if (fmt[i] == 'E') { int j; - + for (j = 0; j < XVECLEN (x, i); j++) { if (! store_ops_ok (XVECEXP (x, i, j), bb)) @@ -6627,7 +6627,7 @@ find_moveable_store (insn) return; dest = SET_DEST (dest); - + if (GET_CODE (dest) != MEM || MEM_VOLATILE_P (dest) || GET_MODE (dest) == BLKmode) return; @@ -6675,7 +6675,7 @@ compute_store_table () if (GET_CODE (insn) == CALL_INSN) { bool clobbers_all = false; -#ifdef NON_SAVING_SETJMP +#ifdef NON_SAVING_SETJMP if (NON_SAVING_SETJMP && find_reg_note (insn, REG_SETJMP, NULL_RTX)) clobbers_all = true; @@ -6686,10 +6686,10 @@ compute_store_table () || TEST_HARD_REG_BIT (regs_invalidated_by_call, regno)) SET_BIT (reg_set_in_block[bb->index], regno); } - + pat = PATTERN (insn); note_stores (pat, reg_set_info, NULL); - + /* Now that we've marked regs, look for stores. */ if (GET_CODE (pat) == SET) find_moveable_store (insn); @@ -6697,13 +6697,13 @@ compute_store_table () } ret = enumerate_ldsts (); - + if (gcse_file) { fprintf (gcse_file, "Store Motion Expressions.\n"); print_ldst_list (gcse_file); } - + return ret; } @@ -6718,7 +6718,7 @@ load_kills_store (x, store_pattern) return 0; } -/* Go through the entire insn X, looking for any loads which might alias +/* Go through the entire insn X, looking for any loads which might alias STORE_PATTERN. Return 1 if found. */ static int @@ -6732,7 +6732,7 @@ find_loads (x, store_pattern) if (!x) return 0; - if (GET_CODE (x) == SET) + if (GET_CODE (x) == SET) x = SET_SRC (x); if (GET_CODE (x) == MEM) @@ -6743,7 +6743,7 @@ find_loads (x, store_pattern) /* Recursively process the insn. */ fmt = GET_RTX_FORMAT (GET_CODE (x)); - + for (i = GET_RTX_LENGTH (GET_CODE (x)) - 1; i >= 0 && !ret; i--) { if (fmt[i] == 'e') @@ -6755,23 +6755,23 @@ find_loads (x, store_pattern) return ret; } -/* Check if INSN kills the store pattern X (is aliased with it). +/* Check if INSN kills the store pattern X (is aliased with it). Return 1 if it it does. */ -static int +static int store_killed_in_insn (x, insn) rtx x, insn; { if (GET_RTX_CLASS (GET_CODE (insn)) != 'i') return 0; - + if (GET_CODE (insn) == CALL_INSN) { /* A normal or pure call might read from pattern, but a const call will not. */ return ! CONST_OR_PURE_CALL_P (insn) || pure_call_p (insn); } - + if (GET_CODE (PATTERN (insn)) == SET) { rtx pat = PATTERN (insn); @@ -6789,19 +6789,19 @@ store_killed_in_insn (x, insn) /* Returns 1 if the expression X is loaded or clobbered on or after INSN within basic block BB. */ -static int +static int store_killed_after (x, insn, bb) rtx x, insn; basic_block bb; { rtx last = bb->end; - + if (insn == last) return 0; /* Check if the register operands of the store are OK in this block. - Note that if registers are changed ANYWHERE in the block, we'll - decide we can't move it, regardless of whether it changed above + Note that if registers are changed ANYWHERE in the block, we'll + decide we can't move it, regardless of whether it changed above or below the store. This could be improved by checking the register operands while lookinng for aliasing in each insn. */ if (!store_ops_ok (XEXP (x, 0), bb)) @@ -6810,13 +6810,13 @@ store_killed_after (x, insn, bb) for ( ; insn && insn != NEXT_INSN (last); insn = NEXT_INSN (insn)) if (store_killed_in_insn (x, insn)) return 1; - + return 0; } /* Returns 1 if the expression X is loaded or clobbered on or before INSN within basic block BB. */ -static int +static int store_killed_before (x, insn, bb) rtx x, insn; basic_block bb; @@ -6825,10 +6825,10 @@ store_killed_before (x, insn, bb) if (insn == first) return store_killed_in_insn (x, insn); - + /* Check if the register operands of the store are OK in this block. - Note that if registers are changed ANYWHERE in the block, we'll - decide we can't move it, regardless of whether it changed above + Note that if registers are changed ANYWHERE in the block, we'll + decide we can't move it, regardless of whether it changed above or below the store. This could be improved by checking the register operands while lookinng for aliasing in each insn. */ if (!store_ops_ok (XEXP (x, 0), bb)) @@ -6837,7 +6837,7 @@ store_killed_before (x, insn, bb) for ( ; insn && insn != PREV_INSN (first); insn = PREV_INSN (insn)) if (store_killed_in_insn (x, insn)) return 1; - + return 0; } @@ -6848,7 +6848,7 @@ store_killed_before (x, insn, bb) determine which ones are not killed by aliasing, and generate the appropriate vectors for gen and killed. */ static void -build_store_vectors () +build_store_vectors () { basic_block bb, b; rtx insn, st; @@ -6863,7 +6863,7 @@ build_store_vectors () sbitmap_vector_zero (st_antloc, last_basic_block); for (ptr = first_ls_expr (); ptr != NULL; ptr = next_ls_expr (ptr)) - { + { /* Put all the stores into either the antic list, or the avail list, or both. */ rtx store_list = ptr->stores; @@ -6873,7 +6873,7 @@ build_store_vectors () { insn = XEXP (st, 0); bb = BLOCK_FOR_INSN (insn); - + if (!store_killed_after (ptr->pattern, insn, bb)) { /* If we've already seen an availale expression in this block, @@ -6902,7 +6902,7 @@ build_store_vectors () AVAIL_STORE_LIST (ptr) = alloc_INSN_LIST (insn, AVAIL_STORE_LIST (ptr)); } - + if (!store_killed_before (ptr->pattern, insn, bb)) { SET_BIT (st_antloc[BLOCK_NUM (insn)], ptr->index); @@ -6910,11 +6910,11 @@ build_store_vectors () ANTIC_STORE_LIST (ptr)); } } - + /* Free the original list of store insns. */ free_INSN_LIST_list (&store_list); } - + ae_kill = (sbitmap *) sbitmap_vector_alloc (last_basic_block, num_stores); sbitmap_vector_zero (ae_kill, last_basic_block); @@ -6928,7 +6928,7 @@ build_store_vectors () { /* The anticipatable expression is not killed if it's gen'd. */ /* - We leave this check out for now. If we have a code sequence + We leave this check out for now. If we have a code sequence in a block which looks like: ST MEMa = x L y = MEMa @@ -6936,7 +6936,7 @@ build_store_vectors () We should flag this as having an ANTIC expression, NOT transparent, NOT killed, and AVAIL. Unfortunately, since we haven't re-written all loads to - use the reaching reg, we'll end up doing an incorrect + use the reaching reg, we'll end up doing an incorrect Load in the middle here if we push the store down. It happens in gcc.c-torture/execute/960311-1.c with -O3 If we always kill it in this case, we'll sometimes do @@ -6952,7 +6952,7 @@ build_store_vectors () we better mark the store killed here, or we might not store to it at all. If we knew it was abort, we wouldn't have to store, but we don't know that for sure. */ - if (gcse_file) + if (gcse_file) { fprintf (gcse_file, "ST_avail and ST_antic (shown under loads..)\n"); print_ldst_list (gcse_file); @@ -6963,10 +6963,10 @@ build_store_vectors () } } -/* Insert an instruction at the begining of a basic block, and update +/* Insert an instruction at the begining of a basic block, and update the BLOCK_HEAD if needed. */ -static void +static void insert_insn_start_bb (insn, bb) rtx insn; basic_block bb; @@ -7017,7 +7017,7 @@ insert_store (expr, e) reg = expr->reaching_reg; insn = gen_move_insn (expr->pattern, reg); - + /* If we are inserting this expression on ALL predecessor edges of a BB, insert it at the start of the BB, and reset the insert bits on the other edges so we don't try to insert it on the other edges. */ @@ -7043,7 +7043,7 @@ insert_store (expr, e) insert_insn_start_bb (insn, bb); return 0; } - + /* We can't insert on this edge, so we'll insert at the head of the successors block. See Morgan, sec 10.5. */ if ((e->flags & EDGE_ABNORMAL) == EDGE_ABNORMAL) @@ -7053,7 +7053,7 @@ insert_store (expr, e) } insert_insn_on_edge (insn, e); - + if (gcse_file) { fprintf (gcse_file, "STORE_MOTION insert insn on edge (%d, %d):\n", @@ -7061,7 +7061,7 @@ insert_store (expr, e) print_inline_rtx (gcse_file, insn, 6); fprintf (gcse_file, "\n"); } - + return 1; } @@ -7073,20 +7073,20 @@ replace_store_insn (reg, del, bb) basic_block bb; { rtx insn; - + insn = gen_move_insn (reg, SET_SRC (PATTERN (del))); insn = emit_insn_after (insn, del); - + if (gcse_file) { - fprintf (gcse_file, + fprintf (gcse_file, "STORE_MOTION delete insn in BB %d:\n ", bb->index); print_inline_rtx (gcse_file, del, 6); fprintf (gcse_file, "\nSTORE MOTION replaced with insn:\n "); print_inline_rtx (gcse_file, insn, 6); fprintf (gcse_file, "\n"); } - + delete_insn (del); } @@ -7103,18 +7103,18 @@ delete_store (expr, bb) if (expr->reaching_reg == NULL_RTX) expr->reaching_reg = gen_reg_rtx (GET_MODE (expr->pattern)); - - /* If there is more than 1 store, the earlier ones will be dead, - but it doesn't hurt to replace them here. */ + + /* If there is more than 1 store, the earlier ones will be dead, + but it doesn't hurt to replace them here. */ reg = expr->reaching_reg; - + for (i = AVAIL_STORE_LIST (expr); i; i = XEXP (i, 1)) { del = XEXP (i, 0); if (BLOCK_FOR_INSN (del) == bb) { - /* We know there is only one since we deleted redundant + /* We know there is only one since we deleted redundant ones during the available computation. */ replace_store_insn (reg, del, bb); break; @@ -7124,11 +7124,11 @@ delete_store (expr, bb) /* Free memory used by store motion. */ -static void +static void free_store_memory () { free_ldst_mems (); - + if (ae_gen) sbitmap_vector_free (ae_gen); if (ae_kill) @@ -7143,7 +7143,7 @@ free_store_memory () sbitmap_vector_free (pre_delete_map); if (reg_set_in_block) sbitmap_vector_free (reg_set_in_block); - + ae_gen = ae_kill = transp = st_antloc = NULL; pre_insert_map = pre_delete_map = reg_set_in_block = NULL; } @@ -7181,8 +7181,8 @@ store_motion () add_noreturn_fake_exit_edges (); build_store_vectors (); - edge_list = pre_edge_rev_lcm (gcse_file, num_stores, transp, ae_gen, - st_antloc, ae_kill, &pre_insert_map, + edge_list = pre_edge_rev_lcm (gcse_file, num_stores, transp, ae_gen, + st_antloc, ae_kill, &pre_insert_map, &pre_delete_map); /* Now we want to insert the new stores which are going to be needed. */ diff --git a/gcc/ggc-common.c b/gcc/ggc-common.c index 55543dd7970..978ae96aa0f 100644 --- a/gcc/ggc-common.c +++ b/gcc/ggc-common.c @@ -53,7 +53,7 @@ struct ggc_root static struct ggc_root *roots; /* Add BASE as a new garbage collection root. It is an array of - length NELT with each element SIZE bytes long. CB is a + length NELT with each element SIZE bytes long. CB is a function that will be called with a pointer to each element of the array; it is the intention that CB call the appropriate routine to mark gc-able memory for that element. */ @@ -103,7 +103,7 @@ ggc_mark_roots () const struct ggc_cache_tab *const *ct; const struct ggc_cache_tab *cti; size_t i; - + for (rt = gt_ggc_deletable_rtab; *rt; rt++) for (rti = *rt; rti->base != NULL; rti++) memset (rti->base, 0, rti->stride); @@ -179,7 +179,7 @@ ggc_mark_rtx_children_1 (r) int i; rtx next_rtx; - do + do { enum rtx_code code = GET_CODE (r); /* This gets set to a child rtx to eliminate tail recursion. */ @@ -244,12 +244,12 @@ ggc_mark_rtx_children_1 (r) case 'e': case 'u': exp = XEXP (r, i); if (ggc_test_and_set_mark (exp)) - { - if (next_rtx == NULL) - next_rtx = exp; - else + { + if (next_rtx == NULL) + next_rtx = exp; + else ggc_mark_rtx_children (exp); - } + } break; case 'V': case 'E': gt_ggc_m_rtvec_def (XVEC (r, i)); @@ -342,17 +342,17 @@ ggc_print_common_statistics (stream, stats) } /* Print the statistics for trees. */ - fprintf (stream, "\n%-17s%10s %16s %10s\n", "Tree", + fprintf (stream, "\n%-17s%10s %16s %10s\n", "Tree", "Number", "Bytes", "% Total"); for (code = 0; code < MAX_TREE_CODES; ++code) - if (ggc_stats->num_trees[code]) + if (ggc_stats->num_trees[code]) { fprintf (stream, "%-17s%10u%16ld%c %10.3f\n", tree_code_name[code], ggc_stats->num_trees[code], SCALE (ggc_stats->size_trees[code]), LABEL (ggc_stats->size_trees[code]), - (100 * ((double) ggc_stats->size_trees[code]) + (100 * ((double) ggc_stats->size_trees[code]) / ggc_stats->total_size_trees)); } fprintf (stream, @@ -362,17 +362,17 @@ ggc_print_common_statistics (stream, stats) LABEL (ggc_stats->total_size_trees)); /* Print the statistics for RTL. */ - fprintf (stream, "\n%-17s%10s %16s %10s\n", "RTX", + fprintf (stream, "\n%-17s%10s %16s %10s\n", "RTX", "Number", "Bytes", "% Total"); for (code = 0; code < NUM_RTX_CODE; ++code) - if (ggc_stats->num_rtxs[code]) + if (ggc_stats->num_rtxs[code]) { fprintf (stream, "%-17s%10u%16ld%c %10.3f\n", rtx_name[code], ggc_stats->num_rtxs[code], SCALE (ggc_stats->size_rtxs[code]), LABEL (ggc_stats->size_rtxs[code]), - (100 * ((double) ggc_stats->size_rtxs[code]) + (100 * ((double) ggc_stats->size_rtxs[code]) / ggc_stats->total_size_rtxs)); } fprintf (stream, diff --git a/gcc/ggc-page.c b/gcc/ggc-page.c index dd124d3cc8f..0f59153ad36 100644 --- a/gcc/ggc-page.c +++ b/gcc/ggc-page.c @@ -59,7 +59,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA #define USING_MALLOC_PAGE_GROUPS #endif -/* Stategy: +/* Stategy: This garbage-collecting allocator allocates objects on one of a set of pages. Each page can allocate objects of a single size only; @@ -74,7 +74,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA Each page-entry also has a context depth, which is used to track pushing and popping of allocation contexts. Only objects allocated - in the current (highest-numbered) context may be collected. + in the current (highest-numbered) context may be collected. Page entries are arranged in an array of singly-linked lists. The array is indexed by the allocation size, in bits, of the pages on @@ -133,7 +133,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA The bottommost HOST_PAGE_SIZE_BITS are ignored, since page-entry pages are aligned on system page boundaries. The next most significant PAGE_L2_BITS and PAGE_L1_BITS are the second and first - index values in the lookup table, respectively. + index values in the lookup table, respectively. For 32-bit architectures and the settings below, there are no leftover bits. For architectures with wider pointers, the lookup @@ -206,7 +206,7 @@ static size_t object_size_table[NUM_ORDERS]; /* A page_entry records the status of an allocation page. This structure is dynamically sized to fit the bitmap in_use_p. */ -typedef struct page_entry +typedef struct page_entry { /* The next page-entry with objects of the same size, or NULL if this is the last page-entry. */ @@ -411,7 +411,7 @@ ggc_allocated_p (p) return base[L1] && base[L1][L2]; } -/* Traverse the page table and find the entry for a page. +/* Traverse the page table and find the entry for a page. Die (probably) if the object wasn't allocated via GC. */ static inline page_entry * @@ -731,7 +731,7 @@ alloc_page (order) set_page_table_entry (page, entry); if (GGC_DEBUG_LEVEL >= 2) - fprintf (G.debug_file, + fprintf (G.debug_file, "Allocating page at %p, object size=%lu, data %p-%p\n", (PTR) entry, (unsigned long) OBJECT_SIZE (order), page, page + entry_size - 1); @@ -746,7 +746,7 @@ free_page (entry) page_entry *entry; { if (GGC_DEBUG_LEVEL >= 2) - fprintf (G.debug_file, + fprintf (G.debug_file, "Deallocating page at %p, data %p-%p\n", (PTR) entry, entry->page, entry->page + entry->bytes - 1); @@ -816,7 +816,7 @@ release_pages () if (g->in_use == 0) { *gp = g->next; - G.bytes_mapped -= g->alloc_size; + G.bytes_mapped -= g->alloc_size; free (g->allocation); } else @@ -827,16 +827,16 @@ release_pages () /* This table provides a fast way to determine ceil(log_2(size)) for allocation requests. The minimum allocation size is eight bytes. */ -static unsigned char size_lookup[257] = +static unsigned char size_lookup[257] = { - 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, - 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, + 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, @@ -878,11 +878,11 @@ ggc_alloc (size) { struct page_entry *new_entry; new_entry = alloc_page (order); - + /* If this is the only entry, it's also the tail. */ if (entry == NULL) G.page_tails[order] = new_entry; - + /* Put new pages at the head of the page list. */ new_entry->next = entry; entry = new_entry; @@ -904,7 +904,7 @@ ggc_alloc (size) unsigned hint = entry->next_bit_hint; word = hint / HOST_BITS_PER_LONG; bit = hint % HOST_BITS_PER_LONG; - + /* If the hint didn't work, scan the bitmap from the beginning. */ if ((entry->in_use_p[word] >> bit) & 1) { @@ -953,7 +953,7 @@ ggc_alloc (size) G.allocated += OBJECT_SIZE (order); if (GGC_DEBUG_LEVEL >= 3) - fprintf (G.debug_file, + fprintf (G.debug_file, "Allocating object, requested size=%lu, actual=%lu at %p on %p\n", (unsigned long) size, (unsigned long) OBJECT_SIZE (order), result, (PTR) entry); @@ -986,7 +986,7 @@ ggc_set_mark (p) bit = (((const char *) p) - entry->page) / OBJECT_SIZE (entry->order); word = bit / HOST_BITS_PER_LONG; mask = (unsigned long) 1 << (bit % HOST_BITS_PER_LONG); - + /* If the bit was previously set, skip it. */ if (entry->in_use_p[word] & mask) return 1; @@ -1001,7 +1001,7 @@ ggc_set_mark (p) return 0; } -/* Return 1 if P has been marked, zero otherwise. +/* Return 1 if P has been marked, zero otherwise. P must have been allocated by the GC allocator; it mustn't point to static objects, stack variables, or memory allocated with malloc. */ @@ -1026,7 +1026,7 @@ ggc_marked_p (p) bit = (((const char *) p) - entry->page) / OBJECT_SIZE (entry->order); word = bit / HOST_BITS_PER_LONG; mask = (unsigned long) 1 << (bit % HOST_BITS_PER_LONG); - + return (entry->in_use_p[word] & mask) != 0; } @@ -1150,7 +1150,7 @@ ggc_recalculate_in_use_p (p) unsigned int i; size_t num_objects; - /* Because the past-the-end bit in in_use_p is always set, we + /* Because the past-the-end bit in in_use_p is always set, we pretend there is one additional object. */ num_objects = OBJECTS_PER_PAGE (p->order) + 1; @@ -1158,7 +1158,7 @@ ggc_recalculate_in_use_p (p) p->num_free_objects = num_objects; /* Combine the IN_USE_P and SAVE_IN_USE_P arrays. */ - for (i = 0; + for (i = 0; i < CEIL (BITMAP_SIZE (num_objects), sizeof (*p->in_use_p)); ++i) @@ -1178,7 +1178,7 @@ ggc_recalculate_in_use_p (p) abort (); } -/* Decrement the `GC context'. All objects allocated since the +/* Decrement the `GC context'. All objects allocated since the previous ggc_push_context are migrated to the outer context. */ void @@ -1249,7 +1249,7 @@ clear_marks () memset (p->in_use_p, 0, bitmap_size); /* Make sure the one-past-the-end bit is always set. */ - p->in_use_p[num_objects / HOST_BITS_PER_LONG] + p->in_use_p[num_objects / HOST_BITS_PER_LONG] = ((unsigned long) 1 << (num_objects % HOST_BITS_PER_LONG)); } } @@ -1273,7 +1273,7 @@ sweep_pages () size_t live_objects; page_entry *p, *previous; int done; - + p = G.pages[order]; if (p == NULL) continue; @@ -1351,7 +1351,7 @@ sweep_pages () previous = p; p = next; - } + } while (! done); /* Now, restore the in_use_p vectors for any pages from contexts @@ -1421,13 +1421,13 @@ ggc_collect () sweep phase. */ G.allocated = 0; - /* Release the pages we freed the last time we collected, but didn't + /* Release the pages we freed the last time we collected, but didn't reuse in the interim. */ release_pages (); clear_marks (); ggc_mark_roots (); - + #ifdef GGC_POISON poison_pages (); #endif @@ -1461,7 +1461,7 @@ ggc_print_statistics () /* Clear the statistics. */ memset (&stats, 0, sizeof (stats)); - + /* Make sure collection will really occur. */ G.allocated_last_gc = 0; @@ -1472,7 +1472,7 @@ ggc_print_statistics () there as part of the total allocated memory. */ release_pages (); - /* Collect some information about the various sizes of + /* Collect some information about the various sizes of allocation. */ fprintf (stderr, "\n%-5s %10s %10s %10s\n", "Size", "Allocated", "Used", "Overhead"); @@ -1495,7 +1495,7 @@ ggc_print_statistics () for (p = G.pages[i]; p; p = p->next) { allocated += p->bytes; - in_use += + in_use += (OBJECTS_PER_PAGE (i) - p->num_free_objects) * OBJECT_SIZE (i); overhead += (sizeof (page_entry) - sizeof (long) diff --git a/gcc/ggc-simple.c b/gcc/ggc-simple.c index 81d2c36fc6d..d3b53279241 100644 --- a/gcc/ggc-simple.c +++ b/gcc/ggc-simple.c @@ -251,7 +251,7 @@ size_t ggc_get_size (p) const void *p; { - struct ggc_mem *x + struct ggc_mem *x = (struct ggc_mem *) ((const char *)p - offsetof (struct ggc_mem, u)); return x->size; } @@ -360,7 +360,7 @@ ggc_collect () /* Called once to initialize the garbage collector. */ -void +void init_ggc () { G.allocated_last_gc = GGC_MIN_LAST_ALLOCATED; @@ -383,7 +383,7 @@ ggc_push_context () /* Finish a GC context. Any uncollected memory in the new context will be merged with the old context. */ -void +void ggc_pop_context () { G.context--; @@ -425,7 +425,7 @@ debug_ggc_tree (p, indent) for (i = 0; i < indent; ++i) putc (' ', stderr); fprintf (stderr, "%lx %p\n", (unsigned long)PTR_KEY (p), p); - + if (p->sub[1]) debug_ggc_tree (p->sub[1], indent + 1); } @@ -490,7 +490,7 @@ ggc_print_statistics () /* Clear the statistics. */ memset (&stats, 0, sizeof (stats)); - + /* Make sure collection will really occur. */ G.allocated_last_gc = 0; diff --git a/gcc/ggc.h b/gcc/ggc.h index 87a38549f4b..b28e11a88e6 100644 --- a/gcc/ggc.h +++ b/gcc/ggc.h @@ -33,7 +33,7 @@ extern const char digit_vector[]; /* "0" .. "9" */ extern void ggc_add_root PARAMS ((void *base, int nelt, int size, void (*)(void *))); -/* Structures for the easy way to mark roots. +/* Structures for the easy way to mark roots. In an array, terminated by having base == NULL.*/ struct ggc_root_tab { void *base; @@ -142,7 +142,7 @@ extern void ggc_collect PARAMS ((void)); pointers in this data structure should not be traversed. */ extern int ggc_set_mark PARAMS ((const void *)); -/* Return 1 if P has been marked, zero otherwise. +/* Return 1 if P has been marked, zero otherwise. P must have been allocated by the GC allocator; it mustn't point to static objects, stack variables, or memory allocated with malloc. */ extern int ggc_marked_p PARAMS ((const void *)); @@ -151,16 +151,16 @@ extern int ggc_marked_p PARAMS ((const void *)); /* This structure contains the statistics common to all collectors. Particular collectors can extend this structure. */ -typedef struct ggc_statistics +typedef struct ggc_statistics { /* The Ith element is the number of nodes allocated with code I. */ unsigned num_trees[256]; - /* The Ith element is the number of bytes allocated by nodes with + /* The Ith element is the number of bytes allocated by nodes with code I. */ size_t size_trees[256]; /* The Ith element is the number of nodes allocated with code I. */ unsigned num_rtxs[256]; - /* The Ith element is the number of bytes allocated by nodes with + /* The Ith element is the number of bytes allocated by nodes with code I. */ size_t size_rtxs[256]; /* The total size of the tree nodes allocated. */ diff --git a/gcc/global.c b/gcc/global.c index 7539ae58a50..aaa789607c0 100644 --- a/gcc/global.c +++ b/gcc/global.c @@ -52,7 +52,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA 1. Assign allocation-numbers (allocnos) to the pseudo-registers still needing allocations and to the pseudo-registers currently allocated by local-alloc which may be spilled by reload. - Set up tables reg_allocno and allocno_reg to map + Set up tables reg_allocno and allocno_reg to map reg numbers to allocnos and vice versa. max_allocno gets the number of allocnos in use. @@ -483,7 +483,7 @@ global_alloc (file) for (i = 0; i < FIRST_PSEUDO_REGISTER; i++) if (regs_ever_live[i]) local_reg_n_refs[i] = 0, local_reg_freq[i] = 0; - + allocno_row_words = (max_allocno + INT_BITS - 1) / INT_BITS; /* We used to use alloca here, but the size of what it would try to @@ -549,7 +549,7 @@ global_alloc (file) } qsort (allocno_order, max_allocno, sizeof (int), allocno_compare); - + prune_preferences (); if (file) @@ -884,18 +884,18 @@ expand_preferences () /* Prune the preferences for global registers to exclude registers that cannot be used. - + Compute `regs_someone_prefers', which is a bitmask of the hard registers that are preferred by conflicting registers of lower priority. If possible, we will avoid using these registers. */ - + static void prune_preferences () { int i; int num; int *allocno_to_order = (int *) xmalloc (max_allocno * sizeof (int)); - + /* Scan least most important to most important. For each allocno, remove from preferences registers that cannot be used, either because of conflicts or register type. Then compute all registers @@ -1028,7 +1028,7 @@ find_reg (num, losers, alt_regs_p, accept_call_clobbered, retrying) COPY_HARD_REG_SET (used, used1); IOR_COMPL_HARD_REG_SET (used, regs_used_so_far); IOR_HARD_REG_SET (used, allocno[num].regs_someone_prefers); - + best_reg = -1; for (i = FIRST_PSEUDO_REGISTER, pass = 0; pass <= 1 && i >= FIRST_PSEUDO_REGISTER; @@ -1073,7 +1073,7 @@ find_reg (num, losers, alt_regs_p, accept_call_clobbered, retrying) Remove from the preferred registers and conflicting registers. Note that additional conflicts may have been added after `prune_preferences' was - called. + called. First do this for those register with copy preferences, then all preferred registers. */ @@ -1156,7 +1156,7 @@ find_reg (num, losers, alt_regs_p, accept_call_clobbered, retrying) } no_prefs: - /* If we haven't succeeded yet, try with caller-saves. + /* If we haven't succeeded yet, try with caller-saves. We need not check to see if the current function has nonlocal labels because we don't put any pseudos that are live over calls in registers in that case. */ @@ -1176,7 +1176,7 @@ find_reg (num, losers, alt_regs_p, accept_call_clobbered, retrying) CLEAR_HARD_REG_SET (new_losers); else COPY_HARD_REG_SET (new_losers, losers); - + IOR_HARD_REG_SET(new_losers, losing_caller_save_reg_set); find_reg (num, new_losers, alt_regs_p, 1, retrying); if (reg_renumber[allocno[num].reg] >= 0) @@ -1223,7 +1223,7 @@ find_reg (num, losers, alt_regs_p, accept_call_clobbered, retrying) /* We explicitly evaluate the divide results into temporary variables so as to avoid excess precision problems that occur on an i386-unknown-sysv4.2 (unixware) host. */ - + double tmp1 = ((double) local_reg_freq[regno] / local_reg_live_length[regno]); double tmp2 = ((double) allocno[num].freq @@ -1593,7 +1593,7 @@ mark_reg_live_nc (regno, mode) that SRC is a register. If SRC or the first operand of SRC is a register, try to set a preference. If one of the two is a hard register and the other is a pseudo-register, mark the preference. - + Note that we are not as aggressive as local-alloc in trying to tie a pseudo-register to a hard register. */ @@ -1713,7 +1713,7 @@ mark_elimination (from, to) FOR_EACH_BB (bb) { - regset r = bb->global_live_at_start; + regset r = bb->global_live_at_start; if (REGNO_REG_SET_P (r, from)) { CLEAR_REGNO_REG_SET (r, from); @@ -1741,7 +1741,7 @@ reg_becomes_live (reg, setter, regs_set) if (GET_CODE (reg) != REG) return; - + regno = REGNO (reg); if (regno < FIRST_PSEUDO_REGISTER) { @@ -1818,7 +1818,7 @@ build_insn_chain (first) : reg_renumber[i] >= 0) SET_REGNO_REG_SET (live_relevant_regs, i); }); - } + } if (GET_CODE (first) != NOTE && GET_CODE (first) != BARRIER) { @@ -1906,7 +1906,7 @@ dump_conflicts (file) for (i = 0; i < max_allocno; i++) { if (reg_renumber[allocno[allocno_order[i]].reg] >= 0) - continue; + continue; nregs++; } fprintf (file, ";; %d regs to allocate:", nregs); @@ -1958,13 +1958,13 @@ dump_global_regs (file) FILE *file; { int i, j; - + fprintf (file, ";; Register dispositions:\n"); for (i = FIRST_PSEUDO_REGISTER, j = 0; i < max_regno; i++) if (reg_renumber[i] >= 0) { fprintf (file, "%d in %d ", i, reg_renumber[i]); - if (++j % 6 == 0) + if (++j % 6 == 0) fprintf (file, "\n"); } diff --git a/gcc/graph.h b/gcc/graph.h index 9df45553f39..1033df38928 100644 --- a/gcc/graph.h +++ b/gcc/graph.h @@ -1,4 +1,4 @@ -/* Header file for graph routines. +/* Header file for graph routines. Copyright (C) 1999 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/gthr-dce.h b/gcc/gthr-dce.h index 957f2272924..273393b34df 100644 --- a/gcc/gthr-dce.h +++ b/gcc/gthr-dce.h @@ -146,9 +146,9 @@ __gthread_objc_thread_detach(void (*func)(void *), void *arg) if (!__gthread_active_p ()) return NULL; - + if ( !(pthread_create(&new_thread_handle, pthread_attr_default, - (void *)func, arg)) ) + (void *)func, arg)) ) { /* ??? May not work! (64bit) */ thread_id = *(objc_thread_t *)&new_thread_handle; @@ -156,7 +156,7 @@ __gthread_objc_thread_detach(void (*func)(void *), void *arg) } else thread_id = NULL; - + return thread_id; } @@ -182,7 +182,7 @@ __gthread_objc_thread_set_priority(int priority) sys_priority = (PRI_BG_MIN_NP + PRI_BG_MAX_NP) / 2; break; } - + /* Change the priority. */ if (pthread_setprio(pthread_self(), sys_priority) >= 0) return 0; @@ -200,7 +200,7 @@ __gthread_objc_thread_get_priority(void) if (__gthread_active_p ()) { if ((sys_priority = pthread_getprio(pthread_self())) >= 0) - { + { if (sys_priority >= PRI_FG_MIN_NP && sys_priority <= PRI_FG_MAX_NP) return OBJC_THREAD_INTERACTIVE_PRIORITY; @@ -292,12 +292,12 @@ __gthread_objc_mutex_allocate(objc_mutex_t mutex) mutex->backend = objc_malloc(sizeof(pthread_mutex_t)); if (pthread_mutex_init((pthread_mutex_t *)mutex->backend, - pthread_mutexattr_default)) - { - objc_free(mutex->backend); - mutex->backend = NULL; - return -1; - } + pthread_mutexattr_default)) + { + objc_free(mutex->backend); + mutex->backend = NULL; + return -1; + } } return 0; @@ -310,7 +310,7 @@ __gthread_objc_mutex_deallocate(objc_mutex_t mutex) if (__gthread_active_p ()) { if (pthread_mutex_destroy((pthread_mutex_t *)mutex->backend)) - return -1; + return -1; objc_free(mutex->backend); mutex->backend = NULL; diff --git a/gcc/gthr-posix.h b/gcc/gthr-posix.h index 58bfcb36872..ecd4f97fd6e 100644 --- a/gcc/gthr-posix.h +++ b/gcc/gthr-posix.h @@ -52,9 +52,9 @@ typedef pthread_mutex_t __gthread_mutex_t; #pragma weak pthread_setspecific #pragma weak pthread_create -#pragma weak pthread_mutex_lock -#pragma weak pthread_mutex_trylock -#pragma weak pthread_mutex_unlock +#pragma weak pthread_mutex_lock +#pragma weak pthread_mutex_trylock +#pragma weak pthread_mutex_unlock #ifdef _LIBOBJC /* Objective C. */ @@ -120,15 +120,15 @@ __gthread_objc_init_thread_system(void) { /* Initialize the thread storage key */ if (pthread_key_create(&_objc_thread_storage, NULL) == 0) - { - /* The normal default detach state for threads is - * PTHREAD_CREATE_JOINABLE which causes threads to not die - * when you think they should. */ - if (pthread_attr_init(&_objc_thread_attribs) == 0 - && pthread_attr_setdetachstate(&_objc_thread_attribs, - PTHREAD_CREATE_DETACHED) == 0) - return 0; - } + { + /* The normal default detach state for threads is + * PTHREAD_CREATE_JOINABLE which causes threads to not die + * when you think they should. */ + if (pthread_attr_init(&_objc_thread_attribs) == 0 + && pthread_attr_setdetachstate(&_objc_thread_attribs, + PTHREAD_CREATE_DETACHED) == 0) + return 0; + } } return -1; @@ -157,12 +157,12 @@ __gthread_objc_thread_detach(void (*func)(void *), void *arg) if (!__gthread_active_p ()) return NULL; - + if ( !(pthread_create(&new_thread_handle, NULL, (void *)func, arg)) ) thread_id = (objc_thread_t) new_thread_handle; else thread_id = NULL; - + return thread_id; } @@ -180,25 +180,25 @@ __gthread_objc_thread_set_priority(int priority) if (pthread_getschedparam(thread_id, &policy, ¶ms) == 0) { - if ((priority_max = sched_get_priority_max(policy)) != 0) - return -1; - - if ((priority_min = sched_get_priority_min(policy)) != 0) - return -1; - - if (priority > priority_max) - priority = priority_max; - else if (priority < priority_min) - priority = priority_min; - params.sched_priority = priority; - - /* - * The solaris 7 and several other man pages incorrectly state that - * this should be a pointer to policy but pthread.h is universally - * at odds with this. - */ - if (pthread_setschedparam(thread_id, policy, ¶ms) == 0) - return 0; + if ((priority_max = sched_get_priority_max(policy)) != 0) + return -1; + + if ((priority_min = sched_get_priority_min(policy)) != 0) + return -1; + + if (priority > priority_max) + priority = priority_max; + else if (priority < priority_min) + priority = priority_min; + params.sched_priority = priority; + + /* + * The solaris 7 and several other man pages incorrectly state that + * this should be a pointer to policy but pthread.h is universally + * at odds with this. + */ + if (pthread_setschedparam(thread_id, policy, ¶ms) == 0) + return 0; } return -1; } @@ -214,9 +214,9 @@ __gthread_objc_thread_get_priority(void) struct sched_param params; if (pthread_getschedparam(pthread_self(), &policy, ¶ms) == 0) - return params.sched_priority; + return params.sched_priority; else - return -1; + return -1; } else return OBJC_THREAD_INTERACTIVE_PRIORITY; @@ -330,7 +330,7 @@ __gthread_objc_mutex_deallocate(objc_mutex_t mutex) static inline int __gthread_objc_mutex_lock(objc_mutex_t mutex) { - if (__gthread_active_p () + if (__gthread_active_p () && pthread_mutex_lock((pthread_mutex_t *)mutex->backend) != 0) { return -1; @@ -343,7 +343,7 @@ __gthread_objc_mutex_lock(objc_mutex_t mutex) static inline int __gthread_objc_mutex_trylock(objc_mutex_t mutex) { - if (__gthread_active_p () + if (__gthread_active_p () && pthread_mutex_trylock((pthread_mutex_t *)mutex->backend) != 0) { return -1; @@ -356,7 +356,7 @@ __gthread_objc_mutex_trylock(objc_mutex_t mutex) static inline int __gthread_objc_mutex_unlock(objc_mutex_t mutex) { - if (__gthread_active_p () + if (__gthread_active_p () && pthread_mutex_unlock((pthread_mutex_t *)mutex->backend) != 0) { return -1; diff --git a/gcc/gthr-rtems.h b/gcc/gthr-rtems.h index b3a1d68b31e..23e35d7403f 100644 --- a/gcc/gthr-rtems.h +++ b/gcc/gthr-rtems.h @@ -45,7 +45,7 @@ typedef int __gthread_once_t; typedef void *__gthread_mutex_t; /* - * External functions provided by RTEMS. They are very similar to their POSIX + * External functions provided by RTEMS. They are very similar to their POSIX * counterparts. A "Wrapper API" is being use to avoid dependency on any RTEMS * header files. */ diff --git a/gcc/gthr-solaris.h b/gcc/gthr-solaris.h index 6d7ff2538cd..0ad6194081b 100644 --- a/gcc/gthr-solaris.h +++ b/gcc/gthr-solaris.h @@ -141,14 +141,14 @@ __gthread_objc_thread_detach(void (*func)(void *), void *arg) if (!__gthread_active_p ()) return NULL; - + if (thr_create(NULL, 0, (void *)func, arg, - THR_DETACHED | THR_NEW_LWP, + THR_DETACHED | THR_NEW_LWP, &new_thread_id) == 0) thread_id = *(objc_thread_t *)&new_thread_id; else thread_id = NULL; - + return thread_id; } @@ -190,7 +190,7 @@ __gthread_objc_thread_get_priority(void) if (!__gthread_active_p ()) return OBJC_THREAD_INTERACTIVE_PRIORITY; - + if (thr_getprio(thr_self(), &sys_priority) == 0) { if (sys_priority >= 250) @@ -333,7 +333,7 @@ __gthread_objc_condition_allocate(objc_condition_t condition) { if (__gthread_active_p ()) return cond_init((cond_t *)(&(condition->backend)), USYNC_THREAD, - NULL); + NULL); else return 0; } @@ -354,7 +354,7 @@ __gthread_objc_condition_wait(objc_condition_t condition, objc_mutex_t mutex) { if (__gthread_active_p ()) return cond_wait((cond_t *)(&(condition->backend)), - (mutex_t *)(&(mutex->backend))); + (mutex_t *)(&(mutex->backend))); else return 0; } diff --git a/gcc/gthr-win32.h b/gcc/gthr-win32.h index 599da7db349..a4ff4e0edde 100644 --- a/gcc/gthr-win32.h +++ b/gcc/gthr-win32.h @@ -31,12 +31,12 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA #define GCC_GTHR_WIN32_H /* Windows32 threads specific definitions. The windows32 threading model - does not map well into pthread-inspired gcc's threading model, and so + does not map well into pthread-inspired gcc's threading model, and so there are caveats one needs to be aware of. 1. The destructor supplied to __gthread_key_create is ignored for - generic x86-win32 ports. This will certainly cause memory leaks - due to unreclaimed eh contexts (sizeof (eh_context) is at least + generic x86-win32 ports. This will certainly cause memory leaks + due to unreclaimed eh contexts (sizeof (eh_context) is at least 24 bytes for x86 currently). This memory leak may be significant for long-running applications @@ -47,18 +47,18 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA linked in if -mthreads option is specified, that runs the dtors in the reverse order of registration when each thread exits. If -mthreads option is not given, a stub is linked in instead of the - DLL, which results in memory leak. Other x86-win32 ports can use + DLL, which results in memory leak. Other x86-win32 ports can use the same technique of course to avoid the leak. 2. The error codes returned are non-POSIX like, and cast into ints. - This may cause incorrect error return due to truncation values on + This may cause incorrect error return due to truncation values on hw where sizeof (DWORD) > sizeof (int). - - 3. We might consider using Critical Sections instead of Windows32 - mutexes for better performance, but emulating __gthread_mutex_trylock + + 3. We might consider using Critical Sections instead of Windows32 + mutexes for better performance, but emulating __gthread_mutex_trylock interface becomes more complicated (Win9x does not support TryEnterCriticalSectioni, while NT does). - + The basic framework should work well enough. In the long term, GCC needs to use Structured Exception Handling on Windows32. */ @@ -72,12 +72,12 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA #ifdef _LIBOBJC /* This is necessary to prevent windef.h (included from windows.h) from - defining it's own BOOL as a typedef. */ + defining it's own BOOL as a typedef. */ #ifndef __OBJC__ #define __OBJC__ #endif #include <windows.h> -/* Now undef the windows BOOL. */ +/* Now undef the windows BOOL. */ #undef BOOL /* Key structure for maintaining thread specific storage */ @@ -115,9 +115,9 @@ __gthread_objc_thread_detach(void (*func)(void *arg), void *arg) HANDLE win32_handle; if (!(win32_handle = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)func, - arg, 0, &thread_id))) + arg, 0, &thread_id))) thread_id = 0; - + return (objc_thread_t)thread_id; } @@ -155,7 +155,7 @@ __gthread_objc_thread_get_priority(void) int sys_priority; sys_priority = GetThreadPriority(GetCurrentThread()); - + switch (sys_priority) { case THREAD_PRIORITY_HIGHEST: @@ -167,7 +167,7 @@ __gthread_objc_thread_get_priority(void) default: case THREAD_PRIORITY_BELOW_NORMAL: return OBJC_THREAD_BACKGROUND_PRIORITY; - + case THREAD_PRIORITY_IDLE: case THREAD_PRIORITY_LOWEST: return OBJC_THREAD_LOW_PRIORITY; @@ -355,7 +355,7 @@ extern int __mingwthr_key_dtor (DWORD, void (*) (void *)); #endif /* Mingw runtime >= v0.3 provides a magic variable that is set to non-zero - if -mthreads option was specified, or 0 otherwise. This is to get around + if -mthreads option was specified, or 0 otherwise. This is to get around the lack of weak symbols in PE-COFF. */ extern int _CRT_MT; #endif @@ -381,27 +381,27 @@ __gthread_once (__gthread_once_t *once, void (*func) (void)) if (! once->done) { if (InterlockedIncrement (&(once->started)) == 0) - { + { (*func) (); once->done = TRUE; } else { - /* Another thread is currently executing the code, so wait for it - to finish; yield the CPU in the meantime. If performance - does become an issue, the solution is to use an Event that - we wait on here (and set above), but that implies a place to - create the event before this routine is called. */ + /* Another thread is currently executing the code, so wait for it + to finish; yield the CPU in the meantime. If performance + does become an issue, the solution is to use an Event that + we wait on here (and set above), but that implies a place to + create the event before this routine is called. */ while (! once->done) Sleep (0); } } - + return 0; } /* Windows32 thread local keys don't support destructors; this leads to - leaks, especially in threaded applications making extensive use of + leaks, especially in threaded applications making extensive use of C++ EH. Mingw uses a thread-support DLL to work-around this problem. */ static inline int __gthread_key_create (__gthread_key_t *key, void (*dtor) (void *)) @@ -423,7 +423,7 @@ __gthread_key_create (__gthread_key_t *key, void (*dtor) (void *)) } /* Currently, this routine is called only for Mingw runtime, and if - -mthreads option is chosen to link in the thread support DLL. */ + -mthreads option is chosen to link in the thread support DLL. */ static inline int __gthread_key_dtor (__gthread_key_t key, void *ptr) { @@ -461,7 +461,7 @@ __gthread_setspecific (__gthread_key_t key, const void *ptr) static inline void __gthread_mutex_init_function (__gthread_mutex_t *mutex) { - /* Create unnamed mutex with default security attr and no initial owner. */ + /* Create unnamed mutex with default security attr and no initial owner. */ *mutex = CreateMutex (NULL, 0, NULL); } diff --git a/gcc/gthr.h b/gcc/gthr.h index ba3a3be71d6..b436bb6bb91 100644 --- a/gcc/gthr.h +++ b/gcc/gthr.h @@ -32,7 +32,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA /* If this file is compiled with threads support, it must #define __GTHREADS 1 to indicate that threads support is present. Also it has define - function + function int __gthread_active_p () that returns 1 if thread system is active, 0 if not. |