aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRoger Sayle <roger@eyesopen.com>2005-01-07 01:05:37 +0000
committerRoger Sayle <sayle@gcc.gnu.org>2005-01-07 01:05:37 +0000
commit9a3bf943cef085b07d390330be5a11abae72842a (patch)
treec4319946d2662609ef86dd5bf713bce3fe21a094 /gcc
parentc79fc2963d970e9ca6316d8af8a9669b0ad04e5d (diff)
downloadgcc-9a3bf943cef085b07d390330be5a11abae72842a.zip
gcc-9a3bf943cef085b07d390330be5a11abae72842a.tar.gz
gcc-9a3bf943cef085b07d390330be5a11abae72842a.tar.bz2
re PR target/6077 ([alpha-osf].s with -x assembler-with-cpp breaks mips-tfile)
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. From-SVN: r93023
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/gcc.c16
2 files changed, 24 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 965fe59..9c8a861 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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.
diff --git a/gcc/gcc.c b/gcc/gcc.c
index 56d50de..99d92f9 100644
--- 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');