+Wed Dec 29 11:31:44 1993 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * app.c (do_scrub_next_char): Fix more bugs dealing with
+ labels without colons (For HPPA and MRI).
+
Sun Dec 26 14:31:47 1993 Torbjorn Granlund (tege@adder.cygnus.com)
* tc-hppa.c (pre_defined_registers): Convert to lower case.
if (ch == '"')
{
(*unget) (ch);
- out_string = "\n.appfile ";
+ out_string = "\n\t.appfile ";
old_state = 7;
state = -1;
return *out_string++;
not_cpp_line = 1;
goto recycle;
}
-#ifdef MRI
- (*unget) (ch); /* Put back */
- return ' '; /* Always return one space at start of line */
-#endif
/* If we're in state 2, we've seen a non-white
character followed by whitespace. If the next
return ch;
}
+#if defined (LABELS_WITHOUT_COLONS) || defined (MRI)
+ /* Like above, but handles case where labels are not
+ required to have colons (and therefore must be identified
+ by their *position* in the input stream.) For a testcase
+ see hppa/more.parse/labelbug.s.
+
+ This also has the effect of sometimes leaving a whitespace
+ before a newline. Instead of trying to rework this horribly
+ broken and hairy code I'm just going to zap the extra space here. */
+ if (state == 2 && lex[ch] == LEX_IS_SYMBOL_COMPONENT)
+ {
+ (*unget) (ch);
+ return ' ';
+ }
+
+ /* Don't emit a space before a newline. */
+ if (state == 2 && lex[ch] == LEX_IS_NEWLINE)
+ {
+ state = 0;
+ return ch;
+ }
+#endif
+
switch (state)
{
case 0:
(*unget) (ch);
old_state = 4;
state = -1;
- out_string = ".appline ";
+ out_string = "\t.appline ";
return *out_string++;
}