OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [testsuite/] [gcc.c-torture/] [execute/] [20020615-1.c] - Blame information for rev 774

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 688 jeremybenn
/* PR target/7042.  When reorg.c changed branches into return insns, it
2
   completely forgot about any current_function_epilogue_delay_list and
3
   dropped those insns.  Uncovered on cris-axis-elf, where an insn in an
4
   epilogue delay-slot set the return-value register with the testcase
5
   below.  Derived from ghostscript-6.52 (GPL) by hp@axis.com.  */
6
 
7
typedef struct font_hints_s {
8
  int axes_swapped;
9
  int x_inverted, y_inverted;
10
} font_hints;
11
typedef struct gs_fixed_point_s {
12
  long x, y;
13
} gs_fixed_point;
14
 
15
int
16
line_hints(const font_hints *fh, const gs_fixed_point *p0,
17
           const gs_fixed_point *p1)
18
{
19
  long dx = p1->x - p0->x;
20
  long dy = p1->y - p0->y;
21
  long adx, ady;
22
  int xi = fh->x_inverted, yi = fh->y_inverted;
23
  int hints;
24
  if (xi)
25
    dx = -dx;
26
  if (yi)
27
    dy = -dy;
28
  if (fh->axes_swapped) {
29
    long t = dx;
30
    int ti = xi;
31
    dx = dy, xi = yi;
32
    dy = t, yi = ti;
33
  }
34
  adx = dx < 0 ? -dx : dx;
35
  ady = dy < 0 ? -dy : dy;
36
  if (dy != 0 && (adx <= ady >> 4)) {
37
    hints = dy > 0 ? 2 : 1;
38
    if (xi)
39
      hints ^= 3;
40
  } else if (dx != 0 && (ady <= adx >> 4)) {
41
    hints = dx < 0 ? 8 : 4;
42
    if (yi)
43
      hints ^= 12;
44
  } else
45
    hints = 0;
46
  return hints;
47
}
48
int main ()
49
{
50
  static font_hints fh[] = {{0, 1, 0}, {0, 0, 1}, {0, 0, 0}};
51
  static gs_fixed_point gsf[]
52
    = {{0x30000, 0x13958}, {0x30000, 0x18189},
53
       {0x13958, 0x30000}, {0x18189, 0x30000}};
54
  if (line_hints (fh, gsf, gsf + 1) != 1
55
      || line_hints (fh + 1, gsf + 2, gsf + 3) != 8
56
      || line_hints (fh + 2, gsf + 2, gsf + 3) != 4)
57
    abort ();
58
  exit (0);
59
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.