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