From owner-p4-projects@FreeBSD.ORG Fri Aug 2 15:36:58 2013 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 211931AD; Fri, 2 Aug 2013 15:36:58 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id BC5FF1AB for ; Fri, 2 Aug 2013 15:36:57 +0000 (UTC) (envelope-from brooks@freebsd.org) Received: from skunkworks.freebsd.org (skunkworks.freebsd.org [8.8.178.74]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id A89842CC7 for ; Fri, 2 Aug 2013 15:36:57 +0000 (UTC) Received: from skunkworks.freebsd.org ([127.0.1.74]) by skunkworks.freebsd.org (8.14.7/8.14.7) with ESMTP id r72FavNq033459 for ; Fri, 2 Aug 2013 15:36:57 GMT (envelope-from brooks@freebsd.org) Received: (from perforce@localhost) by skunkworks.freebsd.org (8.14.7/8.14.6/Submit) id r72Favv2033456 for perforce@freebsd.org; Fri, 2 Aug 2013 15:36:57 GMT (envelope-from brooks@freebsd.org) Date: Fri, 2 Aug 2013 15:36:57 GMT Message-Id: <201308021536.r72Favv2033456@skunkworks.freebsd.org> X-Authentication-Warning: skunkworks.freebsd.org: perforce set sender to brooks@freebsd.org using -f From: Brooks Davis Subject: PERFORCE change 231644 for review To: Perforce Change Reviews Precedence: bulk X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.14 List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 02 Aug 2013 15:36:58 -0000 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