This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[PATCH] Don't set dir prefix twice (PR middle-end/60484)
- From: Marek Polacek <polacek at redhat dot com>
- To: GCC Patches <gcc-patches at gcc dot gnu dot org>
- Cc: Jakub Jelinek <jakub at redhat dot com>, "Joseph S. Myers" <joseph at codesourcery dot com>
- Date: Fri, 14 Mar 2014 18:38:27 +0100
- Subject: [PATCH] Don't set dir prefix twice (PR middle-end/60484)
- Authentication-results: sourceware.org; auth=none
This patch makes sure that we set the directory prefix of
dump_base_name only once, otherwise we'd end up with invalid path,
resulting in error: could not open dump file ...
This happened because finish_options is called for every optimize
attribute and once more for command line options and every time it
added the directory prefix.
Regtested/bootstrapped on x86_64-linux, ok for trunk?
2014-03-14 Jakub Jelinek <jakub@redhat.com>
Marek Polacek <polacek@redhat.com>
PR middle-end/60484
* common.opt (dump_base_name_prefixed): New Variable.
* opts.c (finish_options): Don't prepend directory to x_dump_base_name
if x_dump_base_name_prefixed is already set, set it at the end.
diff --git gcc/common.opt gcc/common.opt
index 661516d..d8918d1 100644
--- gcc/common.opt
+++ gcc/common.opt
@@ -211,6 +211,10 @@ bool flag_opts_finished
Variable
unsigned int flag_sanitize
+; Flag whether a prefix has been added to dump_base_name
+Variable
+bool dump_base_name_prefixed = false
+
###
Driver
diff --git gcc/opts.c gcc/opts.c
index 5dd442f..41c1a73 100644
--- gcc/opts.c
+++ gcc/opts.c
@@ -645,7 +645,9 @@ 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))
+ 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
@@ -675,6 +677,7 @@ 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;
}
/* Handle related options for unit-at-a-time, toplevel-reorder, and
Marek