Hi Jeff,

Thank you for the suggestion! I will committed it first and continue working on it.

Regards,
Renlin Li

On 08/07/15 21:56, Jeff Law wrote:
On 07/08/2015 09:03 AM, Renlin Li wrote:
Hi all,

In simplify_const_relational_operation function, there are cases a const
rtx
will be returned.

Three cases are considered in this function:
1, comparisons with upper and lower bounds.
2, Integer comparisons with zero.
3, comparison of ABS with zero.

It's fine to to the optimization if the operands have no side-effects.

For example, I am currently fixing a code generation bug for armv7-a
bigendian.
It turns out that, the following rtx is simplified into a const, and the
side-effect with it is ignored.

(ltu:SI (lshiftrt:SI (subreg:SI (mem/c:HI (post_modify:SI (reg/f:SI 156)
                      (plus:SI (reg/f:SI 156)
                          (const_int 20 [0x14]))) [5 g+4 S2 A32]) 0)
          (const_int 1 [0x1]))
      (const_int -1 [0xffffffffffffffff]))

------------>>>>>>>>>>>>>>>>>>

(const_int 1 [0x1])

This particular case falls into category 1 mentioned above. -1, when
regarded
as unsigned integer, is the largest unsigned integer. So the result is
always
a const_true_rtx in this case. However, the first operand of the comparison
has POST_MODIFY side-effect.

In this case, the simplifications should be checked against side-effect.

x86_64 bootstrapping is Okay and arm-none-eabi regression test runs
without any new issues.

Okay to commit and backport to branch 5?

Regards,
Renlin Li

gcc/ChangeLog:

2015-07-08  Renlin Li<renlin...@arm.com>

          PR rtl/66556
          * simplify-rtx.c (simplify_const_relational_operation): Add
          side_effects_p check.

gcc/testsuite/ChangeLog:

2015-07-08  Renlin Li<renlin...@arm.com>

          PR rtl/66556
          * gcc.c-torture/execute/pr66556.c: New.
OK.

It may be worth looking at the .optimized dump for the new test and see
if there's something we can/should be optimizing better before we start
generating RTL.  That can obviously be a follow-up.

jeff


Reply via email to