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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [testsuite/] [obj-c++.dg/] [encode-3.mm] - Rev 703

Compare with Previous | Blame | View Log

/* { dg-do run } */

extern "C" {
extern void abort (void);
extern int strcmp (const char *, const char *);
}

template <class T>
struct Vec {
  T x, y;
  long z;
  long long zz;
};

typedef struct {
  float fscalar;
  double dv[10];
  int iscalar;
  long z;
  long long zz;
  Vec<const signed char> cv;
} anonymous;

//Vec<double> dd;
const char *enc = @encode(Vec<float>);
const char *enc2 = @encode(Vec<double>);
const char *enc3 = @encode(anonymous);

#ifdef __LP64__
#define L "q"
#else
#define L "l"
#endif

/* Darwin (at least, as of XCode 3.2.3/Darwin10) does not encode the read-only
   attribute  on the type.  Arguably, this is a bug, but we are compatible
   with this when -fnext-runtime is selected.  */
#ifdef __NEXT_RUNTIME__
#define E3 "{?=f[10d]i" L "q{Vec<const signed char>=cc" L "q}}"
#else
#define E3 "{?=f[10d]i" L "q{Vec<const signed char>=rcrc" L "q}}"
#endif

int main(void) {
  const char *encode = @encode(long);

  if (strcmp (encode, L))
    abort ();

  if (strcmp (enc, (const char *)"{Vec<float>=ff" L "q}"))
    abort ();

  if (strcmp (enc2, (const char *)"{Vec<double>=dd" L "q}"))
    abort ();

  if (strcmp (enc3, (const char *) E3))
    abort ();

  return 0;
}

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.