wide int patch #7: Replacement of INT_CST_LT and INT_CST_LT_UNSIGNED

Richard Biener richard.guenther@gmail.com
Fri Oct 19 08:35:00 GMT 2012


On Thu, Oct 18, 2012 at 7:32 PM, Kenneth Zadeck
<zadeck@naturalbridge.com> wrote:
> This patch replaces all instances of  INT_CST_LT and INT_CST_LT_UNSIGNED
> with
> the new functions tree_int_cst_lts_p and tree_int_cst_ltu_p.   With the new
> implementation of int_cst these functions will be too big to do inline.

These new function names are extremely confusing given that we already
have tree_int_cst_lt which does the right thing based on the signedness
of the INTEGER_CST trees.

The whole point of the macros was to be inlined and you break that.  That is,
for example

       if (unsignedp && unsignedp0)
        {
-         min_gt = INT_CST_LT_UNSIGNED (primop1, minval);
-         max_gt = INT_CST_LT_UNSIGNED (primop1, maxval);
-         min_lt = INT_CST_LT_UNSIGNED (minval, primop1);
-         max_lt = INT_CST_LT_UNSIGNED (maxval, primop1);
+         min_gt = tree_int_cst_ltu_p (primop1, minval);
+         max_gt = tree_int_cst_ltu_p (primop1, maxval);
+         min_lt = tree_int_cst_ltu_p (minval, primop1);
+         max_lt = tree_int_cst_ltu_p (maxval, primop1);
        }
       else
        {
-         min_gt = INT_CST_LT (primop1, minval);
-         max_gt = INT_CST_LT (primop1, maxval);
-         min_lt = INT_CST_LT (minval, primop1);
-         max_lt = INT_CST_LT (maxval, primop1);
+         min_gt = tree_int_cst_lts_p (primop1, minval);
...

could have just been

    min_gt = tree_int_cst_lt (primop1, minval);
....

without any sign check.

So if you think you need to kill the inlined variants please use the existing
tree_int_cst_lt instead.

Thanks,
Richard.

> This is a small patch that has no prerequisites.
>
> Tested on x86-64.
>
> kenny



More information about the Gcc-patches mailing list