------- 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