| /* PR rtl-optimization/87485 */ |
| /* { dg-do compile { target int128 } } */ |
| /* { dg-options "-O2 -fschedule-insns -fno-guess-branch-probability -fno-isolate-erroneous-paths-dereference -fno-omit-frame-pointer -fno-split-wide-types -fno-tree-ccp -fno-tree-sra" } */ |
| /* { dg-additional-options "-fstack-protector-strong" { target fstack_protector } } */ |
| /* { dg-require-effective-target scheduling } */ |
| |
| int *a; |
| |
| int |
| foo (__int128 x, int y, int z) |
| { |
| __int128 b; |
| *a = ((!!y ? y : x) * y | x) * 2; |
| if (z == 0) |
| { |
| unsigned int c = 1; |
| __int128 *d = &b; |
| for (*a = 0; *a < 1; *a += y) |
| ; |
| *a += b < (c / 0); /* { dg-warning "division by zero" } */ |
| goto l; |
| m: |
| while (b < 1) |
| ; |
| ++*a; |
| } |
| goto m; |
| l: |
| return 0; |
| } |