From 2c01018fc8b33c49336de71df3a9fdb9366c5059 Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Wed, 9 Sep 1998 17:07:33 -0700 Subject: [PATCH] alpha.c (alphaev5_insn_pipe): Abort on default case. * alpha.c (alphaev5_insn_pipe): Abort on default case. (alphaev5_next_group): Swallow CLOBBERs and USEs. From-SVN: r22373 --- gcc/ChangeLog | 7 +++++++ gcc/config/alpha/alpha.c | 30 +++++++++++++++++------------- 2 files changed, 24 insertions(+), 13 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 9dcc189acbb..007a142edd4 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +Thu Sep 10 00:03:34 1998 Richard Henderson + + * alpha.c (alphaev5_insn_pipe): Abort on default case. + (alphaev5_next_group): Swallow CLOBBERs and USEs. + + * c-tree.h (warn_long_long): Declare it. + Wed Sep 9 23:31:36 1998 (Stephen L Moshier) * emit-rtl.c (gen_lowpart_common): Disable optimization of diff --git a/gcc/config/alpha/alpha.c b/gcc/config/alpha/alpha.c index e19ddab0fd8..f0795f3fa54 100644 --- a/gcc/config/alpha/alpha.c +++ b/gcc/config/alpha/alpha.c @@ -4327,8 +4327,10 @@ alphaev5_insn_pipe (insn) case TYPE_FMUL: return EV5_FM; + + default: + abort(); } - abort(); } /* IN_USE is a mask of the slots currently filled within the @@ -4347,13 +4349,14 @@ alphaev5_next_group (insn, pin_use, plen) len = in_use = 0; - if (GET_RTX_CLASS (GET_CODE (insn)) != 'i') - goto next; + if (GET_RTX_CLASS (GET_CODE (insn)) != 'i' + || GET_CODE (PATTERN (insn)) == CLOBBER + || GET_CODE (PATTERN (insn)) == USE) + goto next_and_done; - do + while (1) { enum alphaev5_pipe pipe; - rtx prev; pipe = alphaev5_insn_pipe (insn); switch (pipe) @@ -4370,7 +4373,7 @@ alphaev5_next_group (insn, pin_use, plen) len = -1; else len = get_attr_length (insn); - goto next; + goto next_and_done; /* ??? Most of the places below, we would like to abort, as it would indicate an error either in Haifa, or in the @@ -4439,28 +4442,29 @@ alphaev5_next_group (insn, pin_use, plen) /* ??? If this is predicted not-taken, slotting continues, except that no more IBR, FBR, or JSR insns may be slotted. */ if (GET_CODE (insn) == JUMP_INSN) - goto next; + goto next_and_done; + next: insn = next_nonnote_insn (insn); - if (GET_RTX_CLASS (GET_CODE (insn)) != 'i') + if (!insn || GET_RTX_CLASS (GET_CODE (insn)) != 'i') goto done; /* Let Haifa tell us where it thinks insn group boundaries are. */ if (GET_MODE (insn) == TImode) goto done; + if (GET_CODE (insn) == CLOBBER || GET_CODE (insn) == USE) + goto next; } - while (insn); + + next_and_done: + insn = next_nonnote_insn (insn); done: *plen = len; *pin_use = in_use; return insn; - - next: - insn = next_nonnote_insn (insn); - goto done; } static void -- 2.30.2