1 /* PR target/50749: Verify that post-increment addressing is generated
2 inside a loop. */
3 /* { dg-do compile } */
4 /* { dg-options "-O2" } */
5 /* { dg-final { scan-assembler-times "mov.b\t@r\[0-9]\+\\+,r\[0-9]\+" 3 { xfail *-*-*} } } */
6 /* { dg-final { scan-assembler-times "mov.w\t@r\[0-9]\+\\+,r\[0-9]\+" 3 { xfail *-*-*} } } */
7 /* { dg-final { scan-assembler-times "mov.l\t@r\[0-9]\+\\+,r\[0-9]\+" 3 { xfail *-*-*} } } */
8
9 int
10 test_func_00 (char* p, int c)
11 {
12 int r = 0;
13 do
14 {
15 r += *p++;
16 r += *p++;
17 r += *p++;
18 } while (--c);
19 return r;
20 }
21
22 int
23 test_func_01 (short* p, int c)
24 {
25 int r = 0;
26 do
27 {
28 r += *p++;
29 r += *p++;
30 r += *p++;
31 } while (--c);
32 return r;
33 }
34
35 int
36 test_func_02 (int* p, int c)
37 {
38 int r = 0;
39 do
40 {
41 r += *p++;
42 r += *p++;
43 r += *p++;
44 } while (--c);
45 return r;
46 }