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
This commit is contained in:
Roger Sayle 2005-01-07 01:05:37 +00:00 committed by Roger Sayle
parent c79fc2963d
commit 9a3bf943ce
2 changed files with 24 additions and 0 deletions

View File

@ -1,3 +1,11 @@
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> 2005-01-06 Roger Sayle <roger@eyesopen.com>
* simplify-rtx.c (simplify_subreg): Simplify truncations of shifts * simplify-rtx.c (simplify_subreg): Simplify truncations of shifts

View File

@ -5460,6 +5460,22 @@ handle_spec_function (const char *p)
static inline bool static inline bool
input_suffix_matches (const char *atom, const char *end_atom) 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 return (input_suffix
&& !strncmp (input_suffix, atom, end_atom - atom) && !strncmp (input_suffix, atom, end_atom - atom)
&& input_suffix[end_atom - atom] == '\0'); && input_suffix[end_atom - atom] == '\0');