[Bug tree-optimization/79683] New: SLP vectorizer drops gs: prefix
me at manueljacob dot de
gcc-bugzilla@gcc.gnu.org
Thu Feb 23 00:57:00 GMT 2017
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79683
Bug ID: 79683
Summary: SLP vectorizer drops gs: prefix
Product: gcc
Version: 7.0.1
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: tree-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: me at manueljacob dot de
CC: amker at gcc dot gnu.org, jakub at redhat dot com,
rguenth at gcc dot gnu.org
Target Milestone: ---
This happens at least on x86-64 with -ftree-slp-vectorize. This is the C
source:
struct s {
long a;
long b;
};
void test(struct s __seg_gs *x) {
x->a += 1;
x->b -= 1;
}
This is the resulting code with -O1:
addq $1, %gs:(%rdi)
subq $1, %gs:8(%rdi)
This is the resulting code with -O1 -ftree-slp-vectorize:
movdqu (%rdi), %xmm0
paddq .LC0(%rip), %xmm0
movups %xmm0, %gs:(%rdi)
[...]
.LC0:
.quad 1
.quad -1
The memory access in movdqu is missing the gs: prefix.
(Apart from that I would say that this transformation, even if done right, may
not be a good idea, but that's not part of this bug report).
More information about the Gcc-bugs
mailing list