------- Additional Comments From danglin at gcc dot gnu dot org 2005-01-09 16:08 ------- Could you test this change? I've done a full bootstrap with an x86 cross to vax-ultrix but this doesn't provide a full test.
The ICE was introduced in the 3.4 branch when the macro RTX_COSTS was removed. This macro contained a switch statement containing a list of codes that vax_rtx_costs could handle. This list appeared redundant but it was in fact protecting vax_rtx_costs from being exposed to rts's such EXPR_LIST that it wasn't designed to handle. I've now reworked vax_rtx_costs to eliminate an unnecessary calling layer and to return false for rtx codes that it can't handle. In doing this rework, it became clear that vax_rtx_costs was broken in a number of ways: 1) Various rtx codes used in the machine definition were missing, 2) The POST_INC and PRE_DEC codes were not accessible in 3.3 and earlier, 3) The operands for NEG and NOT were not being included in the cost estimate. I've tried to fix the ICE and the above problems. The missing codes are given a default cost of 3 which certainly isn't right. However, as can be seen from the comments in the function, the cost estimates are only approximate and variations occur from cpu to cpu. I will try to test the patch latter but my vax is currently busy doing a 3.3 build. -- What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |WAITING http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15491