There are at least two cases where tree-switch-conversion leads
to unpleasant resource allocation:

PR49857
    The lookup tables lives in RAM.  This is the case for all
    devices that locate .rodata in RAM, which is for almost
    all AVR devices.

PR81540
    Code is bloated for 64-bit inputs.

Ok to apply?

Johann

--

AVR: Disable tree-switch-conversion per default.

There are at least two cases where tree-switch-conversion leads
to unpleasant resource allocation:

PR49857
    The lookup table lives in RAM.  This is the case for all
    devices that locate .rodata in RAM, which is for almost
    all AVR devices.

PR81540
    Code is bloated for 64-bit inputs.

gcc/
        PR target/81540
        PR target/49857
        * common/config/avr/avr-common.cc: Disable -ftree-switch-conversion.
diff --git a/gcc/common/config/avr/avr-common.cc b/gcc/common/config/avr/avr-common.cc
index d8b982c4fa6..914b7417fda 100644
--- a/gcc/common/config/avr/avr-common.cc
+++ b/gcc/common/config/avr/avr-common.cc
@@ -29,6 +29,13 @@
 /* Implement TARGET_OPTION_OPTIMIZATION_TABLE.  */
 static const struct default_options avr_option_optimization_table[] =
   {
+    // The lookup table from tree-swicth-conversion.cc lives in .rodata
+    // and hence consumes RAM on almost all devices.  As PR49857 has
+    // been rejected several times for non-technical reasons, just
+    // disable -ftree-switch-conversion by default.  But even with PR49857
+    // in place there remains PR81540, which cannot be filtered out since
+    // the pass has no way to hook in.
+    { OPT_LEVELS_ALL, OPT_ftree_switch_conversion, NULL, 0 },
     // The only effect of -fcaller-saves might be that it triggers
     // a frame without need when it tries to be smart around calls.
     { OPT_LEVELS_ALL, OPT_fcaller_saves, NULL, 0 },

Reply via email to