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.Sohelp
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201308021536.r72Favv2033456>
