PERFORCE change 231644 for review
Brooks Davis
brooks at FreeBSD.org
Fri Aug 2 15:36:58 UTC 2013
http://p4web.freebsd.org/@@231644?ac=10
Change 231644 by brooks at brooks_zenith on 2013/08/02 15:36:25
Add the ability to do TESLA (and TESLA-style) llvm
instrumentaton using bitcode files in addition to LLVM IR files.
Default to using bitcode files as it is signficantly faster
(no-op instrumentation is faster than traditional compilation).
Affected files ...
.. //depot/projects/ctsrd/tesla/src/share/mk/bsd.own.mk#8 edit
.. //depot/projects/ctsrd/tesla/src/share/mk/sys.mk#13 edit
.. //depot/projects/ctsrd/tesla/src/sys/conf/kern.post.mk#5 edit
.. //depot/projects/ctsrd/tesla/src/sys/conf/kern.pre.mk#7 edit
Differences ...
==== //depot/projects/ctsrd/tesla/src/share/mk/bsd.own.mk#8 (text+ko) ====
@@ -646,8 +646,15 @@
.endif
.else
LLVM_INSTR_DEP= tesla.manifest
+.if ${LLVM_IR_TYPE} == "bc"
+LLVM_INSTR_COMMAND= ${TESLA} instrument -verify-each -tesla-manifest \
+ tesla.manifest ${.IMPSRC} -o ${.TARGET}
+.elif ${LLVM_IR_TYPE} == "ll"
LLVM_INSTR_COMMAND= ${TESLA} instrument -S -verify-each -tesla-manifest \
tesla.manifest ${.IMPSRC} -o ${.TARGET}
+.else
+.error unknown LLVM IR type ${LLVM_IR_TYPE}
+.endif
.if defined(WITHOUT_LLVM_INSTRUMENTED)
.error WITHOUT_LLVM_INSTRUMENTED and WITH_TESLA can't both be set.
.else
==== //depot/projects/ctsrd/tesla/src/share/mk/sys.mk#13 (text+ko) ====
@@ -32,7 +32,7 @@
.if defined(%POSIX)
.SUFFIXES: .o .c .y .l .a .sh .f
.else
-.SUFFIXES: .out .a .dot .instrll .instro .oll .ln .manifest .o .c .cc .cpp .cxx .C .m .F .f .e .r .tesla .y .l .S .asm .s .cl .p .h .sh
+.SUFFIXES: .out .a .dot .instrbc .instrll .instro .obc .oll .ln .manifest .o .c .cc .cpp .cxx .C .m .F .f .e .r .tesla .y .l .S .asm .s .cl .p .h .sh
.endif
AR ?= ar
@@ -128,6 +128,8 @@
LLC ?= llc
LLCFLAGS ?= ${CFLAGS:M-O*:S/^-O$/-O1/:S/-O/-O=/}
+LLVM_IR_TYPE ?= bc
+
LLVM_LINK ?= llvm-link
MAKE ?= make
@@ -231,6 +233,9 @@
cp -fp ${.IMPSRC} ${.TARGET}
chmod a+x ${.TARGET}
+.c.obc:
+ ${CC} ${CFLAGS:N-O*} -emit-llvm -c ${.IMPSRC} -o ${.TARGET}
+
.c.oll:
${CC} ${CFLAGS:N-O*} -emit-llvm -S ${.IMPSRC} -o ${.TARGET}
@@ -274,13 +279,24 @@
.e.o .r.o .F.o .f.o:
${FC} ${RFLAGS} ${EFLAGS} ${FFLAGS} -c ${.IMPSRC}
+.if ${LLVM_IR_TYPE} == "bc"
+.instrbc.instro:
+ ${LLC} -filetype=obj ${LLCFLAGS} ${.IMPSRC} -o ${.TARGET}
+ ${CTFCONVERT_CMD}
+.elif ${LLVM_IR_TYPE} == "ll"
.instrll.instro:
${LLC} -filetype=obj ${LLCFLAGS} ${.IMPSRC} -o ${.TARGET}
${CTFCONVERT_CMD}
+.else
+.error Unknown LLVM IR type ${LLVM_IR_TYPE}
+.endif
.manifest.dot:
${TESLA} graph ${.IMPSRC} -o ${.TARGET}
+.obc.instrbc: tesla.manifest
+ ${LLVM_INSTR_COMMAND}
+
.oll.instrll: tesla.manifest
${LLVM_INSTR_COMMAND}
==== //depot/projects/ctsrd/tesla/src/sys/conf/kern.post.mk#5 (text+ko) ====
@@ -157,7 +157,7 @@
linterrs tags vers.c \
vnode_if.c vnode_if.h vnode_if_newproto.h vnode_if_typedef.h \
${MFILES:T:S/.m$/.c/} ${MFILES:T:S/.m$/.h/} \
- ${TESLA_FILES} ${OLLS} ${INSTRLLS} ${INSTROBJS} \
+ ${TESLA_FILES} ${OIRS} ${INSTR_IRS} ${INSTR_OBJS} \
tesla.manifest \
${CLEAN}
==== //depot/projects/ctsrd/tesla/src/sys/conf/kern.pre.mk#7 (text+ko) ====
@@ -176,9 +176,9 @@
# XXX: should probably include GEN_CFILES, but may be tricky
LLVM_CFILES= ${CFILES} ${SYSTEM_CFILES}
TESLA_FILES= ${LLVM_CFILES:T:.c=.tesla}
-OLLS= ${LLVM_CFILES:T:.c=.oll}
-INSTRLLS= ${LLVM_CFILES:T:.c=.instrll}
-INSTROBJS= ${LLVM_CFILES:T:.c=.instro}
+OIRS= ${LLVM_CFILES:T:.c=.o${LLVM_IR_TYPE}}
+INSTR_IRS= ${LLVM_CFILES:T:.c=.instr${LLVM_IR_TYPE}}
+INSTR_OBJS= ${LLVM_CFILES:T:.c=.instro}
SYSTEM_OBJS+= ${LLVM_CFILES:T:.c=.instro} ${NOT_C_OBJS}
.endif
SYSTEM_OBJS+= hack.So
More information about the p4-projects
mailing list