111
|
1 /* { dg-do run } */
|
|
2 /* { dg-options "-O2 -fsplit-paths -fdump-tree-split-paths-details --param max-jump-thread-duplication-stmts=20" } */
|
|
3
|
|
4 #include <stdio.h>
|
|
5 #include <stdlib.h>
|
|
6 #include <ctype.h>
|
|
7
|
|
8 #define RGBMAX 255
|
|
9
|
|
10 unsigned char
|
|
11 test()
|
|
12 {
|
|
13 int i, Pels;
|
|
14 int sum = 0;
|
|
15 unsigned char xr, xg, xb;
|
|
16 unsigned char xc, xm, xy, xk = 0;
|
|
17 unsigned char *ReadPtr, *EritePtr;
|
|
18
|
|
19 ReadPtr = ( unsigned char *) malloc (sizeof (unsigned char) * 100);
|
|
20 EritePtr = ( unsigned char *) malloc (sizeof (unsigned char) * 100);
|
|
21
|
|
22 for (i = 0; i < 100;i++)
|
|
23 {
|
|
24 ReadPtr[i] = 100 - i;
|
|
25 }
|
|
26
|
|
27 for (i = 0; i < 24; i++)
|
|
28 {
|
|
29 xr = *ReadPtr++;
|
|
30 xg = *ReadPtr++;
|
|
31 xb = *ReadPtr++;
|
|
32
|
|
33 xc = (unsigned char) (RGBMAX - xr);
|
|
34 xm = (unsigned char) (RGBMAX - xg);
|
|
35 xy = (unsigned char) (RGBMAX - xb);
|
|
36
|
|
37 if (xc < xm)
|
|
38 {
|
|
39 xk = (unsigned char) (xc < xy ? xc : xy);
|
|
40 }
|
|
41 else
|
|
42 {
|
|
43 xk = (unsigned char) (xm < xy ? xm : xy);
|
|
44 }
|
|
45
|
|
46 xc = (unsigned char) (xc - xk);
|
|
47 xm = (unsigned char) (xm - xk);
|
|
48 xy = (unsigned char) (xy - xk);
|
|
49
|
|
50 *EritePtr++ = xc;
|
|
51 *EritePtr++ = xm;
|
|
52 *EritePtr++ = xy;
|
|
53 *EritePtr++ = xk;
|
|
54 sum += *(--EritePtr);
|
|
55
|
|
56 }
|
|
57 return sum;
|
|
58 }
|
|
59
|
|
60 int
|
|
61 main()
|
|
62 {
|
|
63 if (test() != 196)
|
|
64 abort();
|
|
65
|
|
66 return 0;
|
|
67 }
|
|
68
|
|
69 /* { dg-final { scan-tree-dump "Duplicating join block" "split-paths" } } */
|