aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArthur Cohen <arthur.cohen@embecosm.com>2022-07-28 16:51:32 +0200
committerArthur Cohen <arthur.cohen@embecosm.com>2022-07-28 16:51:32 +0200
commit237be3f618dfae396944c601c295eb182d32e54e (patch)
treeb41bdf6312ed7b76123a4472ff3dabee29cc3b9d
parent205096066a50f501eb1c1d1f7acb4b0daa8be15a (diff)
downloadgcc-237be3f618dfae396944c601c295eb182d32e54e.zip
gcc-237be3f618dfae396944c601c295eb182d32e54e.tar.gz
gcc-237be3f618dfae396944c601c295eb182d32e54e.tar.bz2
rustspec: Remove most unused options from gccgo
-rw-r--r--gcc/rust/rustspec.cc131
1 files changed, 11 insertions, 120 deletions
diff --git a/gcc/rust/rustspec.cc b/gcc/rust/rustspec.cc
index a504602..b05f8ae 100644
--- a/gcc/rust/rustspec.cc
+++ b/gcc/rust/rustspec.cc
@@ -40,13 +40,6 @@ lang_specific_driver (struct cl_decoded_option **in_decoded_options,
{
unsigned int i, j;
- /* This is a tristate:
- -1 means we should not link in librust
- 0 means we should link in librust if it is needed
- 1 means librust is needed and should be linked in.
- 2 means librust is needed and should be linked statically. */
- int library = 0;
-
/* The new argument list will be contained in this. */
struct cl_decoded_option *new_decoded_options;
@@ -78,14 +71,6 @@ lang_specific_driver (struct cl_decoded_option **in_decoded_options,
/* Whether the -o option was used. */
bool saw_opt_o = false;
- /* Whether the -c option was used. Also used for -E, -fsyntax-only,
- in general anything which implies only compilation and not
- linking. */
- bool saw_opt_c = false;
-
- /* Whether the -S option was used. */
- bool saw_opt_S = false;
-
/* The first input file with an extension of .rs. */
const char *first_rust_file = NULL;
@@ -101,47 +86,9 @@ lang_specific_driver (struct cl_decoded_option **in_decoded_options,
switch (decoded_options[i].opt_index)
{
- case OPT_r:
- case OPT_nostdlib:
- case OPT_nodefaultlibs:
- library = -1;
- break;
-
case OPT_l:
if (strcmp (arg, "c") == 0)
args[i] |= WITHLIBC;
- else
- /* Unrecognized libraries (e.g. -lfoo) may require librust. */
- library = (library == 0) ? 1 : library;
- break;
-
- case OPT_x:
- if (library == 0 && strcmp (arg, "rust") == 0)
- library = 1;
- break;
-
- case OPT_Xlinker:
- case OPT_Wl_:
- /* Arguments that go directly to the linker might be .o files,
- or something, and so might cause librust to be needed. */
- if (library == 0)
- library = 1;
- break;
-
- case OPT_c:
- case OPT_E:
- case OPT_M:
- case OPT_MM:
- case OPT_fsyntax_only:
- /* Don't specify libraries if we won't link, since that would
- cause a warning. */
- saw_opt_c = true;
- library = -1;
- break;
-
- case OPT_S:
- saw_opt_S = true;
- library = -1;
break;
case OPT_o:
@@ -156,15 +103,7 @@ lang_specific_driver (struct cl_decoded_option **in_decoded_options,
shared_libgcc = 0;
break;
- case OPT_static_librust:
- library = library >= 0 ? 2 : library;
- args[i] |= SKIPOPT;
- break;
-
case OPT_SPECIAL_input_file:
- if (library == 0)
- library = 1;
-
if (first_rust_file == NULL)
{
int len;
@@ -173,6 +112,13 @@ lang_specific_driver (struct cl_decoded_option **in_decoded_options,
if (len > 3 && strcmp (arg + len - 3, ".rs") == 0)
first_rust_file = arg;
}
+ else
+ {
+ // FIXME: ARTHUR: Do we want to error here? If there's already one
+ // file?
+ // How do we error here? Do we want to instead just handle that in
+ // the session manager?
+ }
break;
}
@@ -185,7 +131,7 @@ lang_specific_driver (struct cl_decoded_option **in_decoded_options,
#endif
/* Make sure to have room for the trailing NULL argument. */
- num_args = argc + shared_libgcc + (library > 0) * 5 + 10;
+ num_args = argc + shared_libgcc * 5 + 10;
new_decoded_options = XNEWVEC (struct cl_decoded_option, num_args);
i = 0;
@@ -199,7 +145,7 @@ lang_specific_driver (struct cl_decoded_option **in_decoded_options,
{
new_decoded_options[j] = decoded_options[i];
- if (!saw_libc && (args[i] & WITHLIBC) && library > 0)
+ if (!saw_libc && (args[i] & WITHLIBC))
{
--j;
saw_libc = &decoded_options[i];
@@ -217,67 +163,12 @@ lang_specific_driver (struct cl_decoded_option **in_decoded_options,
driver will invoke rust1 separately for each input file. FIXME:
This should probably use some other interface to force the driver
to set combine_inputs. */
- if (first_rust_file != NULL && !saw_opt_o)
+ if (!saw_opt_o)
{
- if (saw_opt_c || saw_opt_S)
- {
- const char *base;
- int baselen;
- int alen;
- char *out;
-
- base = lbasename (first_rust_file);
- baselen = strlen (base) - 3;
- alen = baselen + 3;
- out = XNEWVEC (char, alen);
- memcpy (out, base, baselen);
- /* The driver will convert .o to some other suffix (e.g.,
- .obj) if appropriate. */
- out[baselen] = '.';
- if (saw_opt_S)
- out[baselen + 1] = 's';
- else
- out[baselen + 1] = 'o';
- out[baselen + 2] = '\0';
- generate_option (OPT_o, out, 1, CL_DRIVER, &new_decoded_options[j]);
- }
- else
- generate_option (OPT_o, "a.out", 1, CL_DRIVER, &new_decoded_options[j]);
+ generate_option (OPT_o, "a.out", 1, CL_DRIVER, &new_decoded_options[j]);
j++;
}
- /* Add `-lrust' if we haven't already done so. */
- if (library > 0)
- {
- // generate_option (OPT_l, LIBGOBEGIN, 1, CL_DRIVER,
- // &new_decoded_options[j]);
- // added_libraries++;
- // j++;
-
-#ifdef HAVE_LD_STATIC_DYNAMIC
- if (library > 1 && !static_link)
- {
- generate_option (OPT_Wl_, LD_STATIC_OPTION, 1, CL_DRIVER,
- &new_decoded_options[j]);
- j++;
- }
-#endif
-
- // generate_option (OPT_l, LIBGO, 1,
- // CL_DRIVER, &new_decoded_options[j]);
- // added_libraries++;
- // j++;
-
-#ifdef HAVE_LD_STATIC_DYNAMIC
- if (library > 1 && !static_link)
- {
- generate_option (OPT_Wl_, LD_DYNAMIC_OPTION, 1, CL_DRIVER,
- &new_decoded_options[j]);
- j++;
- }
-#endif
- }
-
if (saw_libc)
new_decoded_options[j++] = *saw_libc;
if (shared_libgcc && !static_link)