ira: Make sure allocno copies are ordered [PR98791]
gcc/ChangeLog: 2021-02-22 Andre Vieira <andre.simoesdiasvieira@arm.com> PR rtl-optimization/98791 * ira-conflicts.c (process_regs_for_copy): Don't create allocno copies for unordered modes. gcc/testsuite/ChangeLog: 2021-02-22 Andre Vieira <andre.simoesdiasvieira@arm.com> PR rtl-optimization/98791 * gcc.target/aarch64/sve/pr98791.c: New test.
This commit is contained in:
parent
e9b34037cd
commit
4c31a3a6d3
2 changed files with 16 additions and 1 deletions
|
@ -275,7 +275,10 @@ process_regs_for_copy (rtx reg1, rtx reg2, bool constraint_p,
|
|||
ira_allocno_t a1 = ira_curr_regno_allocno_map[REGNO (reg1)];
|
||||
ira_allocno_t a2 = ira_curr_regno_allocno_map[REGNO (reg2)];
|
||||
|
||||
if (!allocnos_conflict_for_copy_p (a1, a2) && offset1 == offset2)
|
||||
if (!allocnos_conflict_for_copy_p (a1, a2)
|
||||
&& offset1 == offset2
|
||||
&& ordered_p (GET_MODE_PRECISION (ALLOCNO_MODE (a1)),
|
||||
GET_MODE_PRECISION (ALLOCNO_MODE (a2))))
|
||||
{
|
||||
cp = ira_add_allocno_copy (a1, a2, freq, constraint_p, insn,
|
||||
ira_curr_loop_tree_node);
|
||||
|
|
12
gcc/testsuite/gcc.target/aarch64/sve/pr98791.c
Normal file
12
gcc/testsuite/gcc.target/aarch64/sve/pr98791.c
Normal file
|
@ -0,0 +1,12 @@
|
|||
/* PR rtl-optimization/98791 */
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-O -ftree-vectorize" } */
|
||||
#include <arm_sve.h>
|
||||
extern char a[11];
|
||||
extern long b[];
|
||||
void f() {
|
||||
for (int d; d < 10; d++) {
|
||||
a[d] = svaddv(svptrue_b8(), svdup_u8(0));
|
||||
b[d] = 0;
|
||||
}
|
||||
}
|
Loading…
Add table
Reference in a new issue