becopyheur2: Cache the admissible registers eagerly.
[libfirm] / ir / ir / irnodeset.c
1 /*
2  * This file is part of libFirm.
3  * Copyright (C) 2012 University of Karlsruhe.
4  */
5
6 /**
7  * @file
8  * @author    Matthias Braun
9  * @date      30.03.2007
10  * @brief     A nodeset. This should be preferred over a simple pset, because it
11               tries to guarantee deterministic behavior.
12  */
13 #include "config.h"
14
15 #include "irnodeset.h"
16 #include "irnode_t.h"
17 #include "hashptr.h"
18
19 #define DO_REHASH
20 #define ID_HASH
21 #define HashSet                   ir_nodeset_t
22 #define HashSetIterator           ir_nodeset_iterator_t
23 #define ValueType                 ir_node*
24 #define NullValue                 NULL
25 #define DeletedValue              ((ir_node*)-1)
26 #define Hash(this,key)            ((unsigned)((key)->node_nr))
27 #define KeysEqual(this,key1,key2) (key1) == (key2)
28 #define SetRangeEmpty(ptr,size)   memset(ptr, 0, (size) * sizeof((ptr)[0]))
29
30 void ir_nodeset_init_(ir_nodeset_t *self);
31 #define hashset_init            ir_nodeset_init_
32 #define hashset_init_size       ir_nodeset_init_size
33 #define hashset_destroy         ir_nodeset_destroy
34 #define hashset_insert          ir_nodeset_insert
35 #define hashset_remove          ir_nodeset_remove
36 #define hashset_find            ir_nodeset_contains
37 #define hashset_size            ir_nodeset_size
38 #define hashset_iterator_init   ir_nodeset_iterator_init
39 #define hashset_iterator_next   ir_nodeset_iterator_next
40 #define hashset_remove_iterator ir_nodeset_remove_iterator
41
42 #include "hashset.c.inl"
43
44 void ir_nodeset_init(ir_nodeset_t *nodeset)
45 {
46         ir_nodeset_init_size(nodeset, 16);
47 }