------- Additional Comments From ebotcazou at gcc dot gnu dot org  2005-06-17 
19:56 -------
Well, it seems to me that the culprit is fold, no?

            else if (!in_gimple_form
                     && TREE_INT_CST_HIGH (arg1) == signed_max_hi
                     && TREE_INT_CST_LOW (arg1) == signed_max_lo
                     && TYPE_UNSIGNED (TREE_TYPE (arg1))
                     /* signed_type does not work on pointer types.  */
                     && INTEGRAL_TYPE_P (TREE_TYPE (arg1)))
              {
                /* The following case also applies to X < signed_max+1
                   and X >= signed_max+1 because previous transformations.  */
                if (code == LE_EXPR || code == GT_EXPR)
                  {
                    tree st0, st1;
                    st0 = lang_hooks.types.signed_type (TREE_TYPE (arg0));
                    st1 = lang_hooks.types.signed_type (TREE_TYPE (arg1));
                    return fold
                      (build2 (code == LE_EXPR ? GE_EXPR: LT_EXPR,
                               type, fold_convert (st0, arg0),
                               fold_convert (st1, integer_zero_node)));
                  }
              }

(gdb) p debug_tree(arg0)
 <var_decl 0x556e1d80 J4b
    type <integer_type 0x556d9144 character sizes-gimplified public visited
unsigned QI
        size <integer_cst 0x556a61f8 constant invariant visited 8>
        unit size <integer_cst 0x556a6210 constant invariant visited 1>
        user align 8 symtab 0 alias set -1 precision 8 min <integer_cst
0x556d71e0 0> max <integer_cst 0x556d71f8 255> RM size <integer_cst 0x556a61f8 
8>
        pointer_to_this <pointer_type 0x556d93cc access_character>>
    unsigned ignored QI file ../../asets.adb line 3 size <integer_cst 0x556a61f8
8> unit size <integer_cst 0x556a6210 1>
    align 8 context <function_decl 0x556e0144 asets___elabb> initial
<integer_cst 0x556d71e0 0>>
$13 = void
(gdb) p debug_tree(arg1)
 <integer_cst 0x556e3030 type <integer_type 0x556d9144 character> constant
invariant 127>
$14 = void
(gdb) p code
$15 = LE_EXPR


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21959

Reply via email to