+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
 
   cfi_pop_insert ();
 }
 \f
-#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                               \
                      char *line_start = input_line_pointer;
                      int mri_line_macro;
 
-                     HANDLE_CONDITIONAL_ASSEMBLY ();
+                     HANDLE_CONDITIONAL_ASSEMBLY (0);
 
                      c = get_symbol_end ();
 
          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.  */
              /* local label  ("4:")  */
              char *backup = input_line_pointer;
 
-             HANDLE_CONDITIONAL_ASSEMBLY ();
+             HANDLE_CONDITIONAL_ASSEMBLY (1);
 
              temp = c - '0';
 
              continue;
            }
 
-         HANDLE_CONDITIONAL_ASSEMBLY ();
+         HANDLE_CONDITIONAL_ASSEMBLY (1);
 
 #ifdef tc_unrecognized_line
          if (tc_unrecognized_line (c))
     }
   if (inquote)
     as_warn (_("missing closing `%c'"), inquote);
-  if (inescape)
+  if (inescape && !ignore_input ())
     as_warn (_("stray `\\'"));
   return s;
 }
 
+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.
 
 [      ]*[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