aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1995-05-22 17:10:06 -0400
committerRichard Kenner <kenner@gcc.gnu.org>1995-05-22 17:10:06 -0400
commitf70165f69f33b7ae30f8dfba293475f622862f1e (patch)
treebd40d611fe5644f4e05631a0266ec367d423c13a
parent2c69f2538b6f6447e43a568d602ff6afc87f694f (diff)
downloadgcc-f70165f69f33b7ae30f8dfba293475f622862f1e.zip
gcc-f70165f69f33b7ae30f8dfba293475f622862f1e.tar.gz
gcc-f70165f69f33b7ae30f8dfba293475f622862f1e.tar.bz2
(HAVE_OBJECT_SUFFIX): New macro.
(process_command): Convert x.o to x.foo for OBJECT_SUFFIX of ".foo". (do_spec_1): Avoid shadow variable "i" and always use for loop var. From-SVN: r9766
-rw-r--r--gcc/gcc.c29
1 files changed, 22 insertions, 7 deletions
diff --git a/gcc/gcc.c b/gcc/gcc.c
index 3f0c490..414f195 100644
--- a/gcc/gcc.c
+++ b/gcc/gcc.c
@@ -145,7 +145,9 @@ compilation is specified by a string called a "spec". */
#endif
/* By default, the suffix for object files is ".o". */
-#ifndef OBJECT_SUFFIX
+#ifdef OBJECT_SUFFIX
+#define HAVE_OBJECT_SUFFIX
+#else
#define OBJECT_SUFFIX ".o"
#endif
@@ -2924,6 +2926,23 @@ process_command (argc, argv)
}
else
{
+#ifdef HAVE_OBJECT_SUFFIX
+ /* Convert x.o to x.obj if OBJECT_SUFFIX is ".obj". */
+ if (strlen (argv[i]) > 2
+ && argv[i][strlen (argv[i]) - 2] == '.'
+ && argv[i][strlen (argv[i]) - 1] == 'o')
+ {
+ int j;
+
+ for (j = 0; j < strlen (argv[i]) - 2; j++)
+ obstack_1grow (&obstack, argv[i][j]);
+
+ obstack_grow (&obstack, OBJECT_SUFFIX, strlen (OBJECT_SUFFIX));
+ obstack_1grow (&obstack, 0);
+ argv[i] = obstack_finish (&obstack);
+ }
+#endif
+
if (strcmp (argv[i], "-") != 0 && access (argv[i], R_OK) < 0)
{
perror_with_name (argv[i]);
@@ -3060,7 +3079,6 @@ do_spec_1 (spec, inswitch, soft_matched_part)
if (argbuf_index > 0 && !strcmp (argbuf[argbuf_index - 1], "|"))
{
- int i;
for (i = 0; i < n_switches; i++)
if (!strcmp (switches[i].part1, "pipe"))
break;
@@ -3365,11 +3383,8 @@ do_spec_1 (spec, inswitch, soft_matched_part)
break;
case 'o':
- {
- register int f;
- for (f = 0; f < n_infiles; f++)
- store_arg (outfiles[f], 0, 0);
- }
+ for (i = 0; i < n_infiles; i++)
+ store_arg (outfiles[i], 0, 0);
break;
case 'O':