aboutsummaryrefslogtreecommitdiff
path: root/gcc/opts.c
diff options
context:
space:
mode:
authorGiuliano Belinassi <giuliano.belinassi@usp.br>2020-08-22 17:43:43 -0300
committerGiuliano Belinassi <giuliano.belinassi@usp.br>2020-08-22 17:43:43 -0300
commita926878ddbd5a98b272c22171ce58663fc04c3e0 (patch)
tree86af256e5d9a9c06263c00adc90e5fe348008c43 /gcc/opts.c
parent542730f087133690b47e036dfd43eb0db8a650ce (diff)
parent07cbaed8ba7d1b6e4ab3a9f44175502a4e1ecdb1 (diff)
downloadgcc-devel/autopar_devel.zip
gcc-devel/autopar_devel.tar.gz
gcc-devel/autopar_devel.tar.bz2
Merge branch 'autopar_rebase2' into autopar_develdevel/autopar_devel
Quickly commit changes in the rebase branch.
Diffstat (limited to 'gcc/opts.c')
-rw-r--r--gcc/opts.c133
1 files changed, 53 insertions, 80 deletions
diff --git a/gcc/opts.c b/gcc/opts.c
index ec3ca07..c5c6058 100644
--- a/gcc/opts.c
+++ b/gcc/opts.c
@@ -845,30 +845,6 @@ finish_options (struct gcc_options *opts, struct gcc_options *opts_set,
/* We have a DUMP_DIR_NAME, prepend that. */
opts->x_dump_base_name = opts_concat (opts->x_dump_dir_name,
opts->x_dump_base_name, NULL);
- else if (opts->x_aux_base_name
- && strcmp (opts->x_aux_base_name, HOST_BIT_BUCKET) != 0)
- /* AUX_BASE_NAME is set and is not the bit bucket. If it
- contains a directory component, prepend those directories.
- Typically this places things in the same directory as the
- object file. */
- {
- const char *aux_base;
-
- base_of_path (opts->x_aux_base_name, &aux_base);
- if (opts->x_aux_base_name != aux_base)
- {
- int dir_len = aux_base - opts->x_aux_base_name;
- char *new_dump_base_name
- = XOBNEWVEC (&opts_obstack, char,
- strlen (opts->x_dump_base_name) + dir_len + 1);
-
- /* Copy directory component from OPTS->X_AUX_BASE_NAME. */
- memcpy (new_dump_base_name, opts->x_aux_base_name, dir_len);
- /* Append existing OPTS->X_DUMP_BASE_NAME. */
- strcpy (new_dump_base_name + dir_len, opts->x_dump_base_name);
- opts->x_dump_base_name = new_dump_base_name;
- }
- }
/* It is definitely prefixed now. */
opts->x_dump_base_name_prefixed = true;
@@ -1166,11 +1142,21 @@ finish_options (struct gcc_options *opts, struct gcc_options *opts_set,
/* Control IPA optimizations based on different -flive-patching level. */
if (opts->x_flag_live_patching)
- {
- control_options_for_live_patching (opts, opts_set,
- opts->x_flag_live_patching,
- loc);
- }
+ control_options_for_live_patching (opts, opts_set,
+ opts->x_flag_live_patching,
+ loc);
+
+ /* Unrolling all loops implies that standard loop unrolling must also
+ be done. */
+ if (opts->x_flag_unroll_all_loops)
+ opts->x_flag_unroll_loops = 1;
+
+ /* Allow cunroll to grow size accordingly. */
+ if (!opts_set->x_flag_cunroll_grow_size)
+ opts->x_flag_cunroll_grow_size
+ = (opts->x_flag_unroll_loops
+ || opts->x_flag_peel_loops
+ || opts->x_optimize >= 3);
}
#define LEFT_COLUMN 27
@@ -2028,13 +2014,21 @@ parse_and_check_align_values (const char *flag,
}
/* Check that alignment value FLAG for -falign-NAME is valid at a given
- location LOC. */
+ location LOC. OPT_STR points to the stored -falign-NAME=argument and
+ OPT_FLAG points to the associated -falign-NAME on/off flag. */
static void
-check_alignment_argument (location_t loc, const char *flag, const char *name)
+check_alignment_argument (location_t loc, const char *flag, const char *name,
+ int *opt_flag, const char **opt_str)
{
auto_vec<unsigned> align_result;
parse_and_check_align_values (flag, name, align_result, true, loc);
+
+ if (align_result.length() >= 1 && align_result[0] == 0)
+ {
+ *opt_flag = 1;
+ *opt_str = NULL;
+ }
}
/* Print help when OPT__help_ is set. */
@@ -2346,17 +2340,6 @@ common_handle_option (struct gcc_options *opts,
opts->x_flag_gen_aux_info = 1;
break;
- case OPT_auxbase_strip:
- {
- char *tmp = xstrdup (arg);
- strip_off_ending (tmp, strlen (tmp));
- if (tmp[0])
- opts->x_aux_base_name = tmp;
- else
- free (tmp);
- }
- break;
-
case OPT_d:
decode_d_option (arg, opts, loc, dc);
break;
@@ -2439,6 +2422,14 @@ common_handle_option (struct gcc_options *opts,
dc->parseable_fixits_p = value;
break;
+ case OPT_fdiagnostics_column_unit_:
+ dc->column_unit = (enum diagnostics_column_unit)value;
+ break;
+
+ case OPT_fdiagnostics_column_origin_:
+ dc->column_origin = value;
+ break;
+
case OPT_fdiagnostics_show_cwe:
dc->show_cwe = value;
break;
@@ -2503,35 +2494,8 @@ common_handle_option (struct gcc_options *opts,
break;
case OPT_foffload_:
- {
- const char *p = arg;
- opts->x_flag_disable_hsa = true;
- while (*p != 0)
- {
- const char *comma = strchr (p, ',');
-
- if ((strncmp (p, "disable", 7) == 0)
- && (p[7] == ',' || p[7] == '\0'))
- {
- opts->x_flag_disable_hsa = true;
- break;
- }
-
- if ((strncmp (p, "hsa", 3) == 0)
- && (p[3] == ',' || p[3] == '\0'))
- {
-#ifdef ENABLE_HSA
- opts->x_flag_disable_hsa = false;
-#else
- sorry ("HSA has not been enabled during configuration");
-#endif
- }
- if (!comma)
- break;
- p = comma + 1;
- }
- break;
- }
+ /* Deferred. */
+ break;
#ifndef ACCEL_COMPILER
case OPT_foffload_abi_:
@@ -2723,11 +2687,6 @@ common_handle_option (struct gcc_options *opts,
set_debug_level (DWARF2_DEBUG, false, "", opts, opts_set, loc);
break;
- case OPT_gsplit_dwarf:
- set_debug_level (NO_DEBUG, DEFAULT_GDB_EXTENSIONS, "", opts, opts_set,
- loc);
- break;
-
case OPT_ggdb:
set_debug_level (NO_DEBUG, 2, arg, opts, opts_set, loc);
break;
@@ -2812,19 +2771,33 @@ common_handle_option (struct gcc_options *opts,
break;
case OPT_falign_loops_:
- check_alignment_argument (loc, arg, "loops");
+ check_alignment_argument (loc, arg, "loops",
+ &opts->x_flag_align_loops,
+ &opts->x_str_align_loops);
break;
case OPT_falign_jumps_:
- check_alignment_argument (loc, arg, "jumps");
+ check_alignment_argument (loc, arg, "jumps",
+ &opts->x_flag_align_jumps,
+ &opts->x_str_align_jumps);
break;
case OPT_falign_labels_:
- check_alignment_argument (loc, arg, "labels");
+ check_alignment_argument (loc, arg, "labels",
+ &opts->x_flag_align_labels,
+ &opts->x_str_align_labels);
break;
case OPT_falign_functions_:
- check_alignment_argument (loc, arg, "functions");
+ check_alignment_argument (loc, arg, "functions",
+ &opts->x_flag_align_functions,
+ &opts->x_str_align_functions);
+ break;
+
+ case OPT_ftabstop_:
+ /* It is documented that we silently ignore silly values. */
+ if (value >= 1 && value <= 100)
+ dc->tabstop = value;
break;
default: