[sr-dev] git:master: makefile: use -fno_strict-overflow on gcc 4.2+

Andrei Pelinescu-Onciul andrei at iptel.org
Tue Sep 29 19:04:05 CEST 2009


Module: sip-router
Branch: master
Commit: 9558980b9087ce3ff227941d33e7e5224568226e
URL:    http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=9558980b9087ce3ff227941d33e7e5224568226e

Author: Andrei Pelinescu-Onciul <andrei at iptel.org>
Committer: Andrei Pelinescu-Onciul <andrei at iptel.org>
Date:   Tue Sep 29 18:38:32 2009 +0200

makefile: use -fno_strict-overflow on gcc 4.2+

For gcc versions >= 4.2, use the -fno_strict_overflow compile
option. This is needed to avoid gcc optimizations that assume
signed overflow is undefined and does not wrap around (some parts
of the code assume using two complement arithmetic and
-fstrict-overflow might break them).

---

 Makefile.defs |  102 ++++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 98 insertions(+), 4 deletions(-)

diff --git a/Makefile.defs b/Makefile.defs
index f262f43..e46aa03 100644
--- a/Makefile.defs
+++ b/Makefile.defs
@@ -69,6 +69,7 @@
 #  2009-03-10  replaced DEFS with C_DEFS and INCLUDES with C_INCLUDES (DEFS
 #              and INCLUDES are now used only for "temporary" defines/includes
 #              inside modules or libs) (andrei)
+#  2009-09-20  for gcc 4.2+ use -fno-strict-overflow (andrei)
 
 
 # check if already included/exported
@@ -305,8 +306,9 @@ ifneq (,$(findstring gcc, $(CC_LONGVER)))
 				 sed -e 's/[^0-9]*-\(.*\)/\1/'| \
 				 sed -e 's/2\.9.*/2.9x/' -e 's/3\.[0-3]\..*/3.0/' -e \
 				 	's/3\.[0-3]/3.0/' -e 's/3\.[4-9]\..*/3.4/' -e \
-					's/3\.[4-9]/3.4/' -e 's/4\.[0-9]\..*/4.x/' -e \
-					's/4\.[0-9]/4.x/' )
+					's/3\.[4-9]/3.4/' -e 's/4\.[0-1]\..*/4.x/' -e \
+					's/4\.[0-1]/4.x/' -e 's/4\.[2-9]\..*/4.2+/' -e \
+					's/4\.[2-9]$$/4.2+/')
 endif
 
 ifneq (, $(findstring Sun, $(CC_LONGVER)))
@@ -670,6 +672,15 @@ ifeq		($(CC_NAME), gcc)
 				C_DEFS+=-DCC_GCC_LIKE_ASM
 				#common stuff
 				CFLAGS=-g -O9 -funroll-loops  -Wcast-align $(PROFILE)
+			#if gcc 4.2+
+ifeq			($(CC_SHORTVER), 4.2+)
+					CPU ?= athlon64
+					CFLAGS+=-minline-all-stringops \
+							-falign-loops \
+							-ftree-vectorize \
+							-fno-strict-overflow \
+							-mtune=$(CPU)
+else
 			#if gcc 4.0+
 ifeq			($(CC_SHORTVER), 4.x)
 					CPU ?= athlon64
@@ -707,6 +718,7 @@ endif			# CC_SHORTVER, 2.9x
 endif			# CC_SHORTVER, 3.0
 endif			# CC_SHORTVER, 3.4
 endif			# CC_SHORTVER, 4.x
+endif			# CC_SHORTVER, 4.2+
 
 else		# CC_NAME, gcc
 ifeq		($(CC_NAME), icc)
@@ -732,6 +744,15 @@ ifeq		($(CC_NAME), gcc)
 				#common stuff
 				CFLAGS=-m64 -g -O9 -funroll-loops  -Wcast-align $(PROFILE)
 				LDFLAGS+=-m64
+			#if gcc 4.2+
+ifeq			($(CC_SHORTVER), 4.2+)
+					CPU ?= opteron
+					CFLAGS+=-minline-all-stringops \
+							-falign-loops \
+							-ftree-vectorize \
+							-fno-strict-overflow \
+							-mtune=$(CPU)
+else
 			#if gcc 4.0+
 ifeq			($(CC_SHORTVER), 4.x)
 					CPU ?= opteron
@@ -769,6 +790,7 @@ endif			# CC_SHORTVER, 2.9x
 endif			# CC_SHORTVER, 3.0
 endif			# CC_SHORTVER, 3.4
 endif			# CC_SHORTVER, 4.x
+endif			# CC_SHORTVER, 4.2+
 
 else		# CC_NAME, gcc
 ifeq		($(CC_NAME), icc)
@@ -800,6 +822,15 @@ ifeq		($(CC_NAME), gcc)
 				# -m32 for 32 bit (default on solaris),
 				# nothing for arch. default
 				LDFLAGS+=-m64
+				#if gcc 4.2+
+ifeq			($(CC_SHORTVER), 4.2+)
+					CPU ?= ultrasparc
+					#use 32bit for now
+					CFLAGS+=-mcpu=ultrasparc  \
+							-mtune=$(CPU) \
+							-fno-strict-overflow \
+							-ftree-vectorize
+else
 				#if gcc 4.x
 ifeq			($(CC_SHORTVER), 4.x)
 					CPU ?= ultrasparc
@@ -849,6 +880,7 @@ endif			#CC_SHORTVER, 2.9x
 endif			#CC_SHORTVER, 3.0
 endif			#CC_SHORTVER, 3.4
 endif			#CC_SHORTVER, 4.x
+endif			#CC_SHORTVER, 4.2+
 	
 else		#CC_NAME, gcc
 ifeq		($(CC_NAME), suncc)
@@ -872,6 +904,15 @@ ifeq		($(CC_NAME), gcc)
 				CFLAGS=-g -O9 -funroll-loops  $(PROFILE) \
 					#-Wcast-align \
 					#-Wmissing-prototypes 
+				#if gcc 4.2+
+ifeq			($(CC_SHORTVER), 4.2+)
+					CPU ?= v8 
+					#use 32bit for now
+					CFLAGS+= -minline-all-stringops \
+							-mtune=$(CPU) \
+							-fno-strict-overflow \
+							-ftree-vectorize
+else
 				#if gcc 4.x
 ifeq			($(CC_SHORTVER), 4.x)
 					CPU ?= v8 
@@ -907,6 +948,7 @@ endif			#CC_SHORTVER, 2.9x
 endif			#CC_SHORTVER, 3.0
 endif			#CC_SHORTVER, 3.4
 endif			#CC_SHORTVER, 4.x
+endif			#CC_SHORTVER, 4.2+
 	
 else		#CC_NAME, gcc
 ifeq		($(CC_NAME), suncc)
@@ -927,6 +969,11 @@ ifeq		($(CC_NAME), gcc)
 				C_DEFS+=-DCC_GCC_LIKE_ASM
 				#common stuff
 				CFLAGS=-O9 -funroll-loops $(PROFILE)
+			#if gcc 4.2+
+ifeq			($(CC_SHORTVER), 4.2+)
+					CFLAGS+= -ftree-vectorize -fno-strict-overflow
+					# not supported on arm: -minline-all-stringops 
+else
 			#if gcc 4.x+
 ifeq			($(CC_SHORTVER), 4.x)
 					CFLAGS+= -ftree-vectorize
@@ -954,7 +1001,8 @@ $(warning			You are using an old and unsupported gcc \
 endif			# CC_SHORTVER, 2.9x
 endif			# CC_SHORTVER, 3.0
 endif			# CC_SHORTVER, 3.4
-endif			# CC_SHORTVER, 4.0
+endif			# CC_SHORTVER, 4.x
+endif			# CC_SHORTVER, 4.2+
 	
 else		# CC_NAME, gcc
 				#other compilers
@@ -970,6 +1018,10 @@ ifeq		($(CC_NAME), gcc)
 				#common stuff
 				CFLAGS=-march=armv6 -O9 -funroll-loops \
 						$(PROFILE)
+			#if gcc 4.2+
+ifeq			($(CC_SHORTVER), 4.2+)
+					CFLAGS+= -ftree-vectorize -fno-strict-overflow
+else
 			#if gcc 4.x+
 ifeq			($(CC_SHORTVER), 4.x)
 					CFLAGS+= -ftree-vectorize
@@ -996,7 +1048,8 @@ $(warning			You are using an old and unsupported gcc \
 endif			# CC_SHORTVER, 2.9x
 endif			# CC_SHORTVER, 3.0
 endif			# CC_SHORTVER, 3.4
-endif			# CC_SHORTVER, 4.0
+endif			# CC_SHORTVER, 4.x
+endif			# CC_SHORTVER, 4.2+
 	
 else		# CC_NAME, gcc
 				#other compilers
@@ -1011,6 +1064,11 @@ ifeq		($(CC_NAME), gcc)
 				C_DEFS+=-DCC_GCC_LIKE_ASM
 				#common stuff
 				CFLAGS=-O9 -funroll-loops  $(PROFILE)
+			#if gcc 4.2+
+ifeq			($(CC_SHORTVER), 4.2+)
+					CFLAGS+=-march=r3000 -minline-all-stringops \
+							-ftree-vectorize -fno-strict-overflow
+else
 			#if gcc 4.0+
 ifeq			($(CC_SHORTVER), 4.x)
 					CFLAGS+=-march=r3000 -minline-all-stringops \
@@ -1038,6 +1096,7 @@ endif			# CC_SHORTVER, 2.9x
 endif			# CC_SHORTVER, 3.0
 endif			# CC_SHORTVER, 3.4
 endif			# CC_SHORTVER, 4.x
+endif			# CC_SHORTVER, 4.2+
 	
 else		# CC_NAME, gcc
 				#other compilers
@@ -1052,6 +1111,11 @@ ifeq		($(CC_NAME), gcc)
 				C_DEFS+=-DCC_GCC_LIKE_ASM
 				#common stuff
 				CFLAGS= -mips2 -O9 -funroll-loops $(PROFILE)
+			#if gcc 4.2+
+ifeq			($(CC_SHORTVER), 4.2+)
+					CFLAGS+=-minline-all-stringops -ftree-vectorize \
+							-fno-strict-overflow
+else
 			#if gcc 4.0+
 ifeq			($(CC_SHORTVER), 4.x)
 					CFLAGS+=-minline-all-stringops -ftree-vectorize
@@ -1077,6 +1141,7 @@ endif			# CC_SHORTVER, 2.9x
 endif			# CC_SHORTVER, 3.0
 endif			# CC_SHORTVER, 3.4
 endif			# CC_SHORTVER, 4.x
+endif			# CC_SHORTVER, 4.2+
 	
 else		# CC_NAME, gcc
 				#other compilers
@@ -1091,6 +1156,11 @@ ifeq		($(CC_NAME), gcc)
 				C_DEFS+=-DCC_GCC_LIKE_ASM
 				#common stuff
 				CFLAGS= -mips64 -O9 -funroll-loops $(PROFILE)
+			#if gcc 4.2+
+ifeq			($(CC_SHORTVER), 4.2+)
+					CFLAGS+=-minline-all-stringops -ftree-vectorize \
+							-fno-strict-overflow
+else
 			#if gcc 4.0+
 ifeq			($(CC_SHORTVER), 4.x)
 					CFLAGS+=-minline-all-stringops -ftree-vectorize
@@ -1116,6 +1186,7 @@ endif			# CC_SHORTVER, 2.9x
 endif			# CC_SHORTVER, 3.0
 endif			# CC_SHORTVER, 3.4
 endif			# CC_SHORTVER, 4.x
+endif			# CC_SHORTVER, 4.2+
 	
 else		# CC_NAME, gcc
 				#other compilers
@@ -1130,6 +1201,11 @@ ifeq		($(CC_NAME), gcc)
 				C_DEFS+=-DCC_GCC_LIKE_ASM
 				#common stuff
 				CFLAGS= -O9 -funroll-loops $(PROFILE)
+			#if gcc 4.2+
+ifeq			($(CC_SHORTVER), 4.2+)
+					CFLAGS+= -fno-strict-overflow
+					# not supported: -minline-all-stringops
+else
 			#if gcc 4.0+
 ifeq			($(CC_SHORTVER), 4.x)
 					CFLAGS+= 
@@ -1156,6 +1232,7 @@ endif			# CC_SHORTVER, 2.9x
 endif			# CC_SHORTVER, 3.0
 endif			# CC_SHORTVER, 3.4
 endif			# CC_SHORTVER, 4.x
+endif			# CC_SHORTVER, 4.2+
 	
 else		# CC_NAME, gcc
 				#other compilers
@@ -1170,6 +1247,13 @@ ifeq		($(CC_NAME), gcc)
 				C_DEFS+=-DCC_GCC_LIKE_ASM
 				#common stuff
 				CFLAGS= -O9 -funroll-loops $(PROFILE)
+			#if gcc 4.2+
+ifeq			($(CC_SHORTVER), 4.2+)
+					CPU ?= powerpc
+					CFLAGS+=-ftree-vectorize \
+							-fno-strict-overflow \
+							-mtune=$(CPU) -maltivec
+else
 			#if gcc 4.0+
 ifeq			($(CC_SHORTVER), 4.x)
 					CPU ?= powerpc
@@ -1197,6 +1281,7 @@ endif			# CC_SHORTVER, 2.9x
 endif			# CC_SHORTVER, 3.0
 endif			# CC_SHORTVER, 3.4
 endif			# CC_SHORTVER, 4.x
+endif			# CC_SHORTVER, 4.2+
 	
 else		# CC_NAME, gcc
 				#other compilers
@@ -1211,6 +1296,14 @@ ifeq		($(CC_NAME), gcc)
 				C_DEFS+=-DCC_GCC_LIKE_ASM
 				#common stuff
 				CFLAGS= -O9 -funroll-loops $(PROFILE)
+			#if gcc 4.2+
+ifeq			($(CC_SHORTVER), 4.2+)
+					CPU ?= powerpc64
+					CFLAGS+=-ftree-vectorize \
+							-fno-strict-overflow \
+							-mtune=$(CPU) -maltivec
+else
+			#if gcc 4.0+
 ifeq			($(CC_SHORTVER), 4.x)
 					CPU ?= powerpc64
 					CFLAGS+=-ftree-vectorize \
@@ -1237,6 +1330,7 @@ endif			# CC_SHORTVER, 2.9x
 endif			# CC_SHORTVER, 3.0
 endif			# CC_SHORTVER, 3.4
 endif			# CC_SHORTVER, 4.x
+endif			# CC_SHORTVER, 4.2+
 	
 else		# CC_NAME, gcc
 				#other compilers




More information about the sr-dev mailing list