This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug rtl-optimization/51924] New: [4.7 Regression] wrong code with -O -free -fno-rename-registers -ftree-vectorize -funroll-loops
- From: "zsojka at seznam dot cz" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Fri, 20 Jan 2012 20:58:30 +0000
- Subject: [Bug rtl-optimization/51924] New: [4.7 Regression] wrong code with -O -free -fno-rename-registers -ftree-vectorize -funroll-loops
- Auto-submitted: auto-generated
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51924
Bug #: 51924
Summary: [4.7 Regression] wrong code with -O -free
-fno-rename-registers -ftree-vectorize -funroll-loops
Classification: Unclassified
Product: gcc
Version: 4.7.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: rtl-optimization
AssignedTo: unassigned@gcc.gnu.org
ReportedBy: zsojka@seznam.cz
Host: x86_64-pc-linux-gnu
Target: x86_64-pc-linux-gnu
Created attachment 26397
--> http://gcc.gnu.org/bugzilla/attachment.cgi?id=26397
reduced testcase
Output:
$ gcc -O -free -fno-rename-registers -ftree-vectorize -funroll-loops testcase.c
$ ./a.out
Aborted
In the output assembly when comparing output with -free and -fno-ree, this
often happens:
*************** bn_sub_words:
*** 152,159 ****
mov QWORD PTR [rdi+rcx], r10
cmp r9, r8
setb r10b
cmp r9, r8
! cmovne rax, r10
add rcx, 8
cmp rcx, r11
jne .L5
--- 156,164 ----
mov QWORD PTR [rdi+rcx], r10
cmp r9, r8
setb r10b
+ movzx r10d, r10b
cmp r9, r8
! cmovne eax, r10d
add rcx, 8
cmp rcx, r11
jne .L5
With -fno-ree (bottom), the value is extended as r10b -> r10d -> eax (-> rax
before ret)
With -free (top), the value is extended r10d -> rax (where only r10b is valid -
it is missing the r10b->r10d step)
Tested revisions:
r183324 - fail
4.6 - doesn't know -free, but -free is included in -O2