[Bug target/38708] [4.4 Regression] Revision 137646 caused gcc.c-torture/execute/memset-[23].c fail with -mtune=pentiumpro

jakub at gcc dot gnu dot org gcc-bugzilla@gcc.gnu.org
Sat Jan 3 11:40:00 GMT 2009



------- Comment #9 from jakub at gcc dot gnu dot org  2009-01-03 11:39 -------
I ran check-gcc RUNTESTFLAGS='execute.exp
--target_board=unix/{-m32,-m32/-mtune=pentium-m,-m64}/-mstringop-strategy={rep_byte,libcall,rep_4byte,rep_8byte,byte_loop,loop,unrolled_loop}'
before and after the patch.  In all cases, -m32 together with
-mstringop-strategy=rep_8byte
ICEs in many testcases, obviously we need to reject -m32
-mstringop-strategy=rep_8byte.
Other than that, we have:
 unix/-m64/-mstringop-strategy=loop
 FAIL: gcc.c-torture/execute/memset-2.c execution,  -O2 
 FAIL: gcc.c-torture/execute/memset-2.c execution,  -O3 -fomit-frame-pointer 
 FAIL: gcc.c-torture/execute/memset-2.c execution,  -O3 -fomit-frame-pointer
-funroll-loops 
 FAIL: gcc.c-torture/execute/memset-2.c execution,  -O3 -fomit-frame-pointer
-funroll-all-loops -finline-functions 
 FAIL: gcc.c-torture/execute/memset-2.c execution,  -O3 -g 
(before and after the patch) and:
 unix/-m32/-mtune=pentium-m/-mstringop-strategy=rep_byte
-FAIL: gcc.c-torture/execute/memcpy-2.c execution,  -O1 
-FAIL: gcc.c-torture/execute/memcpy-2.c execution,  -O2 
-FAIL: gcc.c-torture/execute/memcpy-2.c execution,  -O3 -fomit-frame-pointer 
-FAIL: gcc.c-torture/execute/memcpy-2.c execution,  -O3 -fomit-frame-pointer
-funroll-loops 
-FAIL: gcc.c-torture/execute/memcpy-2.c execution,  -O3 -fomit-frame-pointer
-funroll-all-loops -finline-functions 
-FAIL: gcc.c-torture/execute/memcpy-2.c execution,  -O3 -g 
 FAIL: gcc.c-torture/execute/memset-1.c execution,  -O1 
 FAIL: gcc.c-torture/execute/memset-1.c execution,  -O2 
 FAIL: gcc.c-torture/execute/memset-1.c execution,  -O3 -fomit-frame-pointer 
 FAIL: gcc.c-torture/execute/memset-1.c execution,  -O3 -fomit-frame-pointer
-funroll-loops 
 FAIL: gcc.c-torture/execute/memset-1.c execution,  -O3 -fomit-frame-pointer
-funroll-all-loops -finline-functions 
 FAIL: gcc.c-torture/execute/memset-1.c execution,  -O3 -g 
 FAIL: gcc.c-torture/execute/memset-2.c execution,  -O3 -fomit-frame-pointer 
 FAIL: gcc.c-torture/execute/memset-2.c execution,  -O3 -fomit-frame-pointer
-funroll-loops 
 FAIL: gcc.c-torture/execute/memset-2.c execution,  -O3 -fomit-frame-pointer
-funroll-all-loops -finline-functions 
 FAIL: gcc.c-torture/execute/memset-2.c execution,  -O3 -g 
 FAIL: gcc.c-torture/execute/memset-3.c execution,  -O1 
 FAIL: gcc.c-torture/execute/memset-3.c execution,  -O2 
 FAIL: gcc.c-torture/execute/memset-3.c execution,  -O3 -fomit-frame-pointer 
 FAIL: gcc.c-torture/execute/memset-3.c execution,  -O3 -fomit-frame-pointer
-funroll-loops 
 FAIL: gcc.c-torture/execute/memset-3.c execution,  -O3 -fomit-frame-pointer
-funroll-all-loops -finline-functions 
 FAIL: gcc.c-torture/execute/memset-3.c execution,  -O3 -g 
 unix/-m32/-mtune=pentium-m/-mstringop-strategy=rep_4byte
-FAIL: gcc.c-torture/execute/memset-3.c execution,  -O1 
-FAIL: gcc.c-torture/execute/memset-3.c execution,  -O2 
-FAIL: gcc.c-torture/execute/memset-3.c execution,  -O3 -fomit-frame-pointer 
-FAIL: gcc.c-torture/execute/memset-3.c execution,  -O3 -fomit-frame-pointer
-funroll-loops 
-FAIL: gcc.c-torture/execute/memset-3.c execution,  -O3 -fomit-frame-pointer
-funroll-all-loops -finline-functions 
-FAIL: gcc.c-torture/execute/memset-3.c execution,  -O3 -g 

( FAIL is before+after the patch, -FAIL is before the patch, cured by the
patch).
To reject rep_8byte for -m32 we IMHO want:
--- i386.c.jj42008-12-27 10:12:25.000000000 +0100
+++ i386.c2009-01-03 11:53:15.000000000 +0100
@@ -2686,7 +2686,8 @@ override_options (bool main_args_p)
 stringop_alg = libcall;
       else if (!strcmp (ix86_stringop_string, "rep_4byte"))
 stringop_alg = rep_prefix_4_byte;
-      else if (!strcmp (ix86_stringop_string, "rep_8byte"))
+      else if (!strcmp (ix86_stringop_string, "rep_8byte")
+       && TARGET_64BIT)
 stringop_alg = rep_prefix_8_byte;
       else if (!strcmp (ix86_stringop_string, "byte_loop"))
 stringop_alg = loop_1_byte;

and obviously the remaining FAILs need to be investigated.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38708



More information about the Gcc-bugs mailing list