2 /* memset doesn't take unsigned long */
3 /* { dg-xfail-if "" { "m32c-*-*" } { "*" } { "" } } */
4 /* { dg-options "-std=gnu99 -Wall -Wextra -O1" } */
6 extern void *memset (void*, int, unsigned long);
7 extern void abort (void);
9 struct radix_tree_root {
11 struct radix_tree_node *rnode;
14 struct radix_tree_node {
17 unsigned long tags[2];
20 struct radix_tree_path {
21 struct radix_tree_node *node, **slot;
25 void radix_tree_tag_clear(struct radix_tree_root *root, unsigned long index)
27 struct radix_tree_path path[7], *pathp = path;
28 unsigned int height, shift;
29 volatile unsigned long *addr;
31 height = root->height;
33 shift = (height - 1) * 6;
34 path[0].slot = &root->rnode;
39 offset = (index >> shift) & (64-1);
40 pathp[1].offset = offset;
41 pathp[1].node = *pathp[0].slot;
42 pathp[1].slot = (struct radix_tree_node **)
43 (pathp[1].node->slots + offset);
49 addr = &(pathp->node->tags[0]) + 1;
53 struct radix_tree_root r;
54 struct radix_tree_node node;
61 memset (&node, 0, sizeof (node));
65 radix_tree_tag_clear (&r, 13);