diff options
-rw-r--r-- | gas/app.c | 54 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/comments.l | 30 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/comments.s | 13 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/i386.exp | 1 |
4 files changed, 50 insertions, 48 deletions
@@ -217,7 +217,8 @@ do_scrub_begin (int m68k_mri ATTRIBUTE_UNUSED) lex[(unsigned char) *p] = LEX_IS_PARALLEL_SEPARATOR; #endif - /* Only allow slash-star comments if slash is not in use. + /* Only allow slash-star comments if slash is not in use. Certain + other cases are dealt with in LEX_IS_LINE_COMMENT_START handling. FIXME: This isn't right. We should always permit them. */ if (lex['/'] == 0) lex['/'] = LEX_IS_TWOCHAR_COMMENT_1ST; @@ -476,7 +477,6 @@ do_scrub_chars (size_t (*get) (char *, size_t), char *tostart, size_t tolen, 10: After seeing whitespace in state 9 (keep white before symchar) 11: After seeing a symbol character in state 0 (eg a label definition) -1: output string in out_string and go to the state in old_state - -2: flush text until a '*' '/' is seen, then go to state old_state 12: no longer used #ifdef DOUBLEBAR_PARALLEL 13: After seeing a vertical bar, looking for a second @@ -579,43 +579,6 @@ do_scrub_chars (size_t (*get) (char *, size_t), char *tostart, size_t tolen, PUT (ch); continue; - case -2: - for (;;) - { - do - { - ch = GET (); - - if (ch == EOF) - { - as_warn (_("end of file in comment")); - goto fromeof; - } - - if (ch == '\n') - PUT ('\n'); - } - while (ch != '*'); - - while ((ch = GET ()) == '*') - ; - - if (ch == EOF) - { - as_warn (_("end of file in comment")); - goto fromeof; - } - - if (ch == '/') - break; - - UNGET (ch); - } - - state = old_state; - UNGET (' '); - continue; - case 4: ch = GET (); if (ch == EOF) @@ -1076,6 +1039,7 @@ do_scrub_chars (size_t (*get) (char *, size_t), char *tostart, size_t tolen, ch2 = GET (); if (ch2 == '*') { + twochar_comment: for (;;) { do @@ -1290,15 +1254,9 @@ do_scrub_chars (size_t (*get) (char *, size_t), char *tostart, size_t tolen, { ch2 = GET (); if (ch2 == '*') - { - old_state = 3; - state = -2; - break; - } - else if (ch2 != EOF) - { - UNGET (ch2); - } + goto twochar_comment; + if (ch2 != EOF) + UNGET (ch2); } if (state == 0 || state == 1) /* Only comment at start of line. */ diff --git a/gas/testsuite/gas/i386/comments.l b/gas/testsuite/gas/i386/comments.l new file mode 100644 index 0000000..7aef3a1 --- /dev/null +++ b/gas/testsuite/gas/i386/comments.l @@ -0,0 +1,30 @@ +.*: Assembler messages: +.*:6: Error: .* +.*:7: Error: .* +[ ]*[0-9]+[ ]+scrubber: +[ ]*[0-9]+[ ]+\.irp x,"" +[ ]*[0-9]+[ ]* +[ ]*[0-9]+[ ]+/\* \*/vaddps %zmm0, %zmm1, %zmm2 +[ ]*[0-9]+[ ]+vaddps/\*\*/%zmm0, %zmm1, %zmm2 +[ ]*[0-9]+[ ]+vadd/\*\*/ps %zmm0, %zmm1, %zmm2 +[ ]*[0-9]+[ ]+vaddps %zmm/\*\*/0, %zmm1, %zmm2 +[ ]*[0-9]+[ ]* +[ ]*[0-9]+[ ]+vaddps %zmm0, %zmm1, %zmm2# ... +[ ]*[0-9]+[ ]+vaddps %zmm0, %zmm1, %zmm2 # ... +[ ]*[0-9]+[ ]+vaddps %zmm0, %zmm1, %zmm2/\* \*/# ... +[ ]*[0-9]+[ ]* +[ ]*[0-9]+[ ]+\.endr +[ ]*[0-9]+[ ]+> + +[ ]*[0-9]+ \?\?\?\? [0-9A-F]+[ ]+> vaddps %zmm0,%zmm1,%zmm2 +#... +[ ]*[0-9]+ \?\?\?\? [0-9A-F]+[ ]+> vaddps %zmm0,%zmm1,%zmm2 +#... +[ ]*[0-9]+[ ]+> vadd ps %zmm0,%zmm1,%zmm2 +[ ]*[0-9]+[ ]+> vaddps %zmm 0,%zmm1,%zmm2 +[ ]*[0-9]+[ ]+> + +[ ]*[0-9]+ \?\?\?\? [0-9A-F]+[ ]+> vaddps %zmm0,%zmm1,%zmm2 +#... +[ ]*[0-9]+ \?\?\?\? [0-9A-F]+[ ]+> vaddps %zmm0,%zmm1,%zmm2 +#... +[ ]*[0-9]+ \?\?\?\? [0-9A-F]+[ ]+> vaddps %zmm0,%zmm1,%zmm2 +#pass diff --git a/gas/testsuite/gas/i386/comments.s b/gas/testsuite/gas/i386/comments.s new file mode 100644 index 0000000..ea700eb --- /dev/null +++ b/gas/testsuite/gas/i386/comments.s @@ -0,0 +1,13 @@ +scrubber: + .irp x,"" + +/* */vaddps %zmm0, %zmm1, %zmm2 + vaddps/**/%zmm0, %zmm1, %zmm2 + vadd/**/ps %zmm0, %zmm1, %zmm2 + vaddps %zmm/**/0, %zmm1, %zmm2 + + vaddps %zmm0, %zmm1, %zmm2# ... + vaddps %zmm0, %zmm1, %zmm2 # ... + vaddps %zmm0, %zmm1, %zmm2/* */# ... + + .endr diff --git a/gas/testsuite/gas/i386/i386.exp b/gas/testsuite/gas/i386/i386.exp index bf9cb26..590a55d 100644 --- a/gas/testsuite/gas/i386/i386.exp +++ b/gas/testsuite/gas/i386/i386.exp @@ -105,6 +105,7 @@ if [gas_32_check] then { run_dump_test "equ" run_list_test "equ-2" "-al" run_list_test "equ-bad" + run_list_test "comments" "-almn" run_dump_test "curly" run_dump_test "separator" run_dump_test "divide" |