OSDN Git Service

PR target/6077
authorsayle <sayle@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 7 Jan 2005 01:05:37 +0000 (01:05 +0000)
committersayle <sayle@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 7 Jan 2005 01:05:37 +0000 (01:05 +0000)
* gcc.c (input_suffix_matches): Tweak the semantics of %{.s:...}
and %{.S:...} (and their negative variants) to test whether the
input file is assembler or pre-processed-assembler independent of
the actual filename extension.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@93023 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/gcc.c

index 965fe59..9c8a861 100644 (file)
@@ -1,5 +1,13 @@
 2005-01-06  Roger Sayle  <roger@eyesopen.com>
 
+       PR target/6077
+       * gcc.c (input_suffix_matches): Tweak the semantics of %{.s:...}
+       and %{.S:...} (and their negative variants) to test whether the
+       input file is assembler or pre-processed-assembler independent of
+       the actual filename extension.
+
+2005-01-06  Roger Sayle  <roger@eyesopen.com>
+
        * simplify-rtx.c (simplify_subreg): Simplify truncations of shifts
        of sign or zero extended values.
 
index 56d50de..99d92f9 100644 (file)
--- a/gcc/gcc.c
+++ b/gcc/gcc.c
@@ -5460,6 +5460,22 @@ handle_spec_function (const char *p)
 static inline bool
 input_suffix_matches (const char *atom, const char *end_atom)
 {
+  /* We special case the semantics of {.s:...} and {.S:...} and their
+     negative variants.  Instead of testing the input filename suffix,
+     we test whether the input source file is an assembler file or an
+     assembler-with-cpp file respectively.  This allows us to correctly
+     handle the -x command line option.  */
+
+  if (atom + 1 == end_atom
+      && input_file_compiler
+      && input_file_compiler->suffix)
+    {
+      if (*atom == 's')
+       return !strcmp (input_file_compiler->suffix, "@assembler");
+      if (*atom == 'S')
+       return !strcmp (input_file_compiler->suffix, "@assembler-with-cpp");
+    }
+
   return (input_suffix
          && !strncmp (input_suffix, atom, end_atom - atom)
          && input_suffix[end_atom - atom] == '\0');