diff options
author | H.J. Lu <hongjiu.lu@intel.com> | 2010-01-03 17:03:38 +0000 |
---|---|---|
committer | H.J. Lu <hjl@gcc.gnu.org> | 2010-01-03 09:03:38 -0800 |
commit | d7fb0a6db193bc525447791b2881ecdc17d7cb07 (patch) | |
tree | 12c1666e709c28de90b30106f5254dc8d2850417 /gcc/opts.c | |
parent | eb07a8f567dbb31885c23dbceb43db4489ca1884 (diff) | |
download | gcc-d7fb0a6db193bc525447791b2881ecdc17d7cb07.zip gcc-d7fb0a6db193bc525447791b2881ecdc17d7cb07.tar.gz gcc-d7fb0a6db193bc525447791b2881ecdc17d7cb07.tar.bz2 |
Pass -dumpbase and -dumpdir to gcc for LTO
gcc/
2010-01-03 H.J. Lu <hongjiu.lu@intel.com>
PR lto/41564
* common.opt: Add dumpdir.
* gcc.c (cc1_options): Add "-dumpbase %B" only if -dumpbase
isn't specified.
(option_map): Add --dumpdir.
* gcc.h (DEFAULT_WORD_SWITCH_TAKES_ARG): Add dumpdir.
* lto-wrapper.c (run_gcc): Add -dumpbase and -dumpdir for -o.
* opts.c (decode_options): Try dump_dir_name first if
dump_base_name isn't an absolute path.
(common_handle_option): Handle OPT_dumpdir.
* toplev.c (dump_dir_name): New.
(print_switch_values): Also ignore -dumpdir.
* toplev.h (dump_dir_name): New.
gcc/lto/
2010-01-03 H.J. Lu <hongjiu.lu@intel.com>
PR lto/41564
* lto.c (DUMPBASE_SUFFIX): New.
(lto_execute_ltrans): Append a sequence number to -dumpbase
for LTRANS.
From-SVN: r155591
Diffstat (limited to 'gcc/opts.c')
-rw-r--r-- | gcc/opts.c | 45 |
1 files changed, 28 insertions, 17 deletions
@@ -1,5 +1,5 @@ /* Command line option handling. - Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 + Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Neil Booth. @@ -971,24 +971,31 @@ decode_options (unsigned int argc, const char **argv) handle_options (argc, argv, lang_mask); - /* Make DUMP_BASE_NAME relative to the AUX_BASE_NAME directory, - typically the directory to contain the object file. */ - if (aux_base_name && ! IS_ABSOLUTE_PATH (dump_base_name)) + if (dump_base_name && ! IS_ABSOLUTE_PATH (dump_base_name)) { - const char *aux_base; - - base_of_path (aux_base_name, &aux_base); - if (aux_base_name != aux_base) + /* First try to make DUMP_BASE_NAME relative to the DUMP_DIR_NAME + directory. Then try to make DUMP_BASE_NAME relative to the + AUX_BASE_NAME directory, typically the directory to contain + the object file. */ + if (dump_dir_name) + dump_base_name = concat (dump_dir_name, dump_base_name, NULL); + else if (aux_base_name) { - int dir_len = aux_base - aux_base_name; - char *new_dump_base_name = - XNEWVEC (char, strlen(dump_base_name) + dir_len + 1); - - /* Copy directory component from AUX_BASE_NAME. */ - memcpy (new_dump_base_name, aux_base_name, dir_len); - /* Append existing DUMP_BASE_NAME. */ - strcpy (new_dump_base_name + dir_len, dump_base_name); - dump_base_name = new_dump_base_name; + const char *aux_base; + + base_of_path (aux_base_name, &aux_base); + if (aux_base_name != aux_base) + { + int dir_len = aux_base - aux_base_name; + char *new_dump_base_name = + XNEWVEC (char, strlen(dump_base_name) + dir_len + 1); + + /* Copy directory component from AUX_BASE_NAME. */ + memcpy (new_dump_base_name, aux_base_name, dir_len); + /* Append existing DUMP_BASE_NAME. */ + strcpy (new_dump_base_name + dir_len, dump_base_name); + dump_base_name = new_dump_base_name; + } } } @@ -1701,6 +1708,10 @@ common_handle_option (size_t scode, const char *arg, int value, dump_base_name = arg; break; + case OPT_dumpdir: + dump_dir_name = arg; + break; + case OPT_falign_functions_: align_functions = value; break; |