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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [testsuite/] [gcc.dg/] [torture/] [20080716-1.c] - Rev 749

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

/* { dg-do run } */
/* { dg-require-effective-target lp64 } */
 
typedef unsigned long size_t;
struct tree_base
{
  int code;
};
struct tree_decl_minimal
{
  struct tree_base base;
  const char *name;
};
typedef union tree_node {
  struct tree_base base;
  struct tree_decl_minimal decl_minimal;
} *tree;
struct tree_overload
{
  struct tree_base common;
  tree function;
};
typedef struct VEC_tree_base { unsigned num; unsigned alloc; tree vec[1]; } VEC_tree_base;
typedef struct VEC_tree_gc { VEC_tree_base base; } VEC_tree_gc;
static __inline__ unsigned VEC_tree_base_length (const VEC_tree_base *vec_)
{ return vec_ ? vec_->num : 0; }
static __inline__ int VEC_tree_base_iterate (const VEC_tree_base *vec_, unsigned ix_, tree *ptr)
{
  if (vec_ && ix_ < vec_->num) { *ptr = vec_->vec[ix_]; return 1; } else { *ptr = 0; return 0; }
} 
extern void abort (void);
void __attribute__((noinline)) foo (size_t x)
{
  if (x != 18446744073709551614UL)
    abort ();
}
void
resort_type_method_vec (VEC_tree_gc *method_vec)
{
  int len = (VEC_tree_base_length(((method_vec) ? &(method_vec)->base : 0)));
  size_t slot;
  tree fn;
 
  for (slot = 2;
       (VEC_tree_base_iterate(((method_vec) ? &(method_vec)->base : 0),slot,&(fn)));
       ++slot)
    if (!(((((((fn)->base.code) == 225) ? (((struct tree_overload*)(fn))->function) : (fn)))->decl_minimal.name)))
      break;
 
  if (len - slot > 1)
    foo (len - slot);
}
 
int main ()
{
  resort_type_method_vec ((void *)0);
  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.