mescc: prefix local labels with _.
authorJan Nieuwenhuizen <janneke@gnu.org>
Sat, 2 Dec 2017 11:59:07 +0000 (12:59 +0100)
committerJan Nieuwenhuizen <janneke@gnu.org>
Sat, 2 Dec 2017 11:59:07 +0000 (12:59 +0100)
* module/language/c99/compiler.mes (expr->accu): prefix local labels with _.

module/language/c99/compiler.mes

index 54df5a56ddb31519c42aa75d2b32e9d2b81e1d7c..e45a6b464a3894728d84419c401f26481881578d 100644 (file)
         ((or ,a ,b)
          (let* ((info ((expr->accu info) a))
                 (here (number->string (length (.text info))))
-                (skip-b-label (string-append (.function info) "_" here "_or_skip_b"))
+                (skip-b-label (string-append "_" (.function info) "_" here "_or_skip_b"))
                 (info (append-text info (wrap-as (i386:accu-test))))
                 (info (append-text info (wrap-as (i386:jump-nz skip-b-label))))
                 (info (append-text info (wrap-as (i386:accu-test))))
         ((and ,a ,b)
          (let* ((info ((expr->accu info) a))
                 (here (number->string (length (.text info))))
-                (skip-b-label (string-append (.function info) "_" here "_and_skip_b"))
+                (skip-b-label (string-append "_" (.function info) "_" here "_and_skip_b"))
                 (info (append-text info (wrap-as (i386:accu-test))))
                 (info (append-text info (wrap-as (i386:jump-z skip-b-label))))
                 (info (append-text info (wrap-as (i386:accu-test))))
         ((if ,test ,then)
          (let* ((info (append-text info (ast->comment `(if ,test (ellipsis)))))
                 (here (number->string (length text)))
-                (label (string-append (.function info) "_" here "_"))
+                (label (string-append "_" (.function info) "_" here "_"))
                 (break-label (string-append label "break"))
                 (else-label (string-append label "else"))
                 (info ((test-jump-label->info info break-label) test))
         ((if ,test ,then ,else)
          (let* ((info (append-text info (ast->comment `(if ,test (ellipsis) (ellipsis)))))
                 (here (number->string (length text)))
-                (label (string-append (.function info) "_" here "_"))
+                (label (string-append "_" (.function info) "_" here "_"))
                 (break-label (string-append label "break"))
                 (else-label (string-append label "else"))
                 (info ((test-jump-label->info info else-label) test))
         ((expr-stmt (cond-expr ,test ,then ,else))
          (let* ((info (append-text info (ast->comment `(cond-expr ,test (ellipsis) (ellipsis)))))
                 (here (number->string (length text)))
-                (label (string-append (.function info) "_" here "_"))
+                (label (string-append "_" (.function info) "_" here "_"))
                 (else-label (string-append label "else"))
                 (break-label (string-append label "break"))
                 (info ((test-jump-label->info info else-label) test))
         ((switch ,expr (compd-stmt (block-item-list . ,statements)))
          (let* ((info (append-text info (ast->comment `(switch ,expr (compd-stmt (block-item-list (ellipsis)))))))
                 (here (number->string (length text)))
-                (label (string-append (.function info) "_" here "_"))
+                (label (string-append "_" (.function info) "_" here "_"))
                 (break-label (string-append label "break"))
                 (clauses (statements->clauses statements))
                 (info ((expr->accu info) expr))
         ((for ,init ,test ,step ,body)
          (let* ((info (append-text info (ast->comment `(for ,init ,test ,step (ellipsis)))))
                 (here (number->string (length text)))
-                (label (string-append (.function info) "_" here "_"))
+                (label (string-append "_" (.function info) "_" here "_"))
                 (break-label (string-append label "break"))
                 (loop-label (string-append label "loop"))
                 (continue-label (string-append label "continue"))
         ((while ,test ,body)
          (let* ((info (append-text info (ast->comment `(while ,test (ellipsis)))))
                 (here (number->string (length text)))
-                (label (string-append (.function info) "_" here "_"))
+                (label (string-append "_" (.function info) "_" here "_"))
                 (break-label (string-append label "break"))
                 (loop-label (string-append label "loop"))
                 (continue-label (string-append label "continue"))
         ((do-while ,body ,test)
          (let* ((info (append-text info (ast->comment `(do-while ,test (ellipsis)))))
                 (here (number->string (length text)))
-                (label (string-append (.function info) "_" here "_"))
+                (label (string-append "_" (.function info) "_" here "_"))
                 (break-label (string-append label "break"))
                 (loop-label (string-append label "loop"))
                 (continue-label (string-append label "continue"))
                   #:continue (cdr (.continue info)))))
 
         ((labeled-stmt (ident ,label) ,statement)
-         (let ((info (append-text info `(((#:label ,(string-append (.function info) "_label_" label)))))))
+         (let ((info (append-text info `(((#:label ,(string-append "_" (.function info) "_label_" label)))))))
            ((ast->info info) statement)))
 
         ((goto (ident ,label))
-         (append-text info (wrap-as (i386:jump (string-append (.function info) "_label_" label)))))
+         (append-text info (wrap-as (i386:jump (string-append "_" (.function info) "_label_" label)))))
 
         ((return ,expr)
          (let ((info ((expr->accu info) expr)))