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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-old/] [gcc-4.2.2/] [gcc/] [testsuite/] [gcc.c-torture/] [execute/] [builtins/] [strlen-3.c] - Rev 825

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

/* Copyright (C) 2004  Free Software Foundation.
 
   Test strlen on const variables initialized to string literals.
 
   Written by Jakub Jelinek, 9/14/2004.  */
 
extern void abort (void);
extern __SIZE_TYPE__ strlen (const char *);
extern char *strcpy (char *, const char *);
static const char bar[] = "Hello, World!";
static const char baz[] = "hello, world?";
static const char larger[20] = "short string";
extern volatile int inside_main;
 
int l1 = 1;
int x = 6;
 
void
main_test(void)
{
#ifdef __OPTIMIZE__
  const char *foo;
  int i;
#endif
 
  if (strlen (bar) != 13)
    abort ();
 
  if (strlen (bar + 3) != 10)
    abort ();
 
  if (strlen (&bar[6]) != 7)
    abort ();
 
  if (strlen (bar + (x++ & 7)) != 7)
    abort ();
  if (x != 7)
    abort ();
 
#ifdef __OPTIMIZE__
  foo = bar;
  for (i = 0; i < 4; ++i)
    {
      if (i == l1 - 1)
	foo = "HELLO, WORLD!";
      else if (i == l1)
	foo = bar;
      else if (i == l1 + 1)
	foo = "hello, world!";
      else
	foo = baz;
    }
  if (strlen (foo) != 13)
    abort ();
#endif
 
  if (strlen (larger) != 12)
    abort ();
  if (strlen (&larger[10]) != 2)
    abort ();
 
  inside_main = 0;
  /* This will result in strlen call, because larger
     array is bigger than its initializer.  */
  if (strlen (larger + (x++ & 7)) != 5)
    abort ();
  if (x != 8)
    abort ();
  inside_main = 1;
}
 

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

powered by: WebSVN 2.1.0

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