22 # Must be a GCC or Clang
33CC ?= cc
44
5- OPT ?= -O2 - flto
5+ OPT ?= -O3 -ffast-math - flto -DNDEBUG
66
77EXE ?=
88
99TIME_CMD ?= $(shell which gdate || which date) +%s%3N
1010
11+ LLVM_PROFDATA ?= llvm-profdata
12+
1113LIBM ?= YES
1214LIBM_NO :=
1315LIBM_YES := -lm
@@ -18,6 +20,8 @@ BASE_CFLAGS := ${OPT} -Ivendor/tree-sitter/lib/include -Ivendor/mimalloc/include
1820BASE_LDFLAGS := ${OPT} ${LDFLAGS} ${LIBM_FLAGS}
1921
2022# mimalloc
23+
24+ # BASE_LDFLAGS += -lSynchronization
2125MI_PRIM_SRC := vendor/mimalloc/src/prim/unix/prim.c
2226
2327# object files and depends
@@ -31,8 +35,6 @@ MAIN_OBJS = ${MAIN_SRCS:%.c=build/obj/%.o}
3135
3236MAIN_DEPS = ${MAIN_SRCS:%.c=build/dep/%.dep}
3337
34- MAKE_INCLUDE ?=
35-
3638# tests
3739
3840TEST_SRCS := $(wildcard test/lua/* /* .lua)
@@ -53,18 +55,19 @@ clean: .dummy
5355 rm -rf build
5456
5557gcc-pgo : .dummy
56- $(MAKE ) -Bj minivm OPT=" -O3 -flto=auto - fgcse-sm -fgcse-las -fipa-pta -fdevirtualize-at-ltrans -fdevirtualize-speculatively -fno-exceptions -fomit-frame-pointer -fprofile-generate -DNDEBUG "
58+ $(MAKE ) -Bj minivm OPT=" $( OPT ) - fgcse-sm -fgcse-las -fipa-pta -fdevirtualize-at-ltrans -fdevirtualize-speculatively -fno-exceptions -fomit-frame-pointer -fprofile-generate"
5759 build/bin/minivm test/lua/fib/fib.lua
5860 build/bin/minivm test/lua/tables/trees.lua
5961 build/bin/minivm test/lua/closure/funcret.lua
60- $(MAKE ) -Bj minivm OPT=" -O3 -flto=auto - fgcse-sm -fgcse-las -fipa-pta -fdevirtualize-at-ltrans -fdevirtualize-speculatively -fno-exceptions -fomit-frame-pointer -fprofile-use -DNDEBUG "
62+ $(MAKE ) -Bj minivm OPT=" $( OPT ) - fgcse-sm -fgcse-las -fipa-pta -fdevirtualize-at-ltrans -fdevirtualize-speculatively -fno-exceptions -fomit-frame-pointer -fprofile-use"
6163
6264clang-pgo : .dummy
63- $(MAKE ) -Bj minivm OPT=" -O3 -flto=auto -fno-exceptions -fomit-frame-pointer - fprofile-generate -DNDEBUG "
65+ $(MAKE ) -Bj minivm OPT=" $( OPT ) -mllvm -polly -fno-exceptions -fprofile-instr-generate "
6466 build/bin/minivm test/lua/fib/fib.lua
6567 build/bin/minivm test/lua/tables/trees.lua
6668 build/bin/minivm test/lua/closure/funcret.lua
67- $(MAKE ) -Bj minivm OPT=" -O3 -flto=auto -fno-exceptions -fomit-frame-pointer -fprofile-use -DNDEBUG"
69+ $(LLVM_PROFDATA ) merge default.profraw -o default.profdata
70+ $(MAKE ) -Bj minivm OPT=" $( OPT) -mllvm -polly -fno-exceptions -fprofile-use"
6871
6972wasm : .dummy
7073 $(MAKE ) -Bj CC=emcc EXE=.wasm \
@@ -87,7 +90,7 @@ ${TEST_TXTS}: ${@:build/test/%.log=%.lua} minivm
8790${MAIN_OBJS} :
8891 @mkdir -p ${dir ${@ } }
8992 @mkdir -p ${dir ${@: build/ obj/% .o=build/ dep/% .dep} }
90- ${CC} ${@: build/ obj/% .o=% .c} -c -o ${@ } ${BASE_CFLAGS}
93+ ${CC} ${@: build/ obj/% .o=% .c} -c -o ${@ } ${BASE_CFLAGS}
9194 ${CC} ${@: build/ obj/% .o=% .c} -MM -MF ${@: build/ obj/% .o=build/ dep/% .dep} -MT ${@ } ${BASE_CFLAGS}
9295
9396include ${wildcard ${MAIN_DEPS}}
0 commit comments