This is the mail archive of the gcc-bugs@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]

[Bug middle-end/38857] [4.4 Regression] ICE in selective scheduler



------- Comment #7 from amonakov at gcc dot gnu dot org  2009-01-22 12:19 -------
(In reply to comment #6)
> -static bool code_motion_path_driver (insn_t, av_set_t, ilist_t,
> -                                     cmpd_local_params_p, void *);
> +static int code_motion_path_driver (insn_t, av_set_t, ilist_t,
> +                                    cmpd_local_params_p, void *);
> 
> You probably don't want this bit...?
> 

The function returns -1 in some circumstances.  This change is not relevant to
the ICE in question, but is nevertheless a correction (maybe not the best, as
'return true' and 'return false' are used in function's body).  I'm not sure
what's best here -- to include this in PR fix submission, or as a separate
patch.

FWIW, there're a couple more unrelated changes:
1) check if a reg is actually a hard reg
       if (REG_P (*cur_rtx)
+          && HARD_REGISTER_P (*cur_rtx)
           && hard_regno_nregs[REGNO(*cur_rtx)][GET_MODE (*cur_rtx)] > 1)

and
2) Do not merge info from successors if not relevant
   /* Merge data, clean up, etc.  */
-  if (code_motion_path_driver_info->after_merge_succs)
+  if (res != -1 && code_motion_path_driver_info->after_merge_succs)
     code_motion_path_driver_info->after_merge_succs (&lparams, static_params);

Again, I will submit them separately if so desired.


-- 


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


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