svn commit: r274977 - in projects/clang350-import: share/mk sys/boot/i386/boot2

Dimitry Andric dim at FreeBSD.org
Mon Nov 24 20:01:07 UTC 2014


Author: dim
Date: Mon Nov 24 20:01:05 2014
New Revision: 274977
URL: https://svnweb.freebsd.org/changeset/base/274977

Log:
  Ensure boot2 stays below the limit, by applying a patch from Roman
  Divacky which shrinks the code, and by using the custom llvm option to
  disable the Global Value Numbering optimization pass.

Modified:
  projects/clang350-import/share/mk/bsd.sys.mk
  projects/clang350-import/sys/boot/i386/boot2/Makefile
  projects/clang350-import/sys/boot/i386/boot2/boot2.c

Modified: projects/clang350-import/share/mk/bsd.sys.mk
==============================================================================
--- projects/clang350-import/share/mk/bsd.sys.mk	Mon Nov 24 19:55:45 2014	(r274976)
+++ projects/clang350-import/share/mk/bsd.sys.mk	Mon Nov 24 20:01:05 2014	(r274977)
@@ -116,7 +116,7 @@ CWARNFLAGS+=	-Wno-unknown-pragmas
 CLANG_NO_IAS=	 -no-integrated-as
 .endif
 CLANG_OPT_SMALL= -mstack-alignment=8 -mllvm -inline-threshold=3\
-		 -mllvm -enable-load-pre=false -mllvm -simplifycfg-dup-ret
+		 -mllvm -simplifycfg-dup-ret -mllvm -enable-gvn=false
 CFLAGS.clang+=	 -Qunused-arguments
 .if ${MACHINE_CPUARCH} == "sparc64"
 # Don't emit .cfi directives, since we must use GNU as on sparc64, for now.

Modified: projects/clang350-import/sys/boot/i386/boot2/Makefile
==============================================================================
--- projects/clang350-import/sys/boot/i386/boot2/Makefile	Mon Nov 24 19:55:45 2014	(r274976)
+++ projects/clang350-import/sys/boot/i386/boot2/Makefile	Mon Nov 24 20:01:05 2014	(r274977)
@@ -22,8 +22,7 @@ BOOT2_UFS?=	UFS1_AND_UFS2
 #BOOT2_UFS?=	UFS2_ONLY
 #BOOT2_UFS?=	UFS1_ONLY
 
-CFLAGS=	-Os \
-	-fomit-frame-pointer \
+CFLAGS=	-fomit-frame-pointer \
 	-mrtd \
 	-mregparm=3 \
 	-DUSE_XREAD \
@@ -39,12 +38,13 @@ CFLAGS=	-Os \
 	-Wpointer-arith -Wshadow -Wstrict-prototypes -Wwrite-strings \
 	-Winline
 
-CFLAGS.gcc+=	-fno-guess-branch-probability \
+CFLAGS.gcc+=	-Os \
+		-fno-guess-branch-probability \
 		-fno-unit-at-a-time \
 		-mno-align-long-strings \
 		--param max-inline-insns-single=100
 
-CFLAGS.clang+=${CLANG_OPT_SMALL}
+CFLAGS.clang+=	-Oz ${CLANG_OPT_SMALL}
 
 LD_FLAGS=-static -N --gc-sections
 

Modified: projects/clang350-import/sys/boot/i386/boot2/boot2.c
==============================================================================
--- projects/clang350-import/sys/boot/i386/boot2/boot2.c	Mon Nov 24 19:55:45 2014	(r274976)
+++ projects/clang350-import/sys/boot/i386/boot2/boot2.c	Mon Nov 24 20:01:05 2014	(r274977)
@@ -323,7 +323,8 @@ load(void)
     caddr_t p;
     ufs_ino_t ino;
     uint32_t addr;
-    int i, j;
+    uint8_t i, j;
+    int k;
 
     if (!(ino = lookup(kname))) {
 	if (!ls)
@@ -344,7 +345,7 @@ load(void)
 	    return;
     } else if (IS_ELF(hdr.eh)) {
 	fs_off = hdr.eh.e_phoff;
-	for (j = i = 0; i < hdr.eh.e_phnum && j < 2; i++) {
+	for (j = k = 0; k < hdr.eh.e_phnum && j < 2; k++) {
 	    if (xfsread(ino, ep + j, sizeof(ep[0])))
 		return;
 	    if (ep[j].p_type == PT_LOAD)
@@ -393,7 +394,9 @@ parse()
     char *ep, *p, *q;
     const char *cp;
     unsigned int drv;
-    int c, i, j;
+    uint8_t i;
+    int c, j;
+    size_t k;
 
     while ((c = *arg++)) {
 	if (c == ' ' || c == '\t' || c == '\n')
@@ -416,7 +419,7 @@ parse()
 #if SERIAL
 		} else if (c == 'S') {
 		    j = 0;
-		    while ((unsigned int)(i = *arg++ - '0') <= 9)
+		    while ((i = *arg++ - '0') <= 9)
 			j = j * 10 + i;
 		    if (j > 0 && i == -'0') {
 			comspeed = j;
@@ -479,10 +482,10 @@ parse()
 			     ? DRV_HARD : 0) + drv;
 		dsk_meta = 0;
 	    }
-	    if ((i = ep - arg)) {
-		if ((size_t)i >= sizeof(knamebuf))
+	    if (k = ep - arg) {
+		if (k >= sizeof(knamebuf))
 		    return -1;
-		memcpy(knamebuf, arg, i + 1);
+		memcpy(knamebuf, arg, k + 1);
 		kname = knamebuf;
 	    }
 	}
@@ -605,8 +608,10 @@ drvread(void *buf, unsigned lba, unsigne
 {
     static unsigned c = 0x2d5c7c2f;
 
-    if (!OPT_CHECK(RBX_QUIET))
-	printf("%c\b", c = c << 8 | c >> 24);
+    if (!OPT_CHECK(RBX_QUIET)) {
+	xputc(c = c << 8 | c >> 24);
+	xputc('\b');
+    }
     v86.ctl = V86_ADDR | V86_CALLF | V86_FLAGS;
     v86.addr = XREADORG;		/* call to xread in boot1 */
     v86.es = VTOPSEG(buf);


More information about the svn-src-projects mailing list