diff options
-rw-r--r-- | .gitignore | 5 | ||||
-rw-r--r-- | .tag (renamed from src/.tag) | 0 | ||||
-rw-r--r-- | LICENSE (renamed from minic/LICENSE) | 4 | ||||
-rw-r--r-- | Makefile | 45 | ||||
-rw-r--r-- | README | 8 | ||||
-rw-r--r-- | all.h (renamed from src/all.h) | 0 | ||||
-rw-r--r-- | copy.c (renamed from src/copy.c) | 0 | ||||
-rw-r--r-- | emit.c (renamed from src/emit.c) | 0 | ||||
-rw-r--r-- | isel.c (renamed from src/isel.c) | 0 | ||||
-rw-r--r-- | live.c (renamed from src/live.c) | 0 | ||||
-rw-r--r-- | main.c (renamed from src/main.c) | 0 | ||||
-rw-r--r-- | mem.c (renamed from src/mem.c) | 0 | ||||
-rw-r--r-- | minic/Makefile | 4 | ||||
-rwxr-xr-x | minic/mcc | 2 | ||||
-rw-r--r-- | parse.c (renamed from src/parse.c) | 0 | ||||
-rw-r--r-- | rega.c (renamed from src/rega.c) | 0 | ||||
-rw-r--r-- | spill.c (renamed from src/spill.c) | 0 | ||||
-rw-r--r-- | src/.gitignore | 5 | ||||
-rw-r--r-- | src/Makefile | 24 | ||||
-rw-r--r-- | ssa.c (renamed from src/ssa.c) | 0 | ||||
-rwxr-xr-x | tools/abifuzz.sh | 2 | ||||
-rw-r--r-- | tools/fptox.c | 18 | ||||
-rw-r--r-- | tools/pmov.c | 2 | ||||
-rwxr-xr-x | tools/regress.sh | 17 | ||||
-rwxr-xr-x | tools/unit.sh (renamed from test/go.sh) | 4 | ||||
-rw-r--r-- | util.c (renamed from src/util.c) | 0 |
26 files changed, 58 insertions, 82 deletions
diff --git a/.gitignore b/.gitignore index 2b1c6c0..c466bca 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,4 @@ -papers +obj +config.h +.comfile +*.out diff --git a/src/.tag b/.tag index 5b8c210..5b8c210 100644 --- a/src/.tag +++ b/.tag diff --git a/minic/LICENSE b/LICENSE index 8af557b..0b358b4 100644 --- a/minic/LICENSE +++ b/LICENSE @@ -1,6 +1,4 @@ -MIT/X Consortium License - -© 2015-2016 Quentin Carbonneaux +© 2015-2016 Quentin Carbonneaux <quentin@c9x.me> Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), diff --git a/Makefile b/Makefile index 9aefa3e..7c2bec8 100644 --- a/Makefile +++ b/Makefile @@ -1,8 +1,41 @@ -all clean check: - @make -C src $@ - @make -C minic $@ +BIN = qbe -sync-papers: - unison -auto papers ssh://qcar@h/data/d/ssa-doc +V = @ +OBJDIR = obj -.PHONY: all clean check sync-papers +SRC = main.c util.c parse.c mem.c ssa.c copy.c live.c isel.c spill.c rega.c emit.c +OBJ = $(SRC:%.c=$(OBJDIR)/%.o) + +CFLAGS += -Wall -Wextra -std=c99 -g -pedantic + +$(OBJDIR)/$(BIN): $(OBJ) $(OBJDIR)/timestamp + @echo "ld $@" + $(V)$(CC) $(LDFLAGS) $(OBJ) -o $@ + +$(OBJDIR)/%.o: %.c $(OBJDIR)/timestamp + @echo "cc $<" + $(V)$(CC) $(CFLAGS) -c $< -o $@ + +$(OBJDIR)/timestamp: + @mkdir -p $(OBJDIR) + @touch $@ + +$(OBJ): all.h +obj/main.o: config.h + +config.h: + @case `uname` in \ + *Darwin*) echo "#define Defaultasm Gasmacho" ;; \ + *Linux*) echo "#define Defaultasm Gaself" ;; \ + esac > $@ + +clean: + rm -fr $(OBJDIR) + +clean-gen: clean + rm -f config.h + +check: $(OBJDIR)/$(BIN) + tools/unit.sh all + +.PHONY: clean clean-gen check syndoc diff --git a/README b/README new file mode 100644 index 0000000..2f3d90e --- /dev/null +++ b/README @@ -0,0 +1,8 @@ +QBE - Backend Compiler http://c9x.me/compile/ + +doc/ Documentation. +minic/ An example C frontend for QBE. +tools/ Miscelaneous tools (testing). +test/ Unit tests. + +The LICENSE file applies to all files distributed. diff --git a/src/all.h b/all.h index 40c80f6..40c80f6 100644 --- a/src/all.h +++ b/all.h diff --git a/src/copy.c b/copy.c index ef2d01d..ef2d01d 100644 --- a/src/copy.c +++ b/copy.c diff --git a/src/emit.c b/emit.c index 9b2975d..9b2975d 100644 --- a/src/emit.c +++ b/emit.c diff --git a/src/isel.c b/isel.c index 2a55733..2a55733 100644 --- a/src/isel.c +++ b/isel.c diff --git a/src/live.c b/live.c index 44806e1..44806e1 100644 --- a/src/live.c +++ b/live.c diff --git a/src/main.c b/main.c index c1664be..c1664be 100644 --- a/src/main.c +++ b/main.c diff --git a/src/mem.c b/mem.c index bda43d7..bda43d7 100644 --- a/src/mem.c +++ b/mem.c diff --git a/minic/Makefile b/minic/Makefile index 66f0f04..856f2d3 100644 --- a/minic/Makefile +++ b/minic/Makefile @@ -6,9 +6,7 @@ $(BIN): yacc minic.y ./yacc minic.y $(CC) $(CFLAGS) -o $@ y.tab.c -all: $(BIN) -check: clean: rm -f yacc minic y.* -.PHONY: all check clean +.PHONY: clean diff --git a/minic/mcc b/minic/mcc index 5a95042..1c54fb9 100755 --- a/minic/mcc +++ b/minic/mcc @@ -29,7 +29,7 @@ fi ../minic/minic < $file > /tmp/minic.ssa && -../src/qbe < /tmp/minic.ssa > /tmp/minic.s && +../obj/qbe < /tmp/minic.ssa > /tmp/minic.s && cc $flags /tmp/minic.s if test $? -ne 0 diff --git a/src/parse.c b/parse.c index 2590971..2590971 100644 --- a/src/parse.c +++ b/parse.c diff --git a/src/rega.c b/rega.c index 7f8edcf..7f8edcf 100644 --- a/src/rega.c +++ b/rega.c diff --git a/src/spill.c b/spill.c index 72f8106..72f8106 100644 --- a/src/spill.c +++ b/spill.c diff --git a/src/.gitignore b/src/.gitignore deleted file mode 100644 index 5c8ecc2..0000000 --- a/src/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -qbe -config.h -.comfile -*.o -*.out diff --git a/src/Makefile b/src/Makefile deleted file mode 100644 index 6adfbd3..0000000 --- a/src/Makefile +++ /dev/null @@ -1,24 +0,0 @@ -BIN = qbe -OBJ = main.o util.o parse.o mem.o ssa.o copy.o live.o isel.o spill.o rega.o emit.o - -CFLAGS += -Wall -Wextra -std=c99 -g -pedantic - -$(BIN): $(OBJ) - $(CC) $(LDFLAGS) $(OBJ) -o $@ - -$(OBJ): all.h config.h - -config.h: - @case `uname` in \ - *Darwin*) echo "#define Defaultasm Gasmacho" ;; \ - *Linux*) echo "#define Defaultasm Gaself" ;; \ - esac > $@ - - -all: $(BIN) -clean: - rm -f $(BIN) $(OBJ) -check: $(BIN) - ../test/go.sh all - -.PHONY: all clean check syndoc diff --git a/src/ssa.c b/ssa.c index 0c163aa..0c163aa 100644 --- a/src/ssa.c +++ b/ssa.c diff --git a/tools/abifuzz.sh b/tools/abifuzz.sh index 57930fb..e715b3d 100755 --- a/tools/abifuzz.sh +++ b/tools/abifuzz.sh @@ -2,7 +2,7 @@ OCAMLC=${OCAMLC:-/usr/bin/ocamlc} DIR=`cd $(dirname "$0"); pwd` -QBE=$DIR/../src/qbe +QBE=$DIR/../obj/qbe failure() { echo "Failure at stage:" $1 >&2 diff --git a/tools/fptox.c b/tools/fptox.c deleted file mode 100644 index a2bc155..0000000 --- a/tools/fptox.c +++ /dev/null @@ -1,18 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> - -int -main(int ac, char *av[]) -{ - double d; - float f; - - if (ac < 2) { - usage: - fputs("usage: fptox NUMBER\n", stderr); - return 1; - } - f = d = strtod(av[1], 0); - printf("0x%08x 0x%016llx\n", *(unsigned *)&f, *(unsigned long long*)&d); - return 0; -} diff --git a/tools/pmov.c b/tools/pmov.c index 9136374..62d3921 100644 --- a/tools/pmov.c +++ b/tools/pmov.c @@ -13,7 +13,7 @@ static void assert_test(char *, int), fail(void), iexec(int *); -#include "../src/rega.c" +#include "../../rega.c" static void bsinit_(BSet *, uint); diff --git a/tools/regress.sh b/tools/regress.sh deleted file mode 100755 index 5aaea35..0000000 --- a/tools/regress.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/sh - -for t in ../test/* -do - printf "Test $t ... " - - ./qbe $t >/tmp/out.0 2>&1 - ./qbe.1 $t >/tmp/out.1 2>&1 - - if diff /tmp/out.0 /tmp/out.1 > /dev/null - then - echo "OK" - else - echo "KO" - break - fi -done diff --git a/test/go.sh b/tools/unit.sh index d2563d4..c4a85d2 100755 --- a/test/go.sh +++ b/tools/unit.sh @@ -1,7 +1,7 @@ #!/bin/sh DIR=`cd $(dirname "$0"); pwd` -QBE=$DIR/../src/qbe +QBE=$DIR/../obj/qbe TMP=/tmp/qbe.zzzz @@ -98,7 +98,7 @@ fi case $1 in "all") F=0 - for T in $DIR/[!_]*.ssa + for T in $DIR/../test/[!_]*.ssa do once $T F=`expr $F + $?` diff --git a/src/util.c b/util.c index 65b3ff8..65b3ff8 100644 --- a/src/util.c +++ b/util.c |