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

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [gnu-src/] [gcc-4.5.1/] [gcc/] [testsuite/] [gcc.dg/] [cpp/] [charconst-4.c] - Rev 307

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

/* Copyright (C) 2001 Free Software Foundation, Inc.  */
 
/* { dg-do run } */
/* { dg-options "-Wno-multichar -fsigned-char" } */
 
/* This tests how overly-long multichar charconsts are truncated, and
   whether "short" multichar charconsts are incorrectly sign extended
   (regardless of char signedness).  Preprocessor is used so that we
   have only one place where the too long warning is generated, so
   that the test works for all targets.
 
   Neil Booth, 8 May 2002.  */
 
#include <limits.h>
 
extern void abort (void);
 
#if INT_MAX == 32767
# define LONG_CHARCONST '!\234a'
# define SHORT_CHARCONST '\234a'
# define POS_CHARCONST '\1'
#elif INT_MAX == 2147483647
# define LONG_CHARCONST '!\234abc'
# define SHORT_CHARCONST '\234abc'
# define POS_CHARCONST '\234a'
#elif INT_MAX == 9223372036854775807
# define LONG_CHARCONST '!\234abcdefg'
# define SHORT_CHARCONST '\234abcdefg'
# define POS_CHARCONST '\234a'
#else
/* Target int size not handled, do something that won't fail.  */
# define LONG_CHARCONST '\234a'
# define SHORT_CHARCONST '\234a'
# define POS_CHARCONST '\1'
#endif
 
#if POS_CHARCONST < 0
# error Charconst incorrectly sign-extended
#endif
 
#if LONG_CHARCONST != SHORT_CHARCONST /* { dg-warning "too long" "" } */
# error Overly long charconst truncates wrongly for preprocessor
#endif
 
int main ()
{
  if (POS_CHARCONST < 0)
    abort ();
  if (LONG_CHARCONST != SHORT_CHARCONST)  /* { dg-warning "too long" "" } */
    abort ();
  return 0;
}
 

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.