(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
avr/
pr71676-1.c
       1  /* { dg-do run } */
       2  /* { dg-options "-Os -Wno-overflow -fno-tree-switch-conversion" } */
       3  
       4  #include "exit-abort.h"
       5  volatile unsigned char y;
       6  
       7  unsigned char __attribute__((noinline,noclone))
       8  foo1 (char x)
       9  {
      10    switch (x)
      11      {
      12      case (char)0x11: y = 7; break;
      13      case (char)0x12: y = 4; break;
      14      case (char)0x13: y = 8; break;
      15      case (char)0x14: y = 21; break;
      16      case (char)0x15: y = 65; break;
      17      case (char)0x16: y = 27; break;
      18      case (char)0x17: y = 72; break;
      19      case (char)0x18: y = 39; break;
      20      default: y=0;
      21      }
      22    return y;
      23  }
      24  
      25  unsigned char __attribute__((noinline,noclone))
      26  foo2 (char x)
      27  {
      28    switch (x)
      29      {
      30      case 0x01: y = 7; break;
      31      case 0x02: y = 4; break;
      32      case 0x03: y = 8; break;
      33      case 0x04: y = 21; break;
      34      case 0x05: y = 65; break;
      35      case 0x06: y = 27; break;
      36      case 0x07: y = 72; break;
      37      case 0x08: y = 39; break;
      38      default: y=0;
      39      }
      40    return y;
      41  }
      42  
      43  unsigned char __attribute__((noinline,noclone))
      44  foo3 (char x)
      45  {
      46    switch (x)
      47      {
      48      case 0x1000001L: y = 7; break;
      49      case 0x1000002L: y = 4; break;
      50      case 0x1000003L: y = 8; break;
      51      case 0x1000004L: y = 21; break;
      52      case 0x1000005L: y = 65; break;
      53      case 0x1000006L: y = 27; break;
      54      case 0x1000007L: y = 72; break;
      55      case 0x1000008L: y = 39; break;
      56      default: y=0;
      57      }
      58    return y;
      59  }
      60  
      61  unsigned char __attribute__((noinline,noclone))
      62  foo4 (char x)
      63  {
      64    switch (x)
      65      {
      66      case 0x100000001LL: y = 7; break;
      67      case 0x100000002LL: y = 4; break;
      68      case 0x100000003LL: y = 8; break;
      69      case 0x100000004LL: y = 21; break;
      70      case 0x100000005LL: y = 65; break;
      71      case 0x100000006LL: y = 27; break;
      72      case 0x100000007LL: y = 72; break;
      73      case 0x100000008LL: y = 39; break;
      74      default: y=0;
      75      }
      76    return y;
      77  }
      78  
      79  unsigned char __attribute__((noinline,noclone))
      80  foo5 (int x)
      81  {
      82    switch (x)
      83      {
      84      case (char)0x11: y = 7; break;
      85      case (char)0x12: y = 4; break;
      86      case (char)0x13: y = 8; break;
      87      case (char)0x14: y = 21; break;
      88      case (char)0x15: y = 65; break;
      89      case (char)0x16: y = 27; break;
      90      case (char)0x17: y = 72; break;
      91      case (char)0x18: y = 39; break;
      92      default: y=0;
      93      }
      94    return y;
      95  }
      96  
      97  unsigned char __attribute__((noinline,noclone))
      98  foo6 (int x)
      99  {
     100    switch (x)
     101      {
     102      case 0x101: y = 7; break;
     103      case 0x102: y = 4; break;
     104      case 0x103: y = 8; break;
     105      case 0x104: y = 21; break;
     106      case 0x105: y = 65; break;
     107      case 0x106: y = 27; break;
     108      case 0x107: y = 72; break;
     109      case 0x108: y = 39; break;
     110      default: y=0;
     111      }
     112    return y;
     113  }
     114  
     115  unsigned char __attribute__((noinline,noclone))
     116  foo7 (int x)
     117  {
     118    switch (x)
     119      {
     120      case 0x1000001L: y = 7; break;
     121      case 0x1000002L: y = 4; break;
     122      case 0x1000003L: y = 8; break;
     123      case 0x1000004L: y = 21; break;
     124      case 0x1000005L: y = 65; break;
     125      case 0x1000006L: y = 27; break;
     126      case 0x1000007L: y = 72; break;
     127      case 0x1000008L: y = 39; break;
     128      default: y=0;
     129      }
     130    return y;
     131  }
     132  
     133  unsigned char __attribute__((noinline,noclone))
     134  foo8 (int x)
     135  {
     136    switch (x)
     137      {
     138      case 0x100000001LL: y = 7; break;
     139      case 0x100000002LL: y = 4; break;
     140      case 0x100000003LL: y = 8; break;
     141      case 0x100000004LL: y = 21; break;
     142      case 0x100000005LL: y = 65; break;
     143      case 0x100000006LL: y = 27; break;
     144      case 0x100000007LL: y = 72; break;
     145      case 0x100000008LL: y = 39; break;
     146      default: y=0;
     147      }
     148    return y;
     149  }
     150  
     151  unsigned char __attribute__((noinline,noclone))
     152  foo9 (long x)
     153  {
     154    switch (x)
     155      {
     156      case (char)0x11: y = 7; break;
     157      case (char)0x12: y = 4; break;
     158      case (char)0x13: y = 8; break;
     159      case (char)0x14: y = 21; break;
     160      case (char)0x15: y = 65; break;
     161      case (char)0x16: y = 27; break;
     162      case (char)0x17: y = 72; break;
     163      case (char)0x18: y = 39; break;
     164      default: y=0;
     165      }
     166    return y;
     167  }
     168  
     169  unsigned char __attribute__((noinline,noclone))
     170  foo10 (unsigned long x)
     171  {
     172    switch (x)
     173      {
     174      case 0x100: y = 39; break;
     175      case 0x101: y = 7; break;
     176      case 0x102: y = 4; break;
     177      case 0x103: y = 8; break;
     178      case 0x104: y = 21; break;
     179      case 0x105: y = 65; break;
     180      case 0x106: y = 27; break;
     181      case 0x107: y = 72; break;
     182      default: y=0;
     183      }
     184    return y;
     185  }
     186  
     187  unsigned char __attribute__((noinline,noclone))
     188  foo11 (long x)
     189  {
     190    switch (x)
     191      {
     192      case 0x1000001L: y = 7; break;
     193      case 0x1000002L: y = 4; break;
     194      case 0x1000003L: y = 8; break;
     195      case 0x1000004L: y = 21; break;
     196      case 0x1000005L: y = 65; break;
     197      case 0x1000006L: y = 27; break;
     198      case 0x1000007L: y = 72; break;
     199      case 0x1000008L: y = 39; break;
     200      default: y=0;
     201      }
     202    return y;
     203  }
     204  
     205  unsigned char __attribute__((noinline,noclone))
     206  foo12 (long x)
     207  {
     208    switch (x)
     209      {
     210      case 0x100000001LL: y = 7; break;
     211      case 0x100000002LL: y = 4; break;
     212      case 0x100000003LL: y = 8; break;
     213      case 0x100000004LL: y = 21; break;
     214      case 0x100000005LL: y = 65; break;
     215      case 0x100000006LL: y = 27; break;
     216      case 0x100000007LL: y = 72; break;
     217      case 0x100000008LL: y = 39; break;
     218      default: y=0;
     219      }
     220    return y;
     221  }
     222  
     223  unsigned char __attribute__((noinline,noclone))
     224  foo13 (long long x)
     225  {
     226    switch (x)
     227      {
     228      case (char)0x11: y = 7; break;
     229      case (char)0x12: y = 4; break;
     230      case (char)0x13: y = 8; break;
     231      case (char)0x14: y = 21; break;
     232      case (char)0x15: y = 65; break;
     233      case (char)0x16: y = 27; break;
     234      case (char)0x17: y = 72; break;
     235      case (char)0x18: y = 39; break;
     236      default: y=0;
     237      }
     238    return y;
     239  }
     240  
     241  unsigned char __attribute__((noinline,noclone))
     242  foo14 (long long x)
     243  {
     244    switch (x)
     245      {
     246      case 0x101: y = 7; break;
     247      case 0x102: y = 4; break;
     248      case 0x103: y = 8; break;
     249      case 0x104: y = 21; break;
     250      case 0x105: y = 65; break;
     251      case 0x106: y = 27; break;
     252      case 0x107: y = 72; break;
     253      case 0x108: y = 39; break;
     254      default: y=0;
     255      }
     256    return y;
     257  }
     258  
     259  unsigned char __attribute__((noinline,noclone))
     260  foo15 (long long x)
     261  {
     262    switch (x)
     263      {
     264      case 0x1000001L: y = 7; break;
     265      case 0x1000002L: y = 4; break;
     266      case 0x1000003L: y = 8; break;
     267      case 0x1000004L: y = 21; break;
     268      case 0x1000005L: y = 65; break;
     269      case 0x1000006L: y = 27; break;
     270      case 0x1000007L: y = 72; break;
     271      case 0x1000008L: y = 39; break;
     272      default: y=0;
     273      }
     274    return y;
     275  }
     276  
     277  
     278  unsigned char __attribute__((noinline,noclone))
     279  foo16 (long long x)
     280  {
     281    switch (x)
     282      {
     283      case 0x100000001LL: y = 7; break;
     284      case 0x100000002LL: y = 4; break;
     285      case 0x100000003LL: y = 8; break;
     286      case 0x100000004LL: y = 21; break;
     287      case 0x100000005LL: y = 65; break;
     288      case 0x100000006LL: y = 27; break;
     289      case 0x100000007LL: y = 72; break;
     290      case 0x100000008LL: y = 39; break;
     291      default: y=0;
     292      }
     293    return y;
     294  }
     295  
     296  int main ()
     297  {
     298    if (foo1 (0x13) != 8)
     299      abort();
     300  
     301    if (foo2 (0x06) != 27)
     302      abort();
     303  
     304    if (foo3 (0x02) != 4)
     305      abort();
     306  
     307    if (foo4 (0x01) != 7)
     308      abort();
     309  
     310    if (foo5 (0x15) != 65)
     311      abort();
     312  
     313    if (foo6 (0x103) != 8)
     314      abort();
     315  
     316    if (foo7 (0x04) != 21)
     317      abort();
     318  
     319    if (foo8 (0x07) != 72)
     320      abort();
     321  
     322    if (foo9 (0x10000011L) != 0)
     323      abort();
     324  
     325    if (foo10 (0x1000105L) != 0)
     326      abort();
     327  
     328    if (foo11 (0x1000008L) != 39)
     329      abort();
     330  
     331    if (foo12 (0x1000004L) != 0)
     332      abort();
     333  
     334    if (foo13 (0x109LL) != 0)
     335      abort();
     336  
     337    if (foo14 (0x108LL) != 39)
     338      abort();
     339  
     340    if (foo15 (0x1000001LL) != 7)
     341      abort();
     342  
     343    if (foo16 (0x100000004LL) != 21)
     344      abort();
     345  
     346    return 0;
     347  }