Mercurial > hg > CbC > CbC_gcc
diff gcc/testsuite/c-c++-common/pr44715.c @ 145:1830386684a0
gcc-9.2.0
author | anatofuz |
---|---|
date | Thu, 13 Feb 2020 11:34:05 +0900 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gcc/testsuite/c-c++-common/pr44715.c Thu Feb 13 11:34:05 2020 +0900 @@ -0,0 +1,171 @@ +/* PR c/44715 */ +/* { dg-do run } */ +/* { dg-options "" } */ + +void +foo (int x, int y) +{ + int z; + switch (x) + { + case 0: + while (({ if (y) break; 0; })) + ; + __builtin_abort (); + break; + case 1: + do + ; + while (({ if (y) break; 0; })); + __builtin_abort (); + break; + case 2: + for (z = ({ if (y) break; 0; }); z < 5; z++) + ; + __builtin_abort (); + break; + case 3: + for (z = 0; z < ({ if (y) break; 5; }); z++) + ; + __builtin_abort (); + break; + case 4: + for (z = 0; z < 5; z += ({ if (y) break; 1; })) + ; + __builtin_abort (); + break; + case 5: + switch (({ if (y) break; 1; })) + { + default: break; + } + __builtin_abort (); + break; + default: + __builtin_abort (); + break; + } +} + +void +bar (int x, int y) +{ + int z; + while (x >= 0) + { + if (x == 0) + { + while (({ if (y) break; 0; })) + ; + __builtin_abort (); + } + if (x == 1) + { + do + ; + while (({ if (y) break; 0; })); + __builtin_abort (); + } + if (x == 2) + { + for (z = ({ if (y) break; 0; }); z < 5; z++) + ; + __builtin_abort (); + } + if (x == 3) + { + for (z = 0; z < ({ if (y) break; 5; }); z++) + ; + __builtin_abort (); + } + if (x == 4) + { + for (z = 0; z < 5; z += ({ if (y) break; 1; })) + ; + __builtin_abort (); + } + if (x == 5) + { + switch (({ if (y) break; 1; })) + { + default: break; + } + __builtin_abort (); + } + } +} + +void +baz (int x, int y) +{ + int z; + while (x >= 0) + { + if (++y == 2) + return; + if (x == 0) + { + while (({ if (y) continue; 0; })) + ; + __builtin_abort (); + } + if (x == 1) + { + do + ; + while (({ if (y) continue; 0; })); + __builtin_abort (); + } + if (x == 2) + { + for (z = ({ if (y) continue; 0; }); z < 5; z++) + ; + __builtin_abort (); + } + if (x == 3) + { + for (z = 0; z < ({ if (y) continue; 5; }); z++) + ; + __builtin_abort (); + } + if (x == 4) + { + for (z = 0; z < 5; z += ({ if (y) continue; 1; })) + ; + __builtin_abort (); + } + if (x == 5) + { + switch (({ if (y) continue; 1; })) + { + default: break; + } + __builtin_abort (); + } + } + __builtin_abort (); +} + +int +main () +{ + foo (0, 1); + foo (1, 1); + foo (2, 1); + foo (3, 1); + foo (4, 1); + foo (5, 1); + bar (0, 1); + bar (1, 1); + bar (2, 1); + bar (3, 1); + bar (4, 1); + bar (5, 1); + baz (0, 0); + baz (1, 0); + baz (2, 0); + baz (3, 0); + baz (4, 0); + baz (5, 0); + return 0; +}