aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorGeorg-Johann Lay <avr@gjlay.de>2012-06-08 18:32:25 +0000
committerGeorg-Johann Lay <gjl@gcc.gnu.org>2012-06-08 18:32:25 +0000
commit102375cc1638bad5d52e899704dbd8d3afa0b557 (patch)
tree99a6b0ff22e48cf1f742d36c3ecc2f8b8114dd0e /gcc
parent98cf47d1a57c7c8f0541aa61488863f4864b0e40 (diff)
downloadgcc-102375cc1638bad5d52e899704dbd8d3afa0b557.zip
gcc-102375cc1638bad5d52e899704dbd8d3afa0b557.tar.gz
gcc-102375cc1638bad5d52e899704dbd8d3afa0b557.tar.bz2
avr.c (avr_case_values_threshold): Return 7.
* config/avr/avr.c (avr_case_values_threshold): Return 7. From-SVN: r188336
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/config/avr/avr.c12
2 files changed, 14 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 19cbade..1026c90 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,7 @@
+2012-06-08 Georg-Johann Lay <avr@gjlay.de>
+
+ * config/avr/avr.c (avr_case_values_threshold): Return 7.
+
2012-06-07 Andreas Schwab <schwab@linux-m68k.org>
* genhooks.c (main): Set progname.
diff --git a/gcc/config/avr/avr.c b/gcc/config/avr/avr.c
index 208f650..cd1a4af 100644
--- a/gcc/config/avr/avr.c
+++ b/gcc/config/avr/avr.c
@@ -9419,12 +9419,20 @@ avr_return_in_memory (const_tree type, const_tree fntype ATTRIBUTE_UNUSED)
return false;
}
-/* Worker function for CASE_VALUES_THRESHOLD. */
+
+/* Implement `CASE_VALUES_THRESHOLD'. */
+/* Supply the default for --param case-values-threshold=0 */
static unsigned int
avr_case_values_threshold (void)
{
- return (!AVR_HAVE_JMP_CALL || TARGET_CALL_PROLOGUES) ? 8 : 17;
+ /* The exact break-even point between a jump table and an if-else tree
+ depends on several factors not available here like, e.g. if 8-bit
+ comparisons can be used in the if-else tree or not, on the
+ range of the case values, if the case value can be reused, on the
+ register allocation, etc. '7' appears to be a good choice. */
+
+ return 7;
}