> Without the Var it fails with > > cc1: internal compiler error: in common_handle_option, at opts.c:2108
Which can also be fixed by explicitly ignoring OPT_fuse_linker_plugin. The attached patch does that. Any preferences? Cheers, -- Rafael Ávila de Espíndola
diff --git a/gcc/common.opt b/gcc/common.opt index b57234a..77967f8 100644 --- a/gcc/common.opt +++ b/gcc/common.opt @@ -1391,6 +1391,9 @@ funwind-tables Common Report Var(flag_unwind_tables) Optimization Just generate unwind tables for exception handling +fuse-linker-plugin +Common Undocumented + fvar-tracking Common Report Var(flag_var_tracking) VarExists Optimization Perform variable tracking diff --git a/gcc/gcc.c b/gcc/gcc.c index 78e0ce8..b033d62 100644 --- a/gcc/gcc.c +++ b/gcc/gcc.c @@ -770,7 +770,7 @@ proper position among the other output files. */ #define LINK_COMMAND_SPEC "\ %{!fsyntax-only:%{!c:%{!M:%{!MM:%{!E:%{!S:\ %(linker) \ - %{use-linker-plugin: \ + %{fuse-linker-plugin: \ -plugin %(linker_plugin_file) \ -plugin-opt=%(lto_wrapper) \ -plugin-opt=%(lto_gcc) \ @@ -7513,7 +7513,7 @@ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\n" if (num_linker_inputs > 0 && error_count == 0 && print_subprocess_help < 2) { int tmp = execution_count; - const char *use_linker_plugin = "use-linker-plugin"; + const char *fuse_linker_plugin = "fuse-linker-plugin"; /* We'll use ld if we can't find collect2. */ if (! strcmp (linker_name_spec, "collect2")) @@ -7523,14 +7523,14 @@ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\n" linker_name_spec = "ld"; } - if (switch_matches (use_linker_plugin, - use_linker_plugin + strlen (use_linker_plugin), 0)) + if (switch_matches (fuse_linker_plugin, + fuse_linker_plugin + strlen (fuse_linker_plugin), 0)) { linker_plugin_file_spec = find_a_file (&exec_prefixes, "liblto_plugin.so", X_OK, false); if (!linker_plugin_file_spec) - fatal ("-use-linker-plugin, but liblto_plugin.so not found"); + fatal ("-fuse-linker-plugin, but liblto_plugin.so not found"); lto_libgcc_spec = find_a_file (&startfile_prefixes, "libgcc.a", R_OK, true); diff --git a/gcc/opts.c b/gcc/opts.c index 51a0cb9..72411b6 100644 --- a/gcc/opts.c +++ b/gcc/opts.c @@ -2102,6 +2102,10 @@ common_handle_option (size_t scode, const char *arg, int value, /* These are no-ops, preserved for backward compatibility. */ break; + case OPT_fuse_linker_plugin: + /* No-op. Used by the driver and passed to us because it starts with f.*/ + break; + default: /* If the flag was handled in a standard way, assume the lack of processing here is intentional. */