Daily bump.
[official-gcc.git] / gcc / testsuite / gcc.dg / tree-ssa / split-path-1.c
blob8b23ef4c7a3484cdc1647ee6d1b150f15685beff
1 /* { dg-do run } */
2 /* { dg-options "-O2 -fsplit-paths -fdump-tree-split-paths-details --param max-jump-thread-duplication-stmts=20" } */
4 #include <stdio.h>
5 #include <stdlib.h>
6 #include <ctype.h>
8 #define RGBMAX 255
10 unsigned char
11 test()
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;
19 ReadPtr = ( unsigned char *) malloc (sizeof (unsigned char) * 100);
20 EritePtr = ( unsigned char *) malloc (sizeof (unsigned char) * 100);
22 for (i = 0; i < 100;i++)
24 ReadPtr[i] = 100 - i;
27 for (i = 0; i < 24; i++)
29 xr = *ReadPtr++;
30 xg = *ReadPtr++;
31 xb = *ReadPtr++;
33 xc = (unsigned char) (RGBMAX - xr);
34 xm = (unsigned char) (RGBMAX - xg);
35 xy = (unsigned char) (RGBMAX - xb);
37 if (xc < xm)
39 xk = (unsigned char) (xc < xy ? xc : xy);
41 else
43 xk = (unsigned char) (xm < xy ? xm : xy);
46 xc = (unsigned char) (xc - xk);
47 xm = (unsigned char) (xm - xk);
48 xy = (unsigned char) (xy - xk);
50 *EritePtr++ = xc;
51 *EritePtr++ = xm;
52 *EritePtr++ = xy;
53 *EritePtr++ = xk;
54 sum += *(--EritePtr);
57 return sum;
60 int
61 main()
63 if (test() != 196)
64 abort();
66 return 0;
69 /* { dg-final { scan-tree-dump "Duplicating join block" "split-paths" } } */