diff options
author | Nathan Sidwell <nathan@acm.org> | 2017-12-19 13:27:55 +0000 |
---|---|---|
committer | Nathan Sidwell <nathan@gcc.gnu.org> | 2017-12-19 13:27:55 +0000 |
commit | f35629b75661cce9236f69be740d16ed39e15c92 (patch) | |
tree | ac61920c55c77eb06ce0b6115364cf228eff0575 /gcc/opts.c | |
parent | 02db1ea393065ef3b6f9a5d737abd8fbc1ad72ea (diff) | |
download | gcc-f35629b75661cce9236f69be740d16ed39e15c92.zip gcc-f35629b75661cce9236f69be740d16ed39e15c92.tar.gz gcc-f35629b75661cce9236f69be740d16ed39e15c92.tar.bz2 |
[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
Diffstat (limited to 'gcc/opts.c')
-rw-r--r-- | gcc/opts.c | 26 |
1 files changed, 18 insertions, 8 deletions
@@ -700,19 +700,27 @@ finish_options (struct gcc_options *opts, struct gcc_options *opts_set, enum unwind_info_type ui_except; if (opts->x_dump_base_name - && ! IS_ABSOLUTE_PATH (opts->x_dump_base_name) && ! opts->x_dump_base_name_prefixed) { - /* First try to make OPTS->X_DUMP_BASE_NAME relative to the - OPTS->X_DUMP_DIR_NAME directory. Then try to make - OPTS->X_DUMP_BASE_NAME relative to the OPTS->X_AUX_BASE_NAME - directory, typically the directory to contain the object - file. */ - if (opts->x_dump_dir_name) + const char *sep = opts->x_dump_base_name; + + for (; *sep; sep++) + if (IS_DIR_SEPARATOR (*sep)) + break; + + 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, 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; @@ -731,7 +739,9 @@ 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_prefixed = true; + + /* It is definitely prefixed now. */ + opts->x_dump_base_name_prefixed = true; } /* Handle related options for unit-at-a-time, toplevel-reorder, and |