gas: avoid bogus warnings in false branches of conditional

The construct being added to the cond.s test case otherwise triggered
both the "missing closing ..." and the "stray ..." (twice) warnings in
_find_end_of_line(). As that code fragments suggests, this is needed to
support (include) files that can be used for both assembler .include
and compiler #include directives.
This commit is contained in:
Jan Beulich 2014-10-21 09:57:41 +02:00 committed by Jan Beulich
parent 12e87fac5c
commit e74211b660
5 changed files with 36 additions and 7 deletions

View File

@ -1,3 +1,11 @@
2014-10-21 Jan Beulich <jbeulich@suse.com>
* read.c (HANDLE_CONDITIONAL_ASSEMBLY): New parameter "num_read".
(read_a_source_file): Adjust HANDLE_CONDITIONAL_ASSEMBLY
invocations.
(_find_end_of_line): Don't issue "stray '\\'" warning when in
false branch of conditional.
2014-10-21 Jan Beulich <jbeulich@suse.com>
* config/tc-aarch64.c (output_operand_error_record): Move down

View File

@ -557,10 +557,11 @@ pobegin (void)
cfi_pop_insert ();
}
#define HANDLE_CONDITIONAL_ASSEMBLY() \
#define HANDLE_CONDITIONAL_ASSEMBLY(num_read) \
if (ignore_input ()) \
{ \
char *eol = find_end_of_line (input_line_pointer, flag_m68k_mri); \
char *eol = find_end_of_line (input_line_pointer - (num_read), \
flag_m68k_mri); \
input_line_pointer = (input_line_pointer <= buffer_limit \
&& eol >= buffer_limit) \
? buffer_limit \
@ -834,7 +835,7 @@ read_a_source_file (char *name)
char *line_start = input_line_pointer;
int mri_line_macro;
HANDLE_CONDITIONAL_ASSEMBLY ();
HANDLE_CONDITIONAL_ASSEMBLY (0);
c = get_symbol_end ();
@ -905,7 +906,7 @@ read_a_source_file (char *name)
if (is_name_beginner (c))
{
/* Want user-defined label or pseudo/opcode. */
HANDLE_CONDITIONAL_ASSEMBLY ();
HANDLE_CONDITIONAL_ASSEMBLY (1);
s = --input_line_pointer;
c = get_symbol_end (); /* name's delimiter. */
@ -1119,7 +1120,7 @@ read_a_source_file (char *name)
/* local label ("4:") */
char *backup = input_line_pointer;
HANDLE_CONDITIONAL_ASSEMBLY ();
HANDLE_CONDITIONAL_ASSEMBLY (1);
temp = c - '0';
@ -1266,7 +1267,7 @@ read_a_source_file (char *name)
continue;
}
HANDLE_CONDITIONAL_ASSEMBLY ();
HANDLE_CONDITIONAL_ASSEMBLY (1);
#ifdef tc_unrecognized_line
if (tc_unrecognized_line (c))
@ -6138,7 +6139,7 @@ _find_end_of_line (char *s, int mri_string, int insn ATTRIBUTE_UNUSED,
}
if (inquote)
as_warn (_("missing closing `%c'"), inquote);
if (inescape)
if (inescape && !ignore_input ())
as_warn (_("stray `\\'"));
return s;
}

View File

@ -1,3 +1,9 @@
2014-10-21 Jan Beulich <jbeulich@suse.com>
* gas/gas/all/cond.s: Also test processing of leading double
quote and trailing backslash in false branch of conditional.
* gas/gas/all/cond.l: Adjust accordingly.
2014-10-21 Jan Beulich <jbeulich@suse.com>
* gas/ppc/power8.s: Test msgclr and msgsnd.

View File

@ -67,5 +67,8 @@
[ ]*[1-9][0-9]*[ ]+[0-9a-f]+[048c] 0[0C] ?00 ?00 ?0[0C][ ]+m[ ]+12,[ ]*13[ ]*
[ ]*[1-9][0-9]*[ ]+0[0D] ?00 ?00 ?0[0D][ ]*
[ ]*[1-9][0-9]*[ ]+
[ ]*[1-9][0-9]*[ ]+\.if[ ]+0[ ]*
[ ]*[1-9][0-9]*[ ]+\.endif[ ]*
[ ]*[1-9][0-9]*[ ]+
[ ]*[1-9][0-9]*[ ]+.*\.p2align 5,0
#pass

View File

@ -89,4 +89,15 @@
m 11,
m 12, 13
.if 0
#define x "m" \
(x)
#define y \
"m" \
(y)
#define z \
((z) \
+ 1)
.endif
.p2align 5,0