[Bug target/68416] New: [MPX] GCC emits a lot of redundant bndmov instructions
ienkovich at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Wed Nov 18 15:39:00 GMT 2015
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68416
Bug ID: 68416
Summary: [MPX] GCC emits a lot of redundant bndmov instructions
Product: gcc
Version: 6.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: target
Assignee: unassigned at gcc dot gnu.org
Reporter: ienkovich at gcc dot gnu.org
Target Milestone: ---
Many tests show we have lots of redundant bndmov instructions. E.g.:
>cat test.c
int
foo(int **arr, int i)
{
return (*arr)[i];
}
>gcc -O2 -mmpx -fcheck-pointer-bounds test.c -S
>cat test.s
.file "test.c"
.text
.p2align 4,,15
.globl foo
.type foo, @function
foo:
.LFB1:
.cfi_startproc
bndcl (%rdi), %bnd0
bndmov %bnd0, -24(%rsp)
movslq %esi, %rsi
bndcu 7(%rdi), %bnd0
movq (%rdi), %rax
bndldx (%rdi,%rax), %bnd3
leaq (%rax,%rsi,4), %rax
bndmov %bnd3, -24(%rsp)
bndcl (%rax), %bnd3
bndmov -24(%rsp), %bnd1
bndcu 3(%rax), %bnd1
movl (%rax), %eax
bnd ret
Here we have 3 bndmov instructions we don't need.
More information about the Gcc-bugs
mailing list