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/] [strcat.c] - Diff between revs 297 and 338

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

Rev 297 Rev 338
/* Copyright (C) 2000, 2003  Free Software Foundation.
/* Copyright (C) 2000, 2003  Free Software Foundation.
 
 
   Ensure all expected transformations of builtin strcat occur and
   Ensure all expected transformations of builtin strcat occur and
   perform correctly.
   perform correctly.
 
 
   Written by Kaveh R. Ghazi, 11/27/2000.  */
   Written by Kaveh R. Ghazi, 11/27/2000.  */
 
 
extern int inside_main;
extern int inside_main;
extern void abort (void);
extern void abort (void);
typedef __SIZE_TYPE__ size_t;
typedef __SIZE_TYPE__ size_t;
extern char *strcat (char *, const char *);
extern char *strcat (char *, const char *);
extern char *strcpy (char *, const char *);
extern char *strcpy (char *, const char *);
extern void *memset (void *, int, size_t);
extern void *memset (void *, int, size_t);
extern int memcmp (const void *, const void *, size_t);
extern int memcmp (const void *, const void *, size_t);
#define RESET_DST_WITH(FILLER) \
#define RESET_DST_WITH(FILLER) \
  do { memset (dst, 'X', sizeof (dst)); strcpy (dst, (FILLER)); } while (0)
  do { memset (dst, 'X', sizeof (dst)); strcpy (dst, (FILLER)); } while (0)
 
 
void main_test (void)
void main_test (void)
{
{
  const char *const s1 = "hello world";
  const char *const s1 = "hello world";
  const char *const s2 = "";
  const char *const s2 = "";
  char dst[64], *d2;
  char dst[64], *d2;
 
 
  RESET_DST_WITH (s1);
  RESET_DST_WITH (s1);
  if (strcat (dst, "") != dst || memcmp (dst, "hello world\0XXX", 15))
  if (strcat (dst, "") != dst || memcmp (dst, "hello world\0XXX", 15))
    abort();
    abort();
  RESET_DST_WITH (s1);
  RESET_DST_WITH (s1);
  if (strcat (dst, s2) != dst || memcmp (dst, "hello world\0XXX", 15))
  if (strcat (dst, s2) != dst || memcmp (dst, "hello world\0XXX", 15))
    abort();
    abort();
  RESET_DST_WITH (s1); d2 = dst;
  RESET_DST_WITH (s1); d2 = dst;
  if (strcat (++d2, s2) != dst+1 || d2 != dst+1
  if (strcat (++d2, s2) != dst+1 || d2 != dst+1
      || memcmp (dst, "hello world\0XXX", 15))
      || memcmp (dst, "hello world\0XXX", 15))
    abort();
    abort();
  RESET_DST_WITH (s1); d2 = dst;
  RESET_DST_WITH (s1); d2 = dst;
  if (strcat (++d2+5, s2) != dst+6 || d2 != dst+1
  if (strcat (++d2+5, s2) != dst+6 || d2 != dst+1
      || memcmp (dst, "hello world\0XXX", 15))
      || memcmp (dst, "hello world\0XXX", 15))
    abort();
    abort();
  RESET_DST_WITH (s1); d2 = dst;
  RESET_DST_WITH (s1); d2 = dst;
  if (strcat (++d2+5, s1+11) != dst+6 || d2 != dst+1
  if (strcat (++d2+5, s1+11) != dst+6 || d2 != dst+1
      || memcmp (dst, "hello world\0XXX", 15))
      || memcmp (dst, "hello world\0XXX", 15))
    abort();
    abort();
 
 
#ifndef __OPTIMIZE_SIZE__
#ifndef __OPTIMIZE_SIZE__
# if !defined __i386__ && !defined __x86_64__
# if !defined __i386__ && !defined __x86_64__
  /* The functions below might not be optimized into direct stores on all
  /* The functions below might not be optimized into direct stores on all
     arches.  It depends on how many instructions would be generated and
     arches.  It depends on how many instructions would be generated and
     what limits the architecture chooses in STORE_BY_PIECES_P.  */
     what limits the architecture chooses in STORE_BY_PIECES_P.  */
  inside_main = 0;
  inside_main = 0;
# endif
# endif
 
 
  RESET_DST_WITH (s1);
  RESET_DST_WITH (s1);
  if (strcat (dst, " 1111") != dst
  if (strcat (dst, " 1111") != dst
      || memcmp (dst, "hello world 1111\0XXX", 20))
      || memcmp (dst, "hello world 1111\0XXX", 20))
    abort();
    abort();
 
 
  RESET_DST_WITH (s1);
  RESET_DST_WITH (s1);
  if (strcat (dst+5, " 2222") != dst+5
  if (strcat (dst+5, " 2222") != dst+5
      || memcmp (dst, "hello world 2222\0XXX", 20))
      || memcmp (dst, "hello world 2222\0XXX", 20))
    abort();
    abort();
 
 
  RESET_DST_WITH (s1); d2 = dst;
  RESET_DST_WITH (s1); d2 = dst;
  if (strcat (++d2+5, " 3333") != dst+6 || d2 != dst+1
  if (strcat (++d2+5, " 3333") != dst+6 || d2 != dst+1
      || memcmp (dst, "hello world 3333\0XXX", 20))
      || memcmp (dst, "hello world 3333\0XXX", 20))
    abort();
    abort();
 
 
  RESET_DST_WITH (s1);
  RESET_DST_WITH (s1);
  strcat (strcat (strcat (strcat (strcat (strcat (dst, ": this "), ""),
  strcat (strcat (strcat (strcat (strcat (strcat (dst, ": this "), ""),
                                  "is "), "a "), "test"), ".");
                                  "is "), "a "), "test"), ".");
  if (memcmp (dst, "hello world: this is a test.\0X", 30))
  if (memcmp (dst, "hello world: this is a test.\0X", 30))
    abort();
    abort();
 
 
  /* Set inside_main again.  */
  /* Set inside_main again.  */
  inside_main = 1;
  inside_main = 1;
#endif
#endif
 
 
  /* Test at least one instance of the __builtin_ style.  We do this
  /* Test at least one instance of the __builtin_ style.  We do this
     to ensure that it works and that the prototype is correct.  */
     to ensure that it works and that the prototype is correct.  */
  RESET_DST_WITH (s1);
  RESET_DST_WITH (s1);
  if (__builtin_strcat (dst, "") != dst || memcmp (dst, "hello world\0XXX", 15))
  if (__builtin_strcat (dst, "") != dst || memcmp (dst, "hello world\0XXX", 15))
    abort();
    abort();
}
}
 
 

powered by: WebSVN 2.1.0

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