| /* { dg-do compile } */ |
| /* { dg-options "-O2 -fdump-rtl-loop2_doloop -fno-unroll-loops" } */ |
| /* The inner loop would use the doloop IV in word_mode. And then |
| there is no need to access it though zero_extend on shorter mode. */ |
| void foo(int *p1, long *p2, int s) |
| { |
| int n, v, i; |
| |
| v = 0; |
| for (n = 0; n <= 100; n++) { |
| for (i = 0; i < s; i++) |
| if (p2[i] == n) |
| p1[i] = v; |
| v += 88; |
| } |
| } |
| |
| /* { dg-final {scan-rtl-dump-not {(?p)zero_extend.*doloop} "loop2_doloop"} } */ |
| /* { dg-final {scan-rtl-dump-not {(?p)reg:SI.*doloop} "loop2_doloop" { target lp64 } } } */ |
| |