summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoshua Haberman <joshua@reverberate.org>2011-02-27 14:30:32 -0800
committerJoshua Haberman <joshua@reverberate.org>2011-02-27 14:30:32 -0800
commit20b2a6bd0d94b987bda9e32f4da1cb00a4bcd00f (patch)
tree5e3e2f40716a7f723447ca58bfc06517edb93876
parent6942911f03ef638f0c5558c7610fae820df8658e (diff)
Default to -O3 if user doesn't specify opt.
However if the user *does* specify a -O flag, don't override the optimization setting for upb_def.o to -Os like we usually do.
-rw-r--r--Makefile11
-rwxr-xr-xperf-regression-test.py2
-rwxr-xr-xperf-tests.sh8
-rw-r--r--src/upb_def.c2
4 files changed, 15 insertions, 8 deletions
diff --git a/Makefile b/Makefile
index 68c56b6..2c85d57 100644
--- a/Makefile
+++ b/Makefile
@@ -27,6 +27,13 @@ all: lib
# User-specified CFLAGS.
USER_CFLAGS=$(strip $(shell test -f perf-cppflags && cat perf-cppflags))
+# If the user doesn't specify an -O setting, we default to -O3, except
+# for upb_def which gets -Os.
+ifeq (, $(findstring -O, $(USER_CFLAGS)))
+ USER_CFLAGS += -O3
+ DEF_OPT = -Os
+endif
+
# Basic compiler/flag setup.
CC=gcc
CXX=g++
@@ -146,11 +153,11 @@ $(LIBUPB_PIC): $(PICOBJ)
# critical path but gets very large when -O3 is used.
src/upb_def.o: src/upb_def.c
$(E) CC $<
- $(Q) $(CC) $(CFLAGS) $(CPPFLAGS) -O0 -c -o $@ $<
+ $(Q) $(CC) $(CFLAGS) $(CPPFLAGS) $(DEF_OPT) -c -o $@ $<
src/upb_def.lo: src/upb_def.c
$(E) 'CC -fPIC' $<
- $(Q) $(CC) $(CFLAGS) $(CPPFLAGS) -O0 -c -o $@ $< -fPIC
+ $(Q) $(CC) $(CFLAGS) $(CPPFLAGS) $(DEF_OPT) -c -o $@ $< -fPIC
src/upb_decoder_x64.o: src/upb_decoder_x64.asm
$(E) NASM $<
diff --git a/perf-regression-test.py b/perf-regression-test.py
index ae3259c..09f4569 100755
--- a/perf-regression-test.py
+++ b/perf-regression-test.py
@@ -10,7 +10,7 @@ set -v
# Generate numbers for baseline.
rm -rf perf-tmp
git clone . perf-tmp
-(cd perf-tmp && ../perf-tests.sh upb)
+(cd perf-tmp && ./perf-tests.sh upb)
cp perf-tmp/perf-tests.out perf-tests.baseline
# Generate numbers for working directory.
diff --git a/perf-tests.sh b/perf-tests.sh
index bfa8bd6..003f866 100755
--- a/perf-tests.sh
+++ b/perf-tests.sh
@@ -13,22 +13,22 @@ rm -f perf-tests.out
if [ x`uname -m` = xx86_64 ]; then
make clean
- echo "-O3 -DNDEBUG -msse3 -m32" > perf-cppflags
+ echo "-DNDEBUG -m32" > perf-cppflags
make upb_benchmarks
make benchmark | sed -e 's/^/plain32./g' | tee -a perf-tests.out
make clean
- echo "-O3 -DNDEBUG -fomit-frame-pointer -msse3 -m32" > perf-cppflags
+ echo "-DNDEBUG -fomit-frame-pointer -m32" > perf-cppflags
make upb_benchmarks
make benchmark | sed -e 's/^/omitfp32./g' | tee -a perf-tests.out
fi
make clean
-echo "-O3 -DNDEBUG -msse3" > perf-cppflags
+echo "-DNDEBUG" > perf-cppflags
make $MAKETARGET
make benchmark | sed -e 's/^/plain./g' | tee -a perf-tests.out
make clean
-echo "-O3 -DNDEBUG -fomit-frame-pointer -msse3" > perf-cppflags
+echo "-DNDEBUG -fomit-frame-pointer" > perf-cppflags
make $MAKETARGET
make benchmark | sed -e 's/^/omitfp./g' | tee -a perf-tests.out
diff --git a/src/upb_def.c b/src/upb_def.c
index 3b21443..61d1a3e 100644
--- a/src/upb_def.c
+++ b/src/upb_def.c
@@ -728,7 +728,7 @@ static bool upb_fielddef_setdefault(upb_string *dstr, upb_value *d, int type) {
case UPB_TYPE(UINT32):
case UPB_TYPE(FIXED32):
if (strz) {
- long val = strtoul(strz, &end, 0);
+ unsigned long val = strtoul(strz, &end, 0);
if (val > UINT32_MAX || errno == ERANGE || *end)
success = false;
else
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback