stmt.c (emit_case_bit_tests): New routine to implement suitable switch statements...
authorRoger Sayle <roger@eyesopen.com>
Sat, 25 Jan 2003 17:30:29 +0000 (17:30 +0000)
committerRoger Sayle <sayle@gcc.gnu.org>
Sat, 25 Jan 2003 17:30:29 +0000 (17:30 +0000)
commit9bb231fd7aeb51f5bdfd40e89616ca1a6bc77eee
tree9c8023e7b287c57e4f064213bda30e0016c032ec
parenta073323c198e956e1645dbe302cb986b78c8a081
stmt.c (emit_case_bit_tests): New routine to implement suitable switch statements using the equivalent of "if...

* stmt.c (emit_case_bit_tests): New routine to implement suitable
switch statements using the equivalent of "if ((1<<x) & cst) ... ".
(case_bit_test_cmp): New comparison function for "qsort" to order
case_bit_tests by decreasing number of destination nodes.
(lshift_cheap_p): New function to determine if "1 << x" is cheap.
(expand_end_case_type): Use emit_case_bit_tests to implement
suitable switch statments.
(CASE_USE_BIT_TESTS): New target macro to disable the above.
* Makefile.in (stmt.o): Add dependency on optab.h.
* doc/tm.texi (CASE_USE_BIT_TESTS): Document new target macro.

* gcc.c-torture/execute/switch-1.c: New test case.

From-SVN: r61784
gcc/ChangeLog
gcc/Makefile.in
gcc/doc/tm.texi
gcc/stmt.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.c-torture/execute/switch-1.c [new file with mode: 0644]