diff options
author | Richard Earnshaw <erich@gnu.org> | 1993-10-10 16:46:52 +0000 |
---|---|---|
committer | Richard Earnshaw <erich@gnu.org> | 1993-10-10 16:46:52 +0000 |
commit | abaa26e5b4a995988c18a3d22fbaf77526c7c424 (patch) | |
tree | 76b1c8e1c3f6441a8318f9e78b35784e133478bf | |
parent | 26563586437d27f43544bb2feb7ed0486621f796 (diff) | |
download | gcc-abaa26e5b4a995988c18a3d22fbaf77526c7c424.zip gcc-abaa26e5b4a995988c18a3d22fbaf77526c7c424.tar.gz gcc-abaa26e5b4a995988c18a3d22fbaf77526c7c424.tar.bz2 |
(const_ok_for_arm): cast constants to unsigned HOST_WIDE_INT.
(output_prologue): Sanity check the finite state machine.
(output_epilogue): Delete unused variable.
(final_prescan_insn): Always clear arm_target_insn when FSM goes to
state 0.
From-SVN: r5711
-rw-r--r-- | gcc/config/arm/arm.c | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index fa10ce2..8f77c77 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -142,9 +142,11 @@ const_ok_for_arm (i) do { - if ((i & mask & 0xffffffffu) == 0) + if ((i & mask & (unsigned HOST_WIDE_INT) 0xffffffff) == 0) return(TRUE); - mask = (mask << 2) | ((mask & 0xffffffffu) >> (32 - 2)) | ~0xffffffffu; + mask = + (mask << 2) | ((mask & (unsigned HOST_WIDE_INT) 0xffffffff) + >> (32 - 2)) | ~((unsigned HOST_WIDE_INT) 0xffffffff); } while (mask != ~0xFF); return (FALSE); @@ -1727,6 +1729,9 @@ output_prologue (f, frame_size) they were passed there. */ int store_arg_regs = 0; + if (arm_ccfsm_state || arm_target_insn) + abort (); /* Sanity check */ + return_used_this_function = 0; lr_save_eliminated = 0; @@ -1833,7 +1838,7 @@ output_epilogue (f, frame_size) FILE *f; int frame_size; { - int reg, live_regs_mask = 0, code_size = 0, fp_needed = 0; + int reg, live_regs_mask = 0, code_size = 0; /* If we need this then it will always be at lesat this much */ int floats_offset = 24; rtx operands[3]; @@ -2235,7 +2240,10 @@ final_prescan_insn (insn, opvec, noperands) if (arm_ccfsm_state == 4) { if (insn == arm_target_insn) + { + arm_target_insn = NULL; arm_ccfsm_state = 0; + } return; } @@ -2463,6 +2471,7 @@ final_prescan_insn (insn, opvec, noperands) /* Oh, dear! we ran off the end.. give up */ recog (PATTERN (insn), insn, NULL_PTR); arm_ccfsm_state = 0; + arm_target_insn = NULL; return; } arm_target_insn = this_insn; |