pr79732.c: Require alias support.
[official-gcc.git] / gcc / testsuite / gcc.dg / torture / 20080716-1.c
blob91fcd2b00d317ebaa84a940a4dfcd3d7bf939123
1 /* { dg-do run } */
2 /* { dg-require-effective-target lp64 } */
4 typedef unsigned long size_t;
5 struct tree_base
7 int code;
8 };
9 struct tree_decl_minimal
11 struct tree_base base;
12 const char *name;
14 typedef union tree_node {
15 struct tree_base base;
16 struct tree_decl_minimal decl_minimal;
17 } *tree;
18 struct tree_overload
20 struct tree_base common;
21 tree function;
23 typedef struct VEC_tree_base { unsigned num; unsigned alloc; tree vec[1]; } VEC_tree_base;
24 typedef struct VEC_tree_gc { VEC_tree_base base; } VEC_tree_gc;
25 static __inline__ unsigned VEC_tree_base_length (const VEC_tree_base *vec_)
26 { return vec_ ? vec_->num : 0; }
27 static __inline__ int VEC_tree_base_iterate (const VEC_tree_base *vec_, unsigned ix_, tree *ptr)
29 if (vec_ && ix_ < vec_->num) { *ptr = vec_->vec[ix_]; return 1; } else { *ptr = 0; return 0; }
31 extern void abort (void);
32 void __attribute__((noinline)) foo (size_t x)
34 if (x != 18446744073709551614UL)
35 abort ();
37 void
38 resort_type_method_vec (VEC_tree_gc *method_vec)
40 int len = (VEC_tree_base_length(((method_vec) ? &(method_vec)->base : 0)));
41 size_t slot;
42 tree fn;
44 for (slot = 2;
45 (VEC_tree_base_iterate(((method_vec) ? &(method_vec)->base : 0),slot,&(fn)));
46 ++slot)
47 if (!(((((((fn)->base.code) == 225) ? (((struct tree_overload*)(fn))->function) : (fn)))->decl_minimal.name)))
48 break;
50 if (len - slot > 1)
51 foo (len - slot);
54 int main ()
56 resort_type_method_vec ((void *)0);
57 return 0;