[Bug tree-optimization/15911] VRP/DOM does not like TRUTH_AND_EXPR
law at redhat dot com
gcc-bugzilla@gcc.gnu.org
Thu Sep 8 19:04:00 GMT 2005
------- Additional Comments From law at redhat dot com 2005-09-08 19:04 -------
Subject: Re: VRP/DOM does not like
TRUTH_AND_EXPR
On Thu, 2005-09-08 at 18:20 +0000, dnovillo at gcc dot gnu dot org
wrote:
> ------- Additional Comments From dnovillo at gcc dot gnu dot org 2005-09-08 18:20 -------
>
> This would be fixable inside VRP. Essentially we would need to insert chains of
> ASSERT_EXPRs to represent various predicates:
>
> D.1613_3 = x_2 > 5555;
> D.1614_5 = y_4 <= 6665;
> D.1615_6 = D.1613_3 && D.1614_5;
> if (D.1615_6) goto <L0>; else goto <L8>;
>
> At label L0, we know that:
>
> D.1615_10 = 1;
> D.1613_11 = 1;
> D.1614_12 = 1;
> y_13 = ASSERT_EXPR <y_4, y_4 <= 6665>;
> x_14 = ASSERT_EXPR <x_2, x_2 > 5555>;
>
> which is a bit sickening. It would be Much Better to avoid creating these
> obtuse predicates in fold(), though.
Well, we have a long standing problem with fold using BRANCH_COST to
determine how best to implement certain conditionals. But even if that
were removed, it's fairly straightforward for a programmer (or better
yet some automated code generator) to create these "obtuse" predicates.
I think we'd be better off teaching VRP how to cope with this.
Jeff
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15911
More information about the Gcc-bugs
mailing list