This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [patch gimplifier]: Boolify more strict conditional expressions and transform simple form to binary


On Wed, May 11, 2011 at 11:35 AM, Kai Tietz <ktietz70@googlemail.com> wrote:
> For more detail what happens and why this conditional handling is necessary:
>
> The sample code is:
>
> int
> foo (int a, int b)
> {
> ?return (a ? b != 3 : 0);
> }
>
> leads for variant without condition boolifying of arms to:
>
> ;; Function foo (foo)
>
> foo (int a, int b)
> {
> ?int D.1991;
> ?int D.1990;
> ?int D.1989;
>
> <bb 2>:
> ?D.1990_2 = a_1(D) != 0;
> ?D.1991_4 = b_3(D) != 3;
> ?D.1989_5 = D.1991_4 & D.1990_2;
> ?return D.1989_5;
>
> }

There is no TRUTH_* expr.  The patch should fix TRUTH_* expr types,
not everything else (I know tcc_comparison exprs have the same issue).

If you want to fix tcc_comparison results as well do so in gimplify_expr
(and adjust the type verifier similar to the TRUTH_ case).

Richard.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]