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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [testsuite/] [gcc.c-torture/] [execute/] [builtins/] [strcpy-2.c] - Blame information for rev 688

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 688 jeremybenn
/* Copyright (C) 2004  Free Software Foundation.
2
 
3
   Ensure builtin strcpy is optimized into memcpy
4
   even when there is more than one possible string literal
5
   passed to it, but all string literals passed to it
6
   have equal length.
7
 
8
   Written by Jakub Jelinek, 9/15/2004.  */
9
 
10
extern void abort (void);
11
extern char *strcpy (char *, const char *);
12
typedef __SIZE_TYPE__ size_t;
13
extern void *memcpy (void *, const void *, size_t);
14
extern int memcmp (const void *, const void *, size_t);
15
 
16
char buf[32], *p;
17
int i;
18
 
19
char *
20
__attribute__((noinline))
21
test (void)
22
{
23
  int j;
24
  const char *q = "abcdefg";
25
  for (j = 0; j < 3; ++j)
26
    {
27
      if (j == i)
28
        q = "bcdefgh";
29
      else if (j == i + 1)
30
        q = "cdefghi";
31
      else if (j == i + 2)
32
        q = "defghij";
33
    }
34
  p = strcpy (buf, q);
35
  return strcpy (buf + 16, q);
36
}
37
 
38
void
39
main_test (void)
40
{
41
#ifndef __OPTIMIZE_SIZE__
42
  /* For -Os, strcpy above is not replaced with
43
     memcpy (buf, q, 8);, as that is larger.  */
44
  if (test () != buf + 16 || p != buf)
45
    abort ();
46
#endif
47
}

powered by: WebSVN 2.1.0

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