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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-old/] [gcc-4.2.2/] [gcc/] [testsuite/] [gcc.target/] [i386/] [memset-1.c] - Blame information for rev 825

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

Line No. Rev Author Line
1 149 jeremybenn
/* Copyright (C) 2002, 2005  Free Software Foundation.
2
 
3
   Test -minline-all-stringops memset with various combinations of pointer
4
   alignments and lengths to make sure builtin optimizations are correct.
5
   PR target/6456.
6
 
7
   Written by Michael Meissner, March 9, 2002.
8
   Target by Roger Sayle, April 25, 2002.  */
9
 
10
/* { dg-do run { target i?86-*-* x86_64-*-* } } */
11
/* { dg-options "-O2 -minline-all-stringops" } */
12
 
13
extern void *memset (void *, int, __SIZE_TYPE__);
14
extern void abort (void);
15
extern void exit (int);
16
 
17
#ifndef MAX_OFFSET
18
#define MAX_OFFSET (sizeof (long long))
19
#endif
20
 
21
#ifndef MAX_COPY
22
#define MAX_COPY (8 * sizeof (long long))
23
#endif
24
 
25
#ifndef MAX_EXTRA
26
#define MAX_EXTRA (sizeof (long long))
27
#endif
28
 
29
#define MAX_LENGTH (MAX_OFFSET + MAX_COPY + MAX_EXTRA)
30
 
31
static union {
32
  char buf[MAX_LENGTH];
33
  long long align_int;
34
  long double align_fp;
35
} u;
36
 
37
char A = 'A';
38
 
39
main ()
40
{
41
  int off, len, i;
42
  char *p, *q;
43
 
44
  for (off = 0; off < MAX_OFFSET; off++)
45
    for (len = 1; len < MAX_COPY; len++)
46
      {
47
        for (i = 0; i < MAX_LENGTH; i++)
48
          u.buf[i] = 'a';
49
 
50
        p = memset (u.buf + off, '\0', len);
51
        if (p != u.buf + off)
52
          abort ();
53
 
54
        q = u.buf;
55
        for (i = 0; i < off; i++, q++)
56
          if (*q != 'a')
57
            abort ();
58
 
59
        for (i = 0; i < len; i++, q++)
60
          if (*q != '\0')
61
            abort ();
62
 
63
        for (i = 0; i < MAX_EXTRA; i++, q++)
64
          if (*q != 'a')
65
            abort ();
66
 
67
        p = memset (u.buf + off, A, len);
68
        if (p != u.buf + off)
69
          abort ();
70
 
71
        q = u.buf;
72
        for (i = 0; i < off; i++, q++)
73
          if (*q != 'a')
74
            abort ();
75
 
76
        for (i = 0; i < len; i++, q++)
77
          if (*q != 'A')
78
            abort ();
79
 
80
        for (i = 0; i < MAX_EXTRA; i++, q++)
81
          if (*q != 'a')
82
            abort ();
83
 
84
        p = memset (u.buf + off, 'B', len);
85
        if (p != u.buf + off)
86
          abort ();
87
 
88
        q = u.buf;
89
        for (i = 0; i < off; i++, q++)
90
          if (*q != 'a')
91
            abort ();
92
 
93
        for (i = 0; i < len; i++, q++)
94
          if (*q != 'B')
95
            abort ();
96
 
97
        for (i = 0; i < MAX_EXTRA; i++, q++)
98
          if (*q != 'a')
99
            abort ();
100
      }
101
 
102
  exit(0);
103
}
104
 

powered by: WebSVN 2.1.0

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