From 25e42e9d5a7263e8b8f1842bf967f9606df88c8a Mon Sep 17 00:00:00 2001 From: "Kaveh R. Ghazi" Date: Sat, 18 Jan 2003 03:07:26 +0000 Subject: [PATCH] * ra-build.c (undef_to_size_word): Avoid `switch' warning. From-SVN: r61464 --- gcc/ChangeLog | 4 ++++ gcc/ra-build.c | 45 +++++++++++++++++++++------------------------ 2 files changed, 25 insertions(+), 24 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 31206e760e7..fc72b012312 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2003-01-17 Kaveh R. Ghazi + + * ra-build.c (undef_to_size_word): Avoid `switch' warning. + 2003-01-17 Dale Johannesen * config/rs6000/rs6000.md (*floatsidf2_internal): Add earlyclobbers. diff --git a/gcc/ra-build.c b/gcc/ra-build.c index d5d923eba02..91bc0145ba2 100644 --- a/gcc/ra-build.c +++ b/gcc/ra-build.c @@ -398,8 +398,9 @@ undef_to_size_word (reg, undefined) } /* Otherwise we handle certain cases directly. */ - switch (*undefined) - { + if (*undefined <= 0xffff) + switch ((int) *undefined) + { case 0x00f0 : *undefined = 0; return BL_TO_WORD (4, 4); case 0x00ff : *undefined = 0; return BL_TO_WORD (0, 8); case 0x0f00 : *undefined = 0; return BL_TO_WORD (8, 4); @@ -413,29 +414,25 @@ undef_to_size_word (reg, undefined) case 0xff00 : *undefined = 0; return BL_TO_WORD (8, 8); case 0xfff0 : *undefined = 0xf0; return BL_TO_WORD (8, 8); case 0xffff : *undefined = 0; return BL_TO_WORD (0, 16); + } - /* And if nothing matched fall back to the general solution. - For now unknown undefined bytes are converted to sequences - of maximal length 4 bytes. We could make this larger if - necessary. */ - default : - { - unsigned HOST_WIDE_INT u = *undefined; - int word; - struct undef_table_s tab; - for (word = 0; (u & 15) == 0; word += 4) - u >>= 4; - u = u & 15; - tab = undef_table[u]; - u = tab.new_undef; - u = (*undefined & ~((unsigned HOST_WIDE_INT)15 << word)) - | (u << word); - *undefined = u; - /* Size remains the same, only the begin is moved up move bytes. */ - return tab.size_word + BL_TO_WORD (word, 0); - } - break; - } + /* And if nothing matched fall back to the general solution. For + now unknown undefined bytes are converted to sequences of maximal + length 4 bytes. We could make this larger if necessary. */ + { + unsigned HOST_WIDE_INT u = *undefined; + int word; + struct undef_table_s tab; + for (word = 0; (u & 15) == 0; word += 4) + u >>= 4; + u = u & 15; + tab = undef_table[u]; + u = tab.new_undef; + u = (*undefined & ~((unsigned HOST_WIDE_INT)15 << word)) | (u << word); + *undefined = u; + /* Size remains the same, only the begin is moved up move bytes. */ + return tab.size_word + BL_TO_WORD (word, 0); + } } /* Put the above three functions together. For a set of undefined bytes -- 2.30.2