]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/testsuite/gcc.dg/tree-ssa/ldist-strlen-1.c
Fix profile update in tree_transform_and_unroll_loop
[thirdparty/gcc.git] / gcc / testsuite / gcc.dg / tree-ssa / ldist-strlen-1.c
CommitLineData
6f966f06
SSF
1/* { dg-do run } */
2/* { dg-options "-O2 -ftree-loop-distribution -fdump-tree-ldist-details" } */
64bf0c83 3/* { dg-additional-options "-march=z13 -mzarch" { target s390x-*-* } } */
6f966f06
SSF
4/* { dg-final { scan-tree-dump-times "generated strlenQI\n" 4 "ldist" } } */
5/* { dg-final { scan-tree-dump-times "generated strlenHI\n" 4 "ldist" { target s390x-*-* } } } */
6/* { dg-final { scan-tree-dump-times "generated strlenSI\n" 4 "ldist" { target s390x-*-* } } } */
7
8#include <stdint.h>
9#include <assert.h>
10
11typedef __SIZE_TYPE__ size_t;
12extern void* malloc (size_t);
13extern void* memset (void*, int, size_t);
14
15#define test(T, U) \
16__attribute__((noinline)) \
17U test_##T##U (T *s) \
18{ \
19 U i; \
20 for (i=0; s[i]; ++i); \
21 return i; \
22}
23
24test (uint8_t, size_t)
25test (uint16_t, size_t)
26test (uint32_t, size_t)
27test (uint8_t, int)
28test (uint16_t, int)
29test (uint32_t, int)
30
31test (int8_t, size_t)
32test (int16_t, size_t)
33test (int32_t, size_t)
34test (int8_t, int)
35test (int16_t, int)
36test (int32_t, int)
37
38#define run(T, U, i) \
39{ \
40T *q = p; \
41q[i] = 0; \
42assert (test_##T##U (p) == i); \
43memset (&q[i], 0xf, sizeof (T)); \
44}
45
46int main(void)
47{
48 void *p = malloc (1024);
49 assert (p);
50 memset (p, 0xf, 1024);
51
52 run (uint8_t, size_t, 0);
53 run (uint8_t, size_t, 1);
54 run (uint8_t, size_t, 13);
55
56 run (int8_t, size_t, 0);
57 run (int8_t, size_t, 1);
58 run (int8_t, size_t, 13);
59
60 run (uint8_t, int, 0);
61 run (uint8_t, int, 1);
62 run (uint8_t, int, 13);
63
64 run (int8_t, int, 0);
65 run (int8_t, int, 1);
66 run (int8_t, int, 13);
67
68 run (uint16_t, size_t, 0);
69 run (uint16_t, size_t, 1);
70 run (uint16_t, size_t, 13);
71
72 run (int16_t, size_t, 0);
73 run (int16_t, size_t, 1);
74 run (int16_t, size_t, 13);
75
76 run (uint16_t, int, 0);
77 run (uint16_t, int, 1);
78 run (uint16_t, int, 13);
79
80 run (int16_t, int, 0);
81 run (int16_t, int, 1);
82 run (int16_t, int, 13);
83
84 run (uint32_t, size_t, 0);
85 run (uint32_t, size_t, 1);
86 run (uint32_t, size_t, 13);
87
88 run (int32_t, size_t, 0);
89 run (int32_t, size_t, 1);
90 run (int32_t, size_t, 13);
91
92 run (uint32_t, int, 0);
93 run (uint32_t, int, 1);
94 run (uint32_t, int, 13);
95
96 run (int32_t, int, 0);
97 run (int32_t, int, 1);
98 run (int32_t, int, 13);
99
100 return 0;
101}