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

Subversion Repositories openrisc

[/] [openrisc/] [tags/] [gnu-src/] [gcc-4.5.1/] [gcc-4.5.1-or32-1.0rc1/] [gcc/] [testsuite/] [gcc.c-torture/] [execute/] [builtins/] [strcpy-2.c] - Diff between revs 297 and 338

Only display areas with differences | Details | Blame | View Log

Rev 297 Rev 338
/* Copyright (C) 2004  Free Software Foundation.
/* Copyright (C) 2004  Free Software Foundation.
 
 
   Ensure builtin strcpy is optimized into memcpy
   Ensure builtin strcpy is optimized into memcpy
   even when there is more than one possible string literal
   even when there is more than one possible string literal
   passed to it, but all string literals passed to it
   passed to it, but all string literals passed to it
   have equal length.
   have equal length.
 
 
   Written by Jakub Jelinek, 9/15/2004.  */
   Written by Jakub Jelinek, 9/15/2004.  */
 
 
extern void abort (void);
extern void abort (void);
extern char *strcpy (char *, const char *);
extern char *strcpy (char *, const char *);
typedef __SIZE_TYPE__ size_t;
typedef __SIZE_TYPE__ size_t;
extern void *memcpy (void *, const void *, size_t);
extern void *memcpy (void *, const void *, size_t);
extern int memcmp (const void *, const void *, size_t);
extern int memcmp (const void *, const void *, size_t);
 
 
char buf[32], *p;
char buf[32], *p;
int i;
int i;
 
 
char *
char *
__attribute__((noinline))
__attribute__((noinline))
test (void)
test (void)
{
{
  int j;
  int j;
  const char *q = "abcdefg";
  const char *q = "abcdefg";
  for (j = 0; j < 3; ++j)
  for (j = 0; j < 3; ++j)
    {
    {
      if (j == i)
      if (j == i)
        q = "bcdefgh";
        q = "bcdefgh";
      else if (j == i + 1)
      else if (j == i + 1)
        q = "cdefghi";
        q = "cdefghi";
      else if (j == i + 2)
      else if (j == i + 2)
        q = "defghij";
        q = "defghij";
    }
    }
  p = strcpy (buf, q);
  p = strcpy (buf, q);
  return strcpy (buf + 16, q);
  return strcpy (buf + 16, q);
}
}
 
 
void
void
main_test (void)
main_test (void)
{
{
#ifndef __OPTIMIZE_SIZE__
#ifndef __OPTIMIZE_SIZE__
  /* For -Os, strcpy above is not replaced with
  /* For -Os, strcpy above is not replaced with
     memcpy (buf, q, 8);, as that is larger.  */
     memcpy (buf, q, 8);, as that is larger.  */
  if (test () != buf + 16 || p != buf)
  if (test () != buf + 16 || p != buf)
    abort ();
    abort ();
#endif
#endif
}
}
 
 

powered by: WebSVN 2.1.0

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