SOURCES: quake3-strict-aliasing.patch (NEW) - http://bugzilla.icculus.org/s...

sparky sparky at pld-linux.org
Fri Oct 24 17:58:44 CEST 2008


Author: sparky                       Date: Fri Oct 24 15:58:44 2008 GMT
Module: SOURCES                       Tag: HEAD
---- Log message:
- http://bugzilla.icculus.org/show_bug.cgi?id=3805

---- Files affected:
SOURCES:
   quake3-strict-aliasing.patch (NONE -> 1.1)  (NEW)

---- Diffs:

================================================================
Index: SOURCES/quake3-strict-aliasing.patch
diff -u /dev/null SOURCES/quake3-strict-aliasing.patch:1.1
--- /dev/null	Fri Oct 24 17:58:45 2008
+++ SOURCES/quake3-strict-aliasing.patch	Fri Oct 24 17:58:39 2008
@@ -0,0 +1,317 @@
+Index: code/qcommon/msg.c
+===================================================================
+--- code/qcommon/msg.c	(revision 1474)
++++ code/qcommon/msg.c	(working copy)
+@@ -546,6 +546,11 @@
+ 
+ #define	LOG(x) if( cl_shownet->integer == 4 ) { Com_Printf("%s ", x ); };
+ 
++typedef union {
++	float f;
++	int i;
++} fi_conv;
++
+ void MSG_WriteDelta( msg_t *msg, int oldV, int newV, int bits ) {
+ 	if ( oldV == newV ) {
+ 		MSG_WriteBits( msg, 0, 1 );
+@@ -563,20 +568,22 @@
+ }
+ 
+ void MSG_WriteDeltaFloat( msg_t *msg, float oldV, float newV ) {
++	fi_conv fi;
+ 	if ( oldV == newV ) {
+ 		MSG_WriteBits( msg, 0, 1 );
+ 		return;
+ 	}
++	fi.f = newV;
+ 	MSG_WriteBits( msg, 1, 1 );
+-	MSG_WriteBits( msg, *(int *)&newV, 32 );
++	MSG_WriteBits( msg, fi.i, 32 );
+ }
+ 
+ float MSG_ReadDeltaFloat( msg_t *msg, float oldV ) {
+ 	if ( MSG_ReadBits( msg, 1 ) ) {
+-		float	newV;
++		fi_conv fi;
+ 
+-		*(int *)&newV = MSG_ReadBits( msg, 32 );
+-		return newV;
++		fi.i = MSG_ReadBits( msg, 32 );
++		return fi.f;
+ 	}
+ 	return oldV;
+ }
+@@ -617,20 +624,22 @@
+ }
+ 
+ void MSG_WriteDeltaKeyFloat( msg_t *msg, int key, float oldV, float newV ) {
++	fi_conv fi;
+ 	if ( oldV == newV ) {
+ 		MSG_WriteBits( msg, 0, 1 );
+ 		return;
+ 	}
++	fi.f = newV;
+ 	MSG_WriteBits( msg, 1, 1 );
+-	MSG_WriteBits( msg, (*(int *)&newV) ^ key, 32 );
++	MSG_WriteBits( msg, fi.i ^ key, 32 );
+ }
+ 
+ float MSG_ReadDeltaKeyFloat( msg_t *msg, int key, float oldV ) {
+ 	if ( MSG_ReadBits( msg, 1 ) ) {
+-		float	newV;
++		fi_conv fi;
+ 
+-		*(int *)&newV = MSG_ReadBits( msg, 32 ) ^ key;
+-		return newV;
++		fi.i = MSG_ReadBits( msg, 32 ) ^ key;
++		return fi.f;
+ 	}
+ 	return oldV;
+ }
+Index: code/game/g_syscalls.c
+===================================================================
+--- code/game/g_syscalls.c	(revision 1474)
++++ code/game/g_syscalls.c	(working copy)
+@@ -35,10 +35,15 @@
+ 	syscall = syscallptr;
+ }
+ 
++typedef union {
++	float f;
++	int i;
++} fi_conv;
++
+ int PASSFLOAT( float x ) {
+-	float	floatTemp;
+-	floatTemp = x;
+-	return *(int *)&floatTemp;
++	fi_conv fi;
++	fi.f = x;
++	return fi.i;
+ }
+ 
+ void	trap_Printf( const char *fmt ) {
+@@ -290,9 +295,9 @@
+ }
+ 
+ float trap_AAS_Time(void) {
+-	int temp;
+-	temp = syscall( BOTLIB_AAS_TIME );
+-	return (*(float*)&temp);
++	fi_conv fi;
++	fi.i = syscall( BOTLIB_AAS_TIME );
++	return fi.f;
+ }
+ 
+ int trap_AAS_PointAreaNum(vec3_t point) {
+@@ -476,15 +481,15 @@
+ }
+ 
+ float trap_Characteristic_Float(int character, int index) {
+-	int temp;
+-	temp = syscall( BOTLIB_AI_CHARACTERISTIC_FLOAT, character, index );
+-	return (*(float*)&temp);
++	fi_conv fi;
++	fi.i = syscall( BOTLIB_AI_CHARACTERISTIC_FLOAT, character, index );
++	return fi.f;
+ }
+ 
+ float trap_Characteristic_BFloat(int character, int index, float min, float max) {
+-	int temp;
+-	temp = syscall( BOTLIB_AI_CHARACTERISTIC_BFLOAT, character, index, PASSFLOAT(min), PASSFLOAT(max) );
+-	return (*(float*)&temp);
++	fi_conv fi;
++	fi.i = syscall( BOTLIB_AI_CHARACTERISTIC_BFLOAT, character, index, PASSFLOAT(min), PASSFLOAT(max) );
++	return fi.f;
+ }
+ 
+ int trap_Characteristic_Integer(int character, int index) {
+@@ -652,9 +657,9 @@
+ }
+ 
+ float trap_BotAvoidGoalTime(int goalstate, int number) {
+-	int temp;
+-	temp = syscall( BOTLIB_AI_AVOID_GOAL_TIME, goalstate, number );
+-	return (*(float*)&temp);
++	fi_conv fi;
++	fi.i = syscall( BOTLIB_AI_AVOID_GOAL_TIME, goalstate, number );
++	return fi.f;
+ }
+ 
+ void trap_BotSetAvoidGoalTime(int goalstate, int number, float avoidtime) {
+Index: code/cgame/cg_syscalls.c
+===================================================================
+--- code/cgame/cg_syscalls.c	(revision 1474)
++++ code/cgame/cg_syscalls.c	(working copy)
+@@ -37,9 +37,12 @@
+ 
+ 
+ int PASSFLOAT( float x ) {
+-	float	floatTemp;
+-	floatTemp = x;
+-	return *(int *)&floatTemp;
++	union {
++		float f;
++		int i;
++	} fi;
++	fi.f = x;
++	return fi.i;
+ }
+ 
+ void	trap_Print( const char *fmt ) {
+Index: code/ui/ui_syscalls.c
+===================================================================
+--- code/ui/ui_syscalls.c	(revision 1474)
++++ code/ui/ui_syscalls.c	(working copy)
+@@ -34,10 +34,15 @@
+ 	syscall = syscallptr;
+ }
+ 
++typedef union {
++	float f;
++	int i;
++} fi_conv;
++
+ int PASSFLOAT( float x ) {
+-	float	floatTemp;
+-	floatTemp = x;
+-	return *(int *)&floatTemp;
++	fi_conv fi;
++	fi.f = x;
++	return fi.i;
+ }
+ 
+ void trap_Print( const char *string ) {
+@@ -65,9 +70,9 @@
+ }
+ 
+ float trap_Cvar_VariableValue( const char *var_name ) {
+-	int temp;
+-	temp = syscall( UI_CVAR_VARIABLEVALUE, var_name );
+-	return (*(float*)&temp);
++	fi_conv fi;
++	fi.i = syscall( UI_CVAR_VARIABLEVALUE, var_name );
++	return fi.f;
+ }
+ 
+ void trap_Cvar_VariableStringBuffer( const char *var_name, char *buffer, int bufsize ) {
+Index: code/client/cl_cgame.c
+===================================================================
+--- code/client/cl_cgame.c	(revision 1474)
++++ code/client/cl_cgame.c	(working copy)
+@@ -400,11 +400,13 @@
+ }
+ 
+ static int	FloatAsInt( float f ) {
+-	int		temp;
++	union {
++		float f;
++		int i;
++	} fi;
+ 
+-	*(float *)&temp = f;
+-
+-	return temp;
++	fi.f = f;
++	return fi.i;
+ }
+ 
+ /*
+Index: code/client/cl_ui.c
+===================================================================
+--- code/client/cl_ui.c	(revision 1474)
++++ code/client/cl_ui.c	(working copy)
+@@ -691,11 +691,13 @@
+ ====================
+ */
+ static int FloatAsInt( float f ) {
+-	int		temp;
++	union {
++		float f;
++		int i;
++	} fi;
+ 
+-	*(float *)&temp = f;
+-
+-	return temp;
++	fi.f = f;
++	return fi.i;
+ }
+ 
+ /*
+Index: Makefile
+===================================================================
+--- Makefile	(revision 1474)
++++ Makefile	(working copy)
+@@ -234,7 +234,7 @@
+   endif
+   endif
+ 
+-  BASE_CFLAGS = -Wall -fno-strict-aliasing -Wimplicit -Wstrict-prototypes \
++  BASE_CFLAGS = -Wall -Wstrict-aliasing -Wimplicit -Wstrict-prototypes \
+     -pipe -DUSE_ICON $(shell sdl-config --cflags)
+ 
+   ifeq ($(USE_OPENAL),1)
+@@ -352,7 +352,7 @@
+     BASE_CFLAGS += -mstackrealign
+   endif
+ 
+-  BASE_CFLAGS += -fno-strict-aliasing -DMACOS_X -fno-common -pipe
++  BASE_CFLAGS += -Wstrict-aliasing -DMACOS_X -fno-common -pipe
+ 
+   ifeq ($(USE_OPENAL),1)
+     BASE_CFLAGS += -DUSE_OPENAL
+@@ -423,7 +423,7 @@
+ 
+   ARCH=x86
+ 
+-  BASE_CFLAGS = -Wall -fno-strict-aliasing -Wimplicit -Wstrict-prototypes \
++  BASE_CFLAGS = -Wall -Wstrict-aliasing -Wimplicit -Wstrict-prototypes \
+     -DUSE_ICON
+ 
+   # In the absence of wspiapi.h, require Windows XP or later
+@@ -516,7 +516,7 @@
+   endif #alpha test
+ 
+ 
+-  BASE_CFLAGS = -Wall -fno-strict-aliasing -Wimplicit -Wstrict-prototypes \
++  BASE_CFLAGS = -Wall -Wstrict-aliasing -Wimplicit -Wstrict-prototypes \
+     -DUSE_ICON $(shell sdl-config --cflags)
+ 
+   ifeq ($(USE_OPENAL),1)
+@@ -582,7 +582,7 @@
+   ARCH=i386
+ 
+ 
+-  BASE_CFLAGS = -Wall -fno-strict-aliasing -Wimplicit -Wstrict-prototypes \
++  BASE_CFLAGS = -Wall -Wstrict-aliasing -Wimplicit -Wstrict-prototypes \
+     -DUSE_ICON $(shell sdl-config --cflags)
+ 
+   ifeq ($(USE_OPENAL),1)
+@@ -644,7 +644,7 @@
+   SHLIBLDFLAGS=-shared $(LDFLAGS)
+   THREAD_LDFLAGS=-lpthread
+ 
+-  BASE_CFLAGS = -Wall -fno-strict-aliasing -Wimplicit -Wstrict-prototypes
++  BASE_CFLAGS = -Wall -Wstrict-aliasing -Wimplicit -Wstrict-prototypes
+ 
+   ifneq ($(ARCH),i386)
+     BASE_CFLAGS += -DNO_VM_COMPILED
+@@ -708,7 +708,7 @@
+   endif
+ 
+ 
+-  BASE_CFLAGS = -Wall -fno-strict-aliasing -Wimplicit -Wstrict-prototypes \
++  BASE_CFLAGS = -Wall -Wstrict-aliasing -Wimplicit -Wstrict-prototypes \
+     -pipe -DUSE_ICON $(shell sdl-config --cflags)
+ 
+   OPTIMIZE = -O3 -ffast-math -funroll-loops
+@@ -1015,7 +1015,7 @@
+ # QVM BUILD TOOLS
+ #############################################################################
+ 
+-TOOLS_OPTIMIZE = -g -O2 -Wall -fno-strict-aliasing
++TOOLS_OPTIMIZE = -g -O2 -Wall -Wstrict-aliasing
+ TOOLS_CFLAGS = $(TOOLS_OPTIMIZE) \
+                -DTEMPDIR=\"$(TEMPDIR)\" -DSYSTEM=\"\" \
+                -I$(Q3LCCSRCDIR) \
================================================================


More information about the pld-cvs-commit mailing list