------- Additional Comments From rsandifo at gcc dot gnu dot org  2005-07-27 
17:31 -------
This seems to be caused by:

2004-02-15  Roger Sayle  <[EMAIL PROTECTED]>

        Backport from mainline:

        2004-02-07  Roger Sayle  <[EMAIL PROTECTED]>
        PR middle-end/13696
        * fold-const.c (fold_convert): New function to provide type
        conversion to the middle-end without using convert.
        (negate_expr, associate_trees, size_diffop, omit_one_operand,
        operand_equal_for_comparison_p, pedantic_omit_one_operand,
        invert_truthvalue, optimize_bit_field_compare, range_binop,
        decode_field_reference, make_range, build_range_check, unextend,
        fold_truthop, extract_muldiv_1, fold_mathfn_compare,
        fold_binary_op_with_conditional_arg, fold_inf_compare,
        fold_single_bit_test, fold, multiple_of_p): Replace all calls to
        convert with calls to fold_convert.

convert() uses CONVERT_EXPR rather than NOP_EXPR for pointer-to-integer
conversions, but after the patch above, the original <CONVERT_EXPR int foo>
will be "folded" to <NOP_EXPR int foo>.

On 3.4, get_narrower(<NOP_EXPR int foo>) returns "foo", which has
a pointer type, and causes the segfault in shorten_compare().
This was fixed (worked around?) on mainline by:

2004-07-08  Alexandre Oliva  <[EMAIL PROTECTED]>

        Introduce H8SX support.
        ....
        2004-06-16  Alexandre Oliva  <[EMAIL PROTECTED]>
        * tree.c (get_narrower): Don't narrow integral types into
        non-integral types.

and backporting that patch seems to fix the testcase.

I'm not a tree expert, and I can't find any discussion of Alex's patch:

    http://gcc.gnu.org/ml/gcc-patches/2004-06/msg01644.html

so I'm not sure if CONVERT_EXPR really is required here.  But given
that this bug is specific to a release branch, and that the branch
is deep into "maintenance only" mode, I think that backporting
Alex's patch is the best fix here.  I'm regression testing it now.

Richard


-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
         AssignedTo|unassigned at gcc dot gnu   |rsandifo at gcc dot gnu dot
                   |dot org                     |org
             Status|NEW                         |ASSIGNED
   Last reconfirmed|2005-07-21 16:36:13         |2005-07-27 17:31:33
               date|                            |


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

Reply via email to