aboutsummaryrefslogtreecommitdiff
path: root/gcc/lto-opts.c
diff options
context:
space:
mode:
authorPrathamesh Kulkarni <prathamesh.kulkarni@linaro.org>2020-02-24 11:55:45 +0530
committerPrathamesh Kulkarni <prathamesh.kulkarni@linaro.org>2020-02-24 11:55:45 +0530
commitf1a681a174cdfb82e62c246d6f4add9a25fc2e43 (patch)
tree8c6d66f99473e10c0265b47eec8831eacc05392b /gcc/lto-opts.c
parent9069e9484cec2ff981c87c75b226ad738847ca07 (diff)
downloadgcc-f1a681a174cdfb82e62c246d6f4add9a25fc2e43.zip
gcc-f1a681a174cdfb82e62c246d6f4add9a25fc2e43.tar.gz
gcc-f1a681a174cdfb82e62c246d6f4add9a25fc2e43.tar.bz2
PR47785: Add support for handling Xassembler/Wa options with LTO.
2020-02-24 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org> Kugan Vivekandarajah <kugan.vivekanandarajah@linaro.org> PR driver/47785 * gcc.c (putenv_COLLECT_AS_OPTIONS): New function. (driver::main): Call putenv_COLLECT_AS_OPTIONS. * opts-common.c (parse_options_from_collect_gcc_options): New function. (prepend_xassembler_to_collect_as_options): Likewise. * opts.h (parse_options_from_collect_gcc_options): Declare prototype. (prepend_xassembler_to_collect_as_options): Likewise. * lto-opts.c (lto_write_options): Stream assembler options in COLLECT_AS_OPTIONS. * lto-wrapper.c (xassembler_options_error): New static variable. (get_options_from_collect_gcc_options): Move parsing options code to parse_options_from_collect_gcc_options and call it. (merge_and_complain): Validate -Xassembler options. (append_compiler_options): Handle OPT_Xassembler. (run_gcc): Append command line -Xassembler options to collect_gcc_options. * doc/invoke.texi: Add documentation about using Xassembler options with LTO. testsuite/ * gcc.target/arm/pr78353-1.c: New test. * gcc.target/arm/pr78353-2.c: Likewise.
Diffstat (limited to 'gcc/lto-opts.c')
-rw-r--r--gcc/lto-opts.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/gcc/lto-opts.c b/gcc/lto-opts.c
index 90bfde5..87e916a2 100644
--- a/gcc/lto-opts.c
+++ b/gcc/lto-opts.c
@@ -163,6 +163,12 @@ lto_write_options (void)
append_to_collect_gcc_options (&temporary_obstack, &first_p,
option->canonical_option[j]);
}
+
+ const char *collect_as_options = getenv ("COLLECT_AS_OPTIONS");
+ if (collect_as_options)
+ prepend_xassembler_to_collect_as_options (collect_as_options,
+ &temporary_obstack);
+
obstack_grow (&temporary_obstack, "\0", 1);
args = XOBFINISH (&temporary_obstack, char *);
lto_write_data (args, strlen (args) + 1);