diff options
author | Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org> | 2020-02-24 11:55:45 +0530 |
---|---|---|
committer | Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org> | 2020-02-24 11:55:45 +0530 |
commit | f1a681a174cdfb82e62c246d6f4add9a25fc2e43 (patch) | |
tree | 8c6d66f99473e10c0265b47eec8831eacc05392b /gcc/lto-opts.c | |
parent | 9069e9484cec2ff981c87c75b226ad738847ca07 (diff) | |
download | gcc-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.c | 6 |
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); |