| /* { dg-do run } */ |
| /* { dg-options "-Os -Wno-overflow -fno-tree-switch-conversion" } */ |
| |
| #include "exit-abort.h" |
| volatile unsigned char y; |
| |
| unsigned char __attribute__((noinline,noclone)) |
| foo1 (char x) |
| { |
| switch (x) |
| { |
| case (char)0x11: y = 7; break; |
| case (char)0x12: y = 4; break; |
| case (char)0x13: y = 8; break; |
| case (char)0x14: y = 21; break; |
| case (char)0x15: y = 65; break; |
| case (char)0x16: y = 27; break; |
| case (char)0x17: y = 72; break; |
| case (char)0x18: y = 39; break; |
| default: y=0; |
| } |
| return y; |
| } |
| |
| unsigned char __attribute__((noinline,noclone)) |
| foo2 (char x) |
| { |
| switch (x) |
| { |
| case 0x01: y = 7; break; |
| case 0x02: y = 4; break; |
| case 0x03: y = 8; break; |
| case 0x04: y = 21; break; |
| case 0x05: y = 65; break; |
| case 0x06: y = 27; break; |
| case 0x07: y = 72; break; |
| case 0x08: y = 39; break; |
| default: y=0; |
| } |
| return y; |
| } |
| |
| unsigned char __attribute__((noinline,noclone)) |
| foo3 (char x) |
| { |
| switch (x) |
| { |
| case 0x1000001L: y = 7; break; |
| case 0x1000002L: y = 4; break; |
| case 0x1000003L: y = 8; break; |
| case 0x1000004L: y = 21; break; |
| case 0x1000005L: y = 65; break; |
| case 0x1000006L: y = 27; break; |
| case 0x1000007L: y = 72; break; |
| case 0x1000008L: y = 39; break; |
| default: y=0; |
| } |
| return y; |
| } |
| |
| unsigned char __attribute__((noinline,noclone)) |
| foo4 (char x) |
| { |
| switch (x) |
| { |
| case 0x100000001LL: y = 7; break; |
| case 0x100000002LL: y = 4; break; |
| case 0x100000003LL: y = 8; break; |
| case 0x100000004LL: y = 21; break; |
| case 0x100000005LL: y = 65; break; |
| case 0x100000006LL: y = 27; break; |
| case 0x100000007LL: y = 72; break; |
| case 0x100000008LL: y = 39; break; |
| default: y=0; |
| } |
| return y; |
| } |
| |
| unsigned char __attribute__((noinline,noclone)) |
| foo5 (int x) |
| { |
| switch (x) |
| { |
| case (char)0x11: y = 7; break; |
| case (char)0x12: y = 4; break; |
| case (char)0x13: y = 8; break; |
| case (char)0x14: y = 21; break; |
| case (char)0x15: y = 65; break; |
| case (char)0x16: y = 27; break; |
| case (char)0x17: y = 72; break; |
| case (char)0x18: y = 39; break; |
| default: y=0; |
| } |
| return y; |
| } |
| |
| unsigned char __attribute__((noinline,noclone)) |
| foo6 (int x) |
| { |
| switch (x) |
| { |
| case 0x101: y = 7; break; |
| case 0x102: y = 4; break; |
| case 0x103: y = 8; break; |
| case 0x104: y = 21; break; |
| case 0x105: y = 65; break; |
| case 0x106: y = 27; break; |
| case 0x107: y = 72; break; |
| case 0x108: y = 39; break; |
| default: y=0; |
| } |
| return y; |
| } |
| |
| unsigned char __attribute__((noinline,noclone)) |
| foo7 (int x) |
| { |
| switch (x) |
| { |
| case 0x1000001L: y = 7; break; |
| case 0x1000002L: y = 4; break; |
| case 0x1000003L: y = 8; break; |
| case 0x1000004L: y = 21; break; |
| case 0x1000005L: y = 65; break; |
| case 0x1000006L: y = 27; break; |
| case 0x1000007L: y = 72; break; |
| case 0x1000008L: y = 39; break; |
| default: y=0; |
| } |
| return y; |
| } |
| |
| unsigned char __attribute__((noinline,noclone)) |
| foo8 (int x) |
| { |
| switch (x) |
| { |
| case 0x100000001LL: y = 7; break; |
| case 0x100000002LL: y = 4; break; |
| case 0x100000003LL: y = 8; break; |
| case 0x100000004LL: y = 21; break; |
| case 0x100000005LL: y = 65; break; |
| case 0x100000006LL: y = 27; break; |
| case 0x100000007LL: y = 72; break; |
| case 0x100000008LL: y = 39; break; |
| default: y=0; |
| } |
| return y; |
| } |
| |
| unsigned char __attribute__((noinline,noclone)) |
| foo9 (long x) |
| { |
| switch (x) |
| { |
| case (char)0x11: y = 7; break; |
| case (char)0x12: y = 4; break; |
| case (char)0x13: y = 8; break; |
| case (char)0x14: y = 21; break; |
| case (char)0x15: y = 65; break; |
| case (char)0x16: y = 27; break; |
| case (char)0x17: y = 72; break; |
| case (char)0x18: y = 39; break; |
| default: y=0; |
| } |
| return y; |
| } |
| |
| unsigned char __attribute__((noinline,noclone)) |
| foo10 (unsigned long x) |
| { |
| switch (x) |
| { |
| case 0x100: y = 39; break; |
| case 0x101: y = 7; break; |
| case 0x102: y = 4; break; |
| case 0x103: y = 8; break; |
| case 0x104: y = 21; break; |
| case 0x105: y = 65; break; |
| case 0x106: y = 27; break; |
| case 0x107: y = 72; break; |
| default: y=0; |
| } |
| return y; |
| } |
| |
| unsigned char __attribute__((noinline,noclone)) |
| foo11 (long x) |
| { |
| switch (x) |
| { |
| case 0x1000001L: y = 7; break; |
| case 0x1000002L: y = 4; break; |
| case 0x1000003L: y = 8; break; |
| case 0x1000004L: y = 21; break; |
| case 0x1000005L: y = 65; break; |
| case 0x1000006L: y = 27; break; |
| case 0x1000007L: y = 72; break; |
| case 0x1000008L: y = 39; break; |
| default: y=0; |
| } |
| return y; |
| } |
| |
| unsigned char __attribute__((noinline,noclone)) |
| foo12 (long x) |
| { |
| switch (x) |
| { |
| case 0x100000001LL: y = 7; break; |
| case 0x100000002LL: y = 4; break; |
| case 0x100000003LL: y = 8; break; |
| case 0x100000004LL: y = 21; break; |
| case 0x100000005LL: y = 65; break; |
| case 0x100000006LL: y = 27; break; |
| case 0x100000007LL: y = 72; break; |
| case 0x100000008LL: y = 39; break; |
| default: y=0; |
| } |
| return y; |
| } |
| |
| unsigned char __attribute__((noinline,noclone)) |
| foo13 (long long x) |
| { |
| switch (x) |
| { |
| case (char)0x11: y = 7; break; |
| case (char)0x12: y = 4; break; |
| case (char)0x13: y = 8; break; |
| case (char)0x14: y = 21; break; |
| case (char)0x15: y = 65; break; |
| case (char)0x16: y = 27; break; |
| case (char)0x17: y = 72; break; |
| case (char)0x18: y = 39; break; |
| default: y=0; |
| } |
| return y; |
| } |
| |
| unsigned char __attribute__((noinline,noclone)) |
| foo14 (long long x) |
| { |
| switch (x) |
| { |
| case 0x101: y = 7; break; |
| case 0x102: y = 4; break; |
| case 0x103: y = 8; break; |
| case 0x104: y = 21; break; |
| case 0x105: y = 65; break; |
| case 0x106: y = 27; break; |
| case 0x107: y = 72; break; |
| case 0x108: y = 39; break; |
| default: y=0; |
| } |
| return y; |
| } |
| |
| unsigned char __attribute__((noinline,noclone)) |
| foo15 (long long x) |
| { |
| switch (x) |
| { |
| case 0x1000001L: y = 7; break; |
| case 0x1000002L: y = 4; break; |
| case 0x1000003L: y = 8; break; |
| case 0x1000004L: y = 21; break; |
| case 0x1000005L: y = 65; break; |
| case 0x1000006L: y = 27; break; |
| case 0x1000007L: y = 72; break; |
| case 0x1000008L: y = 39; break; |
| default: y=0; |
| } |
| return y; |
| } |
| |
| |
| unsigned char __attribute__((noinline,noclone)) |
| foo16 (long long x) |
| { |
| switch (x) |
| { |
| case 0x100000001LL: y = 7; break; |
| case 0x100000002LL: y = 4; break; |
| case 0x100000003LL: y = 8; break; |
| case 0x100000004LL: y = 21; break; |
| case 0x100000005LL: y = 65; break; |
| case 0x100000006LL: y = 27; break; |
| case 0x100000007LL: y = 72; break; |
| case 0x100000008LL: y = 39; break; |
| default: y=0; |
| } |
| return y; |
| } |
| |
| int main () |
| { |
| if (foo1 (0x13) != 8) |
| abort(); |
| |
| if (foo2 (0x06) != 27) |
| abort(); |
| |
| if (foo3 (0x02) != 4) |
| abort(); |
| |
| if (foo4 (0x01) != 7) |
| abort(); |
| |
| if (foo5 (0x15) != 65) |
| abort(); |
| |
| if (foo6 (0x103) != 8) |
| abort(); |
| |
| if (foo7 (0x04) != 21) |
| abort(); |
| |
| if (foo8 (0x07) != 72) |
| abort(); |
| |
| if (foo9 (0x10000011L) != 0) |
| abort(); |
| |
| if (foo10 (0x1000105L) != 0) |
| abort(); |
| |
| if (foo11 (0x1000008L) != 39) |
| abort(); |
| |
| if (foo12 (0x1000004L) != 0) |
| abort(); |
| |
| if (foo13 (0x109LL) != 0) |
| abort(); |
| |
| if (foo14 (0x108LL) != 39) |
| abort(); |
| |
| if (foo15 (0x1000001LL) != 7) |
| abort(); |
| |
| if (foo16 (0x100000004LL) != 21) |
| abort(); |
| |
| return 0; |
| } |