[MPlayer-users] [BUG] Compile with ICC 10.1

Reimar Döffinger Reimar.Doeffinger at stud.uni-karlsruhe.de
Sun Jan 27 13:21:10 CET 2008


Hello,
On Sun, Jan 27, 2008 at 03:55:48PM +0200, Dmitry Leonenko wrote:
> So you just want to say that there is no right way to make it working 
> except of using attribute_used or change all static declarations?

None that we have found so far.

> OK. I'll ask you in another way. Can you do something to make it 
> possible to compile with ICC? I want to make some performance tests and 
> decide if Intel's compiler is so stupid.

As I said, just remove the "static" before any declaration that it
complains about during linking.
Oh well, or just use attached patch.
And all compilers are stupid, that is almost the definition (you know
that "artificial intelligence is just one step below natural stupidity",
it's all too true still)

> I've seen significant performance increase when using ICC compared to 
> gcc-4.2.2 in some programs.

Yes, gcc tends to be a bit more stupid, though it makes inline assembly
a bit easier to do right.
In the general case do not expect too much, but when compiling for 32
bit the speed increase should be noticeable for H.264 content.

> P.S.  Can't you be more polite with mail list users? I simply asked you 
> if it is possible to do something it this situation.

And I answered in detail. I do not consider using the words like
"stupid" when appropriate making me impolite, esp. when I just apply it to
a program (though other people have different opinions).

Greetings,
Reimar Döffinger
-------------- next part --------------
Index: libmpcodecs/vf_fspp.c
===================================================================
--- libmpcodecs/vf_fspp.c	(revision 25876)
+++ libmpcodecs/vf_fspp.c	(working copy)
@@ -701,26 +701,26 @@
 
 #ifdef HAVE_MMX
 
-static uint64_t attribute_used __attribute__((aligned(8))) temps[4];//!!
+uint64_t attribute_used __attribute__((aligned(8))) temps[4];//!!
 
-static uint64_t attribute_used __attribute__((aligned(8))) MM_FIX_0_382683433=FIX64(0.382683433, 14); 
-static uint64_t attribute_used __attribute__((aligned(8))) MM_FIX_0_541196100=FIX64(0.541196100, 14); 
-static uint64_t attribute_used __attribute__((aligned(8))) MM_FIX_0_707106781=FIX64(0.707106781, 14); 
-static uint64_t attribute_used __attribute__((aligned(8))) MM_FIX_1_306562965=FIX64(1.306562965, 14); 
+uint64_t attribute_used __attribute__((aligned(8))) MM_FIX_0_382683433=FIX64(0.382683433, 14); 
+uint64_t attribute_used __attribute__((aligned(8))) MM_FIX_0_541196100=FIX64(0.541196100, 14); 
+uint64_t attribute_used __attribute__((aligned(8))) MM_FIX_0_707106781=FIX64(0.707106781, 14); 
+uint64_t attribute_used __attribute__((aligned(8))) MM_FIX_1_306562965=FIX64(1.306562965, 14); 
 
-static uint64_t attribute_used __attribute__((aligned(8))) MM_FIX_1_414213562_A=FIX64(1.414213562, 14); 
+uint64_t attribute_used __attribute__((aligned(8))) MM_FIX_1_414213562_A=FIX64(1.414213562, 14); 
 
-static uint64_t attribute_used __attribute__((aligned(8))) MM_FIX_1_847759065=FIX64(1.847759065, 13); 
-static uint64_t attribute_used __attribute__((aligned(8))) MM_FIX_2_613125930=FIX64(-2.613125930, 13); //-
-static uint64_t attribute_used __attribute__((aligned(8))) MM_FIX_1_414213562=FIX64(1.414213562, 13); 
-static uint64_t attribute_used __attribute__((aligned(8))) MM_FIX_1_082392200=FIX64(1.082392200, 13);
+uint64_t attribute_used __attribute__((aligned(8))) MM_FIX_1_847759065=FIX64(1.847759065, 13); 
+uint64_t attribute_used __attribute__((aligned(8))) MM_FIX_2_613125930=FIX64(-2.613125930, 13); //-
+uint64_t attribute_used __attribute__((aligned(8))) MM_FIX_1_414213562=FIX64(1.414213562, 13); 
+uint64_t attribute_used __attribute__((aligned(8))) MM_FIX_1_082392200=FIX64(1.082392200, 13);
 //for t3,t5,t7 == 0 shortcut
-static uint64_t attribute_used __attribute__((aligned(8))) MM_FIX_0_847759065=FIX64(0.847759065, 14); 
-static uint64_t attribute_used __attribute__((aligned(8))) MM_FIX_0_566454497=FIX64(0.566454497, 14); 
-static uint64_t attribute_used __attribute__((aligned(8))) MM_FIX_0_198912367=FIX64(0.198912367, 14); 
+uint64_t attribute_used __attribute__((aligned(8))) MM_FIX_0_847759065=FIX64(0.847759065, 14); 
+uint64_t attribute_used __attribute__((aligned(8))) MM_FIX_0_566454497=FIX64(0.566454497, 14); 
+uint64_t attribute_used __attribute__((aligned(8))) MM_FIX_0_198912367=FIX64(0.198912367, 14); 
 
-static uint64_t attribute_used __attribute__((aligned(8))) MM_DESCALE_RND=C64(4);
-static uint64_t attribute_used __attribute__((aligned(8))) MM_2=C64(2);
+uint64_t attribute_used __attribute__((aligned(8))) MM_DESCALE_RND=C64(4);
+uint64_t attribute_used __attribute__((aligned(8))) MM_2=C64(2);
 
 #else /* !HAVE_MMX */
 
Index: liba52/imdct.c
===================================================================
--- liba52/imdct.c	(revision 25876)
+++ liba52/imdct.c	(working copy)
@@ -73,7 +73,7 @@
 	7, 23, 39, 55, 71, 87, 103, 119, 15, 31, 47,  63, 79, 95, 111, 127
 }; 
 
-static uint8_t attribute_used bit_reverse_512[] = {
+uint8_t attribute_used bit_reverse_512[] = {
 	0x00, 0x40, 0x20, 0x60, 0x10, 0x50, 0x30, 0x70, 
 	0x08, 0x48, 0x28, 0x68, 0x18, 0x58, 0x38, 0x78, 
 	0x04, 0x44, 0x24, 0x64, 0x14, 0x54, 0x34, 0x74, 
@@ -121,19 +121,19 @@
 #if defined(ARCH_X86) || defined(ARCH_X86_64)
 // NOTE: SSE needs 16byte alignment or it will segfault 
 // 
-static float __attribute__((aligned(16))) sseSinCos1c[256];
-static float __attribute__((aligned(16))) sseSinCos1d[256];
-static float attribute_used __attribute__((aligned(16))) ps111_1[4]={1,1,1,-1};
+float __attribute__((aligned(16))) sseSinCos1c[256];
+float __attribute__((aligned(16))) sseSinCos1d[256];
+float attribute_used __attribute__((aligned(16))) ps111_1[4]={1,1,1,-1};
 //static float __attribute__((aligned(16))) sseW0[4];
 static float __attribute__((aligned(16))) sseW1[8];
-static float __attribute__((aligned(16))) sseW2[16];
+float __attribute__((aligned(16))) sseW2[16];
 static float __attribute__((aligned(16))) sseW3[32];
 static float __attribute__((aligned(16))) sseW4[64];
 static float __attribute__((aligned(16))) sseW5[128];
 static float __attribute__((aligned(16))) sseW6[256];
 static float __attribute__((aligned(16))) *sseW[7]=
 	{NULL /*sseW0*/,sseW1,sseW2,sseW3,sseW4,sseW5,sseW6};
-static float __attribute__((aligned(16))) sseWindow[512];
+float __attribute__((aligned(16))) sseWindow[512];
 #endif
 
 /* Root values for IFFT */
Index: liba52/resample_mmx.c
===================================================================
--- liba52/resample_mmx.c	(revision 25876)
+++ liba52/resample_mmx.c	(working copy)
@@ -31,10 +31,10 @@
 #include "a52_internal.h"
 
 
-static uint64_t attribute_used __attribute__((aligned(8))) magicF2W= 0x43c0000043c00000LL;
-static uint64_t attribute_used __attribute__((aligned(8))) wm1010= 0xFFFF0000FFFF0000LL;
-static uint64_t attribute_used __attribute__((aligned(8))) wm0101= 0x0000FFFF0000FFFFLL;
-static uint64_t attribute_used __attribute__((aligned(8))) wm1100= 0xFFFFFFFF00000000LL;
+uint64_t attribute_used __attribute__((aligned(8))) magicF2W= 0x43c0000043c00000LL;
+uint64_t attribute_used __attribute__((aligned(8))) wm1010= 0xFFFF0000FFFF0000LL;
+uint64_t attribute_used __attribute__((aligned(8))) wm0101= 0x0000FFFF0000FFFFLL;
+uint64_t attribute_used __attribute__((aligned(8))) wm1100= 0xFFFFFFFF00000000LL;
 
 static int a52_resample_MONO_to_5_MMX(float * _f, int16_t * s16){
     int32_t * f = (int32_t *) _f;
Index: mp3lib/decode_i586.c
===================================================================
--- mp3lib/decode_i586.c	(revision 25876)
+++ mp3lib/decode_i586.c	(working copy)
@@ -33,9 +33,9 @@
 #include "mangle.h"
 #define real float /* ugly - but only way */
 
-static int attribute_used buffs[1088]={0};
-static int attribute_used bo=1;
-static int attribute_used saved_ebp=0;
+int attribute_used buffs[1088]={0};
+int attribute_used bo=1;
+int attribute_used saved_ebp=0;
 
 int synth_1to1_pent(real *bandPtr, int channel, short *samples)
 {
Index: mp3lib/decode_mmx.c
===================================================================
--- mp3lib/decode_mmx.c	(revision 25876)
+++ mp3lib/decode_mmx.c	(working copy)
@@ -12,8 +12,8 @@
 #define real float /* ugly - but only way */
 
 extern void (*dct64_MMX_func)(short*, short*, real*);
-static unsigned long long attribute_used __attribute__((aligned(8))) null_one = 0x0000ffff0000ffffULL;
-static unsigned long long attribute_used __attribute__((aligned(8))) one_null = 0xffff0000ffff0000ULL;
+unsigned long long attribute_used __attribute__((aligned(8))) null_one = 0x0000ffff0000ffffULL;
+unsigned long long attribute_used __attribute__((aligned(8))) one_null = 0xffff0000ffff0000ULL;
 unsigned int __attribute__((aligned(16))) costab_mmx[] =
 {
 	1056974725,
Index: mp3lib/dct64_k7.c
===================================================================
--- mp3lib/dct64_k7.c	(revision 25876)
+++ mp3lib/dct64_k7.c	(working copy)
@@ -13,7 +13,7 @@
 #include "mangle.h"
 
 static unsigned long long int attribute_used __attribute__((aligned(8))) x_plus_minus_3dnow = 0x8000000000000000ULL;
-static float attribute_used plus_1f = 1.0;
+float attribute_used plus_1f = 1.0;
 
 void dct64_MMX_3dnowex(short *a,short *b,real *c)
 {
Index: libvo/osd.c
===================================================================
--- libvo/osd.c	(revision 25876)
+++ libvo/osd.c	(working copy)
@@ -17,7 +17,7 @@
 #endif
 
 #ifdef CAN_COMPILE_X86_ASM
-static const uint64_t bFF attribute_used __attribute__((aligned(8))) = 0xFFFFFFFFFFFFFFFFULL;
+const uint64_t bFF attribute_used __attribute__((aligned(8))) = 0xFFFFFFFFFFFFFFFFULL;
 static const unsigned long long mask24lh  __attribute__((aligned(8))) = 0xFFFF000000000000ULL;
 static const unsigned long long mask24hl  __attribute__((aligned(8))) = 0x0000FFFFFFFFFFFFULL;
 #endif
Index: libswscale/yuv2rgb.c
===================================================================
--- libswscale/yuv2rgb.c	(revision 25876)
+++ libswscale/yuv2rgb.c	(working copy)
@@ -159,9 +159,9 @@
 #ifdef HAVE_MMX
 
 /* hope these constant values are cache line aligned */
-static uint64_t attribute_used __attribute__((aligned(8))) mmx_00ffw   = 0x00ff00ff00ff00ffULL;
-static uint64_t attribute_used __attribute__((aligned(8))) mmx_redmask = 0xf8f8f8f8f8f8f8f8ULL;
-static uint64_t attribute_used __attribute__((aligned(8))) mmx_grnmask = 0xfcfcfcfcfcfcfcfcULL;
+uint64_t attribute_used __attribute__((aligned(8))) mmx_00ffw   = 0x00ff00ff00ff00ffULL;
+uint64_t attribute_used __attribute__((aligned(8))) mmx_redmask = 0xf8f8f8f8f8f8f8f8ULL;
+uint64_t attribute_used __attribute__((aligned(8))) mmx_grnmask = 0xfcfcfcfcfcfcfcfcULL;
 
 static uint64_t attribute_used __attribute__((aligned(8))) M24A=   0x00FF0000FF0000FFULL;
 static uint64_t attribute_used __attribute__((aligned(8))) M24B=   0xFF0000FF0000FF00ULL;
Index: libswscale/swscale.c
===================================================================
--- libswscale/swscale.c	(revision 25876)
+++ libswscale/swscale.c	(working copy)
@@ -180,19 +180,19 @@
 */
 
 #if defined(ARCH_X86) && defined (CONFIG_GPL)
-static uint64_t attribute_used __attribute__((aligned(8))) bF8=       0xF8F8F8F8F8F8F8F8LL;
-static uint64_t attribute_used __attribute__((aligned(8))) bFC=       0xFCFCFCFCFCFCFCFCLL;
+uint64_t attribute_used __attribute__((aligned(8))) bF8=       0xF8F8F8F8F8F8F8F8LL;
+uint64_t attribute_used __attribute__((aligned(8))) bFC=       0xFCFCFCFCFCFCFCFCLL;
 static uint64_t                __attribute__((aligned(8))) w10=       0x0010001000100010LL;
-static uint64_t attribute_used __attribute__((aligned(8))) w02=       0x0002000200020002LL;
+uint64_t attribute_used __attribute__((aligned(8))) w02=       0x0002000200020002LL;
 static uint64_t attribute_used __attribute__((aligned(8))) bm00001111=0x00000000FFFFFFFFLL;
 static uint64_t attribute_used __attribute__((aligned(8))) bm00000111=0x0000000000FFFFFFLL;
 static uint64_t attribute_used __attribute__((aligned(8))) bm11111000=0xFFFFFFFFFF000000LL;
-static uint64_t attribute_used __attribute__((aligned(8))) bm01010101=0x00FF00FF00FF00FFLL;
+uint64_t attribute_used __attribute__((aligned(8))) bm01010101=0x00FF00FF00FF00FFLL;
 
-static volatile uint64_t attribute_used __attribute__((aligned(8))) b5Dither;
-static volatile uint64_t attribute_used __attribute__((aligned(8))) g5Dither;
-static volatile uint64_t attribute_used __attribute__((aligned(8))) g6Dither;
-static volatile uint64_t attribute_used __attribute__((aligned(8))) r5Dither;
+volatile uint64_t attribute_used __attribute__((aligned(8))) b5Dither;
+volatile uint64_t attribute_used __attribute__((aligned(8))) g5Dither;
+volatile uint64_t attribute_used __attribute__((aligned(8))) g6Dither;
+volatile uint64_t attribute_used __attribute__((aligned(8))) r5Dither;
 
 static uint64_t __attribute__((aligned(8))) dither4[2]={
         0x0103010301030103LL,
@@ -209,9 +209,9 @@
 static uint64_t attribute_used __attribute__((aligned(8))) g15Mask=   0x03E003E003E003E0LL;
 static uint64_t attribute_used __attribute__((aligned(8))) r15Mask=   0x7C007C007C007C00LL;
 
-static uint64_t attribute_used __attribute__((aligned(8))) M24A=      0x00FF0000FF0000FFLL;
-static uint64_t attribute_used __attribute__((aligned(8))) M24B=      0xFF0000FF0000FF00LL;
-static uint64_t attribute_used __attribute__((aligned(8))) M24C=      0x0000FF0000FF0000LL;
+uint64_t attribute_used __attribute__((aligned(8))) M24A=      0x00FF0000FF0000FFLL;
+uint64_t attribute_used __attribute__((aligned(8))) M24B=      0xFF0000FF0000FF00LL;
+uint64_t attribute_used __attribute__((aligned(8))) M24C=      0x0000FF0000FF0000LL;
 
 #ifdef FAST_BGR2YV12
 static const uint64_t bgr2YCoeff   attribute_used __attribute__((aligned(8))) = 0x000000210041000DULL;
Index: libswscale/rgb2rgb.c
===================================================================
--- libswscale/rgb2rgb.c	(revision 25876)
+++ libswscale/rgb2rgb.c	(working copy)
@@ -99,9 +99,9 @@
 static const uint64_t mask3215g    __attribute__((aligned(8))) = 0x0000F8000000F800ULL;
 static const uint64_t mul3216      __attribute__((aligned(8))) = 0x2000000420000004ULL;
 static const uint64_t mul3215      __attribute__((aligned(8))) = 0x2000000820000008ULL;
-static const uint64_t mask24b      attribute_used __attribute__((aligned(8))) = 0x00FF0000FF0000FFULL;
-static const uint64_t mask24g      attribute_used __attribute__((aligned(8))) = 0xFF0000FF0000FF00ULL;
-static const uint64_t mask24r      attribute_used __attribute__((aligned(8))) = 0x0000FF0000FF0000ULL;
+const uint64_t mask24b      attribute_used __attribute__((aligned(8))) = 0x00FF0000FF0000FFULL;
+const uint64_t mask24g      attribute_used __attribute__((aligned(8))) = 0xFF0000FF0000FF00ULL;
+const uint64_t mask24r      attribute_used __attribute__((aligned(8))) = 0x0000FF0000FF0000ULL;
 static const uint64_t mask24l      __attribute__((aligned(8))) = 0x0000000000FFFFFFULL;
 static const uint64_t mask24h      __attribute__((aligned(8))) = 0x0000FFFFFF000000ULL;
 static const uint64_t mask24hh     __attribute__((aligned(8))) = 0xffff000000000000ULL;
@@ -123,17 +123,17 @@
 static const uint64_t blue_15mask  __attribute__((aligned(8))) = 0x0000001f0000001fULL;
 
 #ifdef FAST_BGR2YV12
-static const uint64_t bgr2YCoeff   attribute_used __attribute__((aligned(8))) = 0x000000210041000DULL;
-static const uint64_t bgr2UCoeff   attribute_used __attribute__((aligned(8))) = 0x0000FFEEFFDC0038ULL;
-static const uint64_t bgr2VCoeff   attribute_used __attribute__((aligned(8))) = 0x00000038FFD2FFF8ULL;
+const uint64_t bgr2YCoeff   attribute_used __attribute__((aligned(8))) = 0x000000210041000DULL;
+const uint64_t bgr2UCoeff   attribute_used __attribute__((aligned(8))) = 0x0000FFEEFFDC0038ULL;
+const uint64_t bgr2VCoeff   attribute_used __attribute__((aligned(8))) = 0x00000038FFD2FFF8ULL;
 #else
-static const uint64_t bgr2YCoeff   attribute_used __attribute__((aligned(8))) = 0x000020E540830C8BULL;
-static const uint64_t bgr2UCoeff   attribute_used __attribute__((aligned(8))) = 0x0000ED0FDAC23831ULL;
-static const uint64_t bgr2VCoeff   attribute_used __attribute__((aligned(8))) = 0x00003831D0E6F6EAULL;
+const uint64_t bgr2YCoeff   attribute_used __attribute__((aligned(8))) = 0x000020E540830C8BULL;
+const uint64_t bgr2UCoeff   attribute_used __attribute__((aligned(8))) = 0x0000ED0FDAC23831ULL;
+const uint64_t bgr2VCoeff   attribute_used __attribute__((aligned(8))) = 0x00003831D0E6F6EAULL;
 #endif
-static const uint64_t bgr2YOffset  attribute_used __attribute__((aligned(8))) = 0x1010101010101010ULL;
-static const uint64_t bgr2UVOffset attribute_used __attribute__((aligned(8))) = 0x8080808080808080ULL;
-static const uint64_t w1111        attribute_used __attribute__((aligned(8))) = 0x0001000100010001ULL;
+const uint64_t bgr2YOffset  attribute_used __attribute__((aligned(8))) = 0x1010101010101010ULL;
+const uint64_t bgr2UVOffset attribute_used __attribute__((aligned(8))) = 0x8080808080808080ULL;
+const uint64_t w1111        attribute_used __attribute__((aligned(8))) = 0x0001000100010001ULL;
 
 #if 0
 static volatile uint64_t __attribute__((aligned(8))) b5Dither;


More information about the MPlayer-users mailing list