Commit a3e87f07 by Paul Koning Committed by Paul Koning

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
parent 75d1c004
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)
......
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
......
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;
}
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