Commit 3256673f by Kyrylo Tkachov Committed by Kyrylo Tkachov

[RTL ifcvt] Allow simple register subregs in noce_convert_multiple_sets

	* ifcvt.c (bb_ok_for_noce_multiple_sets): Allow simple lowpart
	register subregs in SET_SRC.

	* gcc.target/aarch64/ifcvt_multiple_sets_subreg_1.c: New test.

From-SVN: r237475
parent b17dc4d4
2016-06-15 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
* ifcvt.c (bb_ok_for_noce_multiple_sets): Allow simple lowpart
register subregs in SET_SRC.
2016-06-15 Richard Biener <rguenther@suse.de>
* tree-vect-stmts.c (vectorizable_store): Remove strided grouped
......
......@@ -3339,9 +3339,15 @@ bb_ok_for_noce_convert_multiple_sets (basic_block test_bb,
rtx src = SET_SRC (set);
/* We can possibly relax this, but for now only handle REG to REG
moves. This avoids any issues that might come from introducing
loads/stores that might violate data-race-freedom guarantees. */
if (!(REG_P (src) && REG_P (dest)))
(including subreg) moves. This avoids any issues that might come
from introducing loads/stores that might violate data-race-freedom
guarantees. */
if (!REG_P (dest))
return false;
if (!(REG_P (src)
|| (GET_CODE (src) == SUBREG && REG_P (SUBREG_REG (src))
&& subreg_lowpart_p (src))))
return false;
/* Destination must be appropriate for a conditional write. */
......
2016-06-15 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
* gcc.target/aarch64/ifcvt_multiple_sets_subreg_1.c: New test.
2016-06-15 Richard Biener <rguenther@suse.de>
* gcc.dg/vect/slp-45.c: New testcase.
......
/* { dg-do compile } */
/* { dg-options "-O2 -fdump-rtl-ce1" } */
/* Check that the inner if is transformed into CSELs. */
int
foo (int *x, int *z, int a)
{
int b = 0;
int c = 0;
int d = 0;
int i;
for (i = 0; i < a; i++)
{
if (x[i] < c)
{
b = z[i];
if (c < b)
{
c = b;
d = i;
}
}
}
return c + d;
}
/* { dg-final { scan-rtl-dump "if-conversion succeeded through noce_convert_multiple_sets" "ce1" } } */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment