compare-elim.c (try_merge_compare): Don't merge compare if address contains a side effect.
2018-06-07 Paul Koning <ni1d@arrl.net> gcc/ * compare-elim.c (try_merge_compare): Don't merge compare if address contains a side effect. (try_eliminate_compare): Likewise. gcc/testsuite/ * gcc.c-torture/compile/20180605-1.c: New test. From-SVN: r261287
This commit is contained in:
parent
75d1c00452
commit
a3e87f07f3
4 changed files with 32 additions and 0 deletions
|
@ -1,3 +1,9 @@
|
|||
2018-06-07 Paul Koning <ni1d@arrl.net>
|
||||
|
||||
* compare-elim.c (try_merge_compare): Don't merge compare if
|
||||
address contains a side effect.
|
||||
(try_eliminate_compare): Likewise.
|
||||
|
||||
2018-06-07 Olga Makhotina <olga.makhotina@intel.com>
|
||||
|
||||
* config.gcc: Support "tremont".
|
||||
|
|
|
@ -690,6 +690,13 @@ try_merge_compare (struct comparison *cmp)
|
|||
return false;
|
||||
|
||||
rtx src = SET_SRC (set);
|
||||
|
||||
/* If the source uses addressing modes with side effects, we can't
|
||||
do the merge because we'd end up with a PARALLEL that has two
|
||||
instances of that side effect in it. */
|
||||
if (side_effects_p (src))
|
||||
return false;
|
||||
|
||||
rtx flags = maybe_select_cc_mode (cmp, src, CONST0_RTX (GET_MODE (src)));
|
||||
if (!flags)
|
||||
{
|
||||
|
@ -809,6 +816,12 @@ try_eliminate_compare (struct comparison *cmp)
|
|||
else
|
||||
return false;
|
||||
|
||||
/* If the source uses addressing modes with side effects, we can't
|
||||
do the merge because we'd end up with a PARALLEL that has two
|
||||
instances of that side effect in it. */
|
||||
if (side_effects_p (cmp_src))
|
||||
return false;
|
||||
|
||||
/* Determine if we ought to use a different CC_MODE here. */
|
||||
flags = maybe_select_cc_mode (cmp, cmp_src, in_b);
|
||||
if (flags == NULL)
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
2018-06-07 Paul Koning <ni1d@arrl.net>
|
||||
|
||||
* gcc.c-torture/compile/20180605-1.c: New test.
|
||||
|
||||
2018-06-07 Steven G. Kargl <kargl@gcc.gnu.org>
|
||||
|
||||
PR fortran/86045
|
||||
|
|
9
gcc/testsuite/gcc.c-torture/compile/20180605-1.c
Normal file
9
gcc/testsuite/gcc.c-torture/compile/20180605-1.c
Normal file
|
@ -0,0 +1,9 @@
|
|||
void f (int *p, int n)
|
||||
{
|
||||
int j = 0, k;
|
||||
|
||||
for (int i = 0; i < n; i++)
|
||||
if ((k = *p++) > 0)
|
||||
j += k;
|
||||
return j;
|
||||
}
|
Loading…
Add table
Reference in a new issue