Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 2 Aug 2013 15:36:57 GMT
From:      Brooks Davis <brooks@FreeBSD.org>
To:        Perforce Change Reviews <perforce@FreeBSD.org>
Subject:   PERFORCE change 231644 for review
Message-ID:  <201308021536.r72Favv2033456@skunkworks.freebsd.org>

index | next in thread | raw e-mail

http://p4web.freebsd.org/@@231644?ac=10

Change 231644 by brooks@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


help

Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201308021536.r72Favv2033456>