iff -ur duke3d/source/buildengine/a.c duke3d-gcc4/source/buildengine/a.c --- duke3d/source/buildengine/a.c 2004-11-25 13:55:21.000000000 -0500 +++ duke3d-gcc4/source/buildengine/a.c 2005-06-18 18:14:24.000000000 -0400 @@ -186,7 +186,9 @@ if (i3 == 0) { i1 += i4; - ((unsigned long)i4) >>= mach3_al; + unsigned long temp = i4; + temp >>= mach3_al; + i4 = temp; i4 = (i4&0xffffff00) | (source[i4]&0xff); *dest = ((unsigned char*)i2)[i4]; return i1; diff -ur duke3d/source/buildengine/pragmas.c duke3d-gcc4/source/buildengine/pragmas.c --- duke3d/source/buildengine/pragmas.c 2003-07-25 20:11:32.000000000 -0400 +++ duke3d-gcc4/source/buildengine/pragmas.c 2005-06-18 18:25:37.000000000 -0400 @@ -56,28 +56,39 @@ void clearbufbyte(void *buffer, int size, long fill_value) { int lsize; + unsigned char *p=buffer; + unsigned short *s=buffer; switch(size){ case 0: return; - case 1: *((unsigned char*)buffer)++ = fill_value; return; - case 2: *((unsigned short*)buffer)++ = fill_value; return; - case 3: { unsigned char *p=buffer; p[2]=p[1]=p[0] = fill_value;} return; + case 1: *p = fill_value; return; + case 2: *s = fill_value; return; + case 3: { p[2]=p[1]=p[0] = fill_value;} return; default: if ((int)buffer&1) { - *((unsigned char*)buffer)++ = fill_value; size--; + *p = fill_value; ++p; size--; + buffer = p; } if ((int)buffer&2) { - *((unsigned short*)buffer)++ = fill_value; size-=2; + *s = fill_value; ++s; size-=2; + buffer = s; } lsize = size>>2; + unsigned int *up = buffer; while(lsize) { - *((unsigned int*)buffer)++ = fill_value; + *up = fill_value; + ++up; lsize--; } + buffer = up; if (size&2) { - *((unsigned short*)buffer)++ = fill_value; + s = buffer; + *s = fill_value; + ++s; } if (size&1) { - *((unsigned char*)buffer)++ = fill_value; + p = buffer; + *p = fill_value; + ++p; } } } @@ -122,7 +133,7 @@ { *((unsigned short *)source) = ((linum>>16)&0xffff); linum += linum_inc; - ((unsigned char*)source) = ((unsigned char*)source) + 2; + source = ((unsigned char*)source) + 2; size--; if (size == 0) return; } diff -u -r duke3d/source/buildengine/a.h duke3d.gcc4.1.1/source/buildengine/a.h --- duke3d/source/buildengine/a.h 2003-04-11 08:54:06.000000000 +0200 +++ duke3d.gcc4.1.1/source/buildengine/a.h 2006-06-22 12:14:40.366393568 +0200 @@ -116,56 +116,56 @@ #if ((defined __GNUC__) && (!defined C_IDENTIFIERS_UNDERSCORED)) - long asm_mmxoverlay(void) __attribute__ ((alias ("_asm_mmxoverlay"))); - long asm_sethlinesizes(long,long,long) __attribute__ ((alias ("_asm_sethlinesizes"))); - long asm_setpalookupaddress(char *) __attribute__ ((alias ("_asm_setpalookupaddress"))); - long asm_setuphlineasm4(long,long) __attribute__ ((alias ("_asm_setuphlineasm4"))); - long asm_hlineasm4(long,long,long,long,long,long) __attribute__ ((alias ("_asm_hlineasm4"))); - long asm_setuprhlineasm4(long,long,long,long,long,long) __attribute__ ((alias ("_asm_setuprhlineasm4"))); - long asm_rhlineasm4(long,long,long,long,long,long) __attribute__ ((alias ("_asm_rhlineasm4"))); - long asm_setuprmhlineasm4(long,long,long,long,long,long) __attribute__ ((alias ("_asm_setuprmhlineasm4"))); - long asm_rmhlineasm4(long,long,long,long,long,long) __attribute__ ((alias ("_asm_rmhlineasm4"))); - long asm_setupqrhlineasm4(long,long,long,long,long,long) __attribute__ ((alias ("_asm_setupqrhlineasm4"))); - long asm_qrhlineasm4(long,long,long,long,long,long) __attribute__ ((alias ("_asm_qrhlineasm4"))); - long asm_setvlinebpl(long) __attribute__ ((alias ("_asm_setvlinebpl"))); - long asm_fixtransluscence(long) __attribute__ ((alias ("_asm_fixtransluscence"))); - long asm_prevlineasm1(long,long,long,long,long,long) __attribute__ ((alias ("_asm_prevlineasm1"))); - long asm_vlineasm1(long,long,long,long,long,long) __attribute__ ((alias ("_asm_vlineasm1"))); - long asm_setuptvlineasm(long) __attribute__ ((alias ("_asm_setuptvlineasm"))); - long asm_tvlineasm1(long,long,long,long,long,long) __attribute__ ((alias ("_asm_tvlineasm1"))); - long asm_setuptvlineasm2(long,long,long) __attribute__ ((alias ("_asm_setuptvlineasm2"))); - long asm_tvlineasm2(long,long,long,long,long,long) __attribute__ ((alias ("_asm_tvlineasm2"))); - long asm_mvlineasm1(long,long,long,long,long,long) __attribute__ ((alias ("_asm_mvlineasm1"))); - long asm_setupvlineasm(long) __attribute__ ((alias ("_asm_setupvlineasm"))); - long asm_vlineasm4(long,long) __attribute__ ((alias ("_asm_vlineasm4"))); - long asm_setupmvlineasm(long) __attribute__ ((alias ("_asm_setupmvlineasm"))); - long asm_mvlineasm4(long,long) __attribute__ ((alias ("_asm_mvlineasm4"))); - void asm_setupspritevline(long,long,long,long,long,long) __attribute__ ((alias ("_asm_setupspritevline"))); - void asm_spritevline(long,long,long,long,long,long) __attribute__ ((alias ("_asm_spritevline"))); - void asm_msetupspritevline(long,long,long,long,long,long) __attribute__ ((alias ("_asm_msetupspritevline"))); - void asm_mspritevline(long,long,long,long,long,long) __attribute__ ((alias ("_asm_mspritevline"))); - void asm_tsetupspritevline(long,long,long,long,long,long) __attribute__ ((alias ("_asm_tsetupspritevline"))); - void asm_tspritevline(long,long,long,long,long,long) __attribute__ ((alias ("_asm_tspritevline"))); - long asm_mhline(long,long,long,long,long,long) __attribute__ ((alias ("_asm_mhline"))); - long asm_mhlineskipmodify(long,long,long,long,long,long) __attribute__ ((alias ("_asm_mhlineskipmodify"))); - long asm_msethlineshift(long,long) __attribute__ ((alias ("_asm_msethlineshift"))); - long asm_thline(long,long,long,long,long,long) __attribute__ ((alias ("_asm_thline"))); - long asm_thlineskipmodify(long,long,long,long,long,long) __attribute__ ((alias ("_asm_thlineskipmodify"))); - long asm_tsethlineshift(long,long) __attribute__ ((alias ("_asm_tsethlineshift"))); - long asm_setupslopevlin(long,long,long) __attribute__ ((alias ("_asm_setupslopevlin"))); - long asm_slopevlin(long,long,long,long,long,long) __attribute__ ((alias ("_asm_slopevlin"))); - long asm_settransnormal(void) __attribute__ ((alias ("_asm_settransnormal"))); - long asm_settransreverse(void) __attribute__ ((alias ("_asm_settransreverse"))); - long asm_setupdrawslab(long,long) __attribute__ ((alias ("_asm_setupdrawslab"))); - long asm_drawslab(long,long,long,long,long,long) __attribute__ ((alias ("_asm_drawslab"))); - long asm_stretchhline(long,long,long,long,long,long) __attribute__ ((alias ("_asm_stretchhline"))); - long asm_isvmwarerunning(void) __attribute__ ((alias ("_asm_isvmwarerunning"))); + long asm_mmxoverlay(void) asm ("_asm_mmxoverlay"); + long asm_sethlinesizes(long,long,long) asm ("_asm_sethlinesizes"); + long asm_setpalookupaddress(char *) asm ("_asm_setpalookupaddress"); + long asm_setuphlineasm4(long,long) asm ("_asm_setuphlineasm4"); + long asm_hlineasm4(long,long,long,long,long,long) asm ("_asm_hlineasm4"); + long asm_setuprhlineasm4(long,long,long,long,long,long) asm ("_asm_setuprhlineasm4"); + long asm_rhlineasm4(long,long,long,long,long,long) asm ("_asm_rhlineasm4"); + long asm_setuprmhlineasm4(long,long,long,long,long,long) asm ("_asm_setuprmhlineasm4"); + long asm_rmhlineasm4(long,long,long,long,long,long) asm ("_asm_rmhlineasm4"); + long asm_setupqrhlineasm4(long,long,long,long,long,long) asm ("_asm_setupqrhlineasm4"); + long asm_qrhlineasm4(long,long,long,long,long,long) asm ("_asm_qrhlineasm4"); + long asm_setvlinebpl(long) asm ("_asm_setvlinebpl"); + long asm_fixtransluscence(long) asm ("_asm_fixtransluscence"); + long asm_prevlineasm1(long,long,long,long,long,long) asm ("_asm_prevlineasm1"); + long asm_vlineasm1(long,long,long,long,long,long) asm ("_asm_vlineasm1"); + long asm_setuptvlineasm(long) asm ("_asm_setuptvlineasm"); + long asm_tvlineasm1(long,long,long,long,long,long) asm ("_asm_tvlineasm1"); + long asm_setuptvlineasm2(long,long,long) asm ("_asm_setuptvlineasm2"); + long asm_tvlineasm2(long,long,long,long,long,long) asm ("_asm_tvlineasm2"); + long asm_mvlineasm1(long,long,long,long,long,long) asm ("_asm_mvlineasm1"); + long asm_setupvlineasm(long) asm ("_asm_setupvlineasm"); + long asm_vlineasm4(long,long) asm ("_asm_vlineasm4"); + long asm_setupmvlineasm(long) asm ("_asm_setupmvlineasm"); + long asm_mvlineasm4(long,long) asm ("_asm_mvlineasm4"); + void asm_setupspritevline(long,long,long,long,long,long) asm ("_asm_setupspritevline"); + void asm_spritevline(long,long,long,long,long,long) asm ("_asm_spritevline"); + void asm_msetupspritevline(long,long,long,long,long,long) asm ("_asm_msetupspritevline"); + void asm_mspritevline(long,long,long,long,long,long) asm ("_asm_mspritevline"); + void asm_tsetupspritevline(long,long,long,long,long,long) asm ("_asm_tsetupspritevline"); + void asm_tspritevline(long,long,long,long,long,long) asm ("_asm_tspritevline"); + long asm_mhline(long,long,long,long,long,long) asm ("_asm_mhline"); + long asm_mhlineskipmodify(long,long,long,long,long,long) asm("_asm_mhlineskipmodify"); + long asm_msethlineshift(long,long) asm("_asm_msethlineshift"); + long asm_thline(long,long,long,long,long,long) asm("_asm_thline"); + long asm_thlineskipmodify(long,long,long,long,long,long) asm("_asm_thlineskipmodify"); + long asm_tsethlineshift(long,long) asm("_asm_tsethlineshift"); + long asm_setupslopevlin(long,long,long) asm("_asm_setupslopevlin"); + long asm_slopevlin(long,long,long,long,long,long) asm("_asm_slopevlin"); + long asm_settransnormal(void) asm("_asm_settransnormal"); + long asm_settransreverse(void) asm("_asm_settransreverse"); + long asm_setupdrawslab(long,long) asm("_asm_setupdrawslab"); + long asm_drawslab(long,long,long,long,long,long) asm("_asm_drawslab"); + long asm_stretchhline(long,long,long,long,long,long) asm("_asm_stretchhline"); + long asm_isvmwarerunning(void) asm("_asm_isvmwarerunning"); /* * !!! I need a reference to this, for mprotect(), but the actual function * !!! is never called in BUILD...just from other ASM routines. --ryan. */ - long asm_prohlineasm4(void) __attribute__ ((alias ("_asm_prohlineasm4"))); + long asm_prohlineasm4(void) asm("_asm_prohlineasm4"); #endif /* ELF/GCC */ #endif /* defined USE_I386_ASM */