Commit f35629b7 by Nathan Sidwell Committed by Nathan Sidwell

[PATCH] -fdump-tree, -save-temps=obj & subdirs

https://gcc.gnu.org/ml/gcc-patches/2017-12/msg00377.html
	* opts.c (finish_options): Don't prefix dump_base_name if it
	already contains directories.

From-SVN: r255820
parent 02db1ea3
2017-12-19 Nathan Sidwell <nathan@acm.org>
* opts.c (finish_options): Don't prefix dump_base_name if it
already contains directories.
2017-12-19 Martin Liska <mliska@suse.cz> 2017-12-19 Martin Liska <mliska@suse.cz>
PR rtl-optimization/82675 PR rtl-optimization/82675
...@@ -700,19 +700,27 @@ finish_options (struct gcc_options *opts, struct gcc_options *opts_set, ...@@ -700,19 +700,27 @@ finish_options (struct gcc_options *opts, struct gcc_options *opts_set,
enum unwind_info_type ui_except; enum unwind_info_type ui_except;
if (opts->x_dump_base_name if (opts->x_dump_base_name
&& ! IS_ABSOLUTE_PATH (opts->x_dump_base_name)
&& ! opts->x_dump_base_name_prefixed) && ! opts->x_dump_base_name_prefixed)
{ {
/* First try to make OPTS->X_DUMP_BASE_NAME relative to the const char *sep = opts->x_dump_base_name;
OPTS->X_DUMP_DIR_NAME directory. Then try to make
OPTS->X_DUMP_BASE_NAME relative to the OPTS->X_AUX_BASE_NAME for (; *sep; sep++)
directory, typically the directory to contain the object if (IS_DIR_SEPARATOR (*sep))
file. */ break;
if (opts->x_dump_dir_name)
if (*sep)
/* If dump_base_path contains subdirectories, don't prepend
anything. */;
else if (opts->x_dump_dir_name)
/* 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 = opts_concat (opts->x_dump_dir_name,
opts->x_dump_base_name, NULL); opts->x_dump_base_name, NULL);
else if (opts->x_aux_base_name else if (opts->x_aux_base_name
&& strcmp (opts->x_aux_base_name, HOST_BIT_BUCKET) != 0) && 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; const char *aux_base;
...@@ -731,6 +739,8 @@ finish_options (struct gcc_options *opts, struct gcc_options *opts_set, ...@@ -731,6 +739,8 @@ finish_options (struct gcc_options *opts, struct gcc_options *opts_set,
opts->x_dump_base_name = new_dump_base_name; opts->x_dump_base_name = new_dump_base_name;
} }
} }
/* It is definitely prefixed now. */
opts->x_dump_base_name_prefixed = true; opts->x_dump_base_name_prefixed = true;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment