commit 941eee05b2a817286159b9470c683cebd27f2345
Author:     Quentin Rameau <[email protected]>
AuthorDate: Wed Jun 1 19:44:34 2016 +0200
Commit:     Quentin Rameau <[email protected]>
CommitDate: Wed Jun 1 19:44:34 2016 +0200

    [driver] add S flag for stopping after assembly output

diff --git a/driver/posix/scc.c b/driver/posix/scc.c
index b237718..9d21684 100644
--- a/driver/posix/scc.c
+++ b/driver/posix/scc.c
@@ -42,7 +42,7 @@ static struct tool {
 
 char *argv0;
 static char *arch;
-static int Eflag, kflag;
+static int Eflag, Sflag, kflag;
 
 static void
 terminate(void)
@@ -159,13 +159,17 @@ build(char *file)
                        ADDARG(tool, file);
                        break;
                case CC2:
-                       out = (!arch || strcmp(arch, "qbe")) ? AS : QBE;
-                       if (out != QBE)
-                               keepfile = kflag;
+                       if (!arch || strcmp(arch, "qbe")) {
+                               out = Sflag ? NR_TOOLS : AS;
+                               keepfile = (Sflag || kflag);
+                       } else {
+                               out = QBE;
+                               keepfile = Sflag;
+                       }
                        break;
                case QBE:
-                       out = AS;
-                       keepfile = kflag;
+                       out = Sflag ? NR_TOOLS : AS;
+                       keepfile = (Sflag || kflag);
                        break;
                case AS:
                        out = NR_TOOLS;
@@ -208,6 +212,9 @@ main(int argc, char *argv[])
                Eflag = 1;
                ADDARG(CC1, "-E");
                break;
+       case 'S':
+               Sflag = 1;
+               break;
        case 'k':
                kflag = 1;
                break;

Reply via email to