Commit 25e42e9d by Kaveh R. Ghazi Committed by Kaveh Ghazi

* ra-build.c (undef_to_size_word): Avoid `switch' warning.

From-SVN: r61464
parent 6f9c81f5
2003-01-17 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* ra-build.c (undef_to_size_word): Avoid `switch' warning.
2003-01-17 Dale Johannesen <dalej@apple.com> 2003-01-17 Dale Johannesen <dalej@apple.com>
* config/rs6000/rs6000.md (*floatsidf2_internal): Add earlyclobbers. * config/rs6000/rs6000.md (*floatsidf2_internal): Add earlyclobbers.
......
...@@ -398,8 +398,9 @@ undef_to_size_word (reg, undefined) ...@@ -398,8 +398,9 @@ undef_to_size_word (reg, undefined)
} }
/* Otherwise we handle certain cases directly. */ /* 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 0x00f0 : *undefined = 0; return BL_TO_WORD (4, 4);
case 0x00ff : *undefined = 0; return BL_TO_WORD (0, 8); case 0x00ff : *undefined = 0; return BL_TO_WORD (0, 8);
case 0x0f00 : *undefined = 0; return BL_TO_WORD (8, 4); case 0x0f00 : *undefined = 0; return BL_TO_WORD (8, 4);
...@@ -413,29 +414,25 @@ undef_to_size_word (reg, undefined) ...@@ -413,29 +414,25 @@ undef_to_size_word (reg, undefined)
case 0xff00 : *undefined = 0; return BL_TO_WORD (8, 8); case 0xff00 : *undefined = 0; return BL_TO_WORD (8, 8);
case 0xfff0 : *undefined = 0xf0; 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); case 0xffff : *undefined = 0; return BL_TO_WORD (0, 16);
}
/* And if nothing matched fall back to the general solution. /* And if nothing matched fall back to the general solution. For
For now unknown undefined bytes are converted to sequences now unknown undefined bytes are converted to sequences of maximal
of maximal length 4 bytes. We could make this larger if length 4 bytes. We could make this larger if necessary. */
necessary. */ {
default : unsigned HOST_WIDE_INT u = *undefined;
{ int word;
unsigned HOST_WIDE_INT u = *undefined; struct undef_table_s tab;
int word; for (word = 0; (u & 15) == 0; word += 4)
struct undef_table_s tab; u >>= 4;
for (word = 0; (u & 15) == 0; word += 4) u = u & 15;
u >>= 4; tab = undef_table[u];
u = u & 15; u = tab.new_undef;
tab = undef_table[u]; u = (*undefined & ~((unsigned HOST_WIDE_INT)15 << word)) | (u << word);
u = tab.new_undef; *undefined = u;
u = (*undefined & ~((unsigned HOST_WIDE_INT)15 << word)) /* Size remains the same, only the begin is moved up move bytes. */
| (u << word); return tab.size_word + BL_TO_WORD (word, 0);
*undefined = u; }
/* Size remains the same, only the begin is moved up move bytes. */
return tab.size_word + BL_TO_WORD (word, 0);
}
break;
}
} }
/* Put the above three functions together. For a set of undefined bytes /* Put the above three functions together. For a set of undefined bytes
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment