| /* { dg-do run } */ |
| /* { dg-options "-O2 -fdump-tree-sccp-details" } */ |
| |
| typedef unsigned char u8; |
| typedef __UINT32_TYPE__ u32; |
| |
| static u32 |
| b (u8 d, u32 e, u32 g) |
| { |
| do |
| { |
| e += g + 1; |
| d--; |
| } |
| while (d >= (u8) e); |
| |
| return e; |
| } |
| |
| int |
| main (void) |
| { |
| u32 x = b (1, -0x378704, ~0xba64fc); |
| if (x != 0xd93190d0) |
| __builtin_abort (); |
| return 0; |
| } |
| |
| /* Niter analyzer should be able to compute niters for the loop even though |
| IV:d wraps. */ |
| /* { dg-final { scan-tree-dump "Replacing uses of: .* with: 3643904208" "sccp" { xfail *-*-* } } } */ |