}
ir_node *
-(get_irn_intra_n)(ir_node *node, int n) {
+(get_irn_intra_n)(const ir_node *node, int n) {
return __get_irn_intra_n (node, n);
}
ir_node *
-(get_irn_inter_n)(ir_node *node, int n) {
+(get_irn_inter_n)(const ir_node *node, int n) {
return __get_irn_inter_n (node, n);
}
-ir_node *(*__get_irn_n)(ir_node *node, int n) = __get_irn_intra_n;
+ir_node *(*__get_irn_n)(const ir_node *node, int n) = __get_irn_intra_n;
ir_node *
-(get_irn_n)(ir_node *node, int n) {
+(get_irn_n)(const ir_node *node, int n) {
return __get_irn_n(node, n);
}
/* this works for all except Block */
ir_node *
-get_nodes_block (ir_node *node) {
+get_nodes_block (const ir_node *node) {
assert (!(node->op == op_Block));
return get_irn_n(node, -1);
}
* Get the n-th predecessor of a node.
* This function removes Id predecessors.
*/
-ir_node *get_irn_n (ir_node *node, int n);
-ir_node *get_irn_intra_n (ir_node *node, int n);
-ir_node *get_irn_inter_n (ir_node *node, int n);
+ir_node *get_irn_n (const ir_node *node, int n);
+ir_node *get_irn_intra_n (const ir_node *node, int n);
+ir_node *get_irn_inter_n (const ir_node *node, int n);
/** Replace the n-th predecessor of a node with a new one. */
void set_irn_n (ir_node *node, int n, ir_node *in);
* To express the difference to access routines that work for all
* nodes we use infix "nodes" and do not name this function
* get_irn_block. */
-ir_node *get_nodes_block (ir_node *node);
+ir_node *get_nodes_block (const ir_node *node);
/** Sets the Block of a node. */
void set_nodes_block (ir_node *node, ir_node *block);
* @return A pointer of type @p type.
*/
#define get_irn_data(node,type,off) \
- (assert(off > 0 && "Invalid node data offset"), (type *) ((char *) (node) - (off)))
+ (assert(off > 0 && "Invalid node data offset"), (type *) ((char *) (node) - (off)))
+
+/**
+ * Get the pointer to the node some custom data belongs to.
+ * @param data The pointer to the custom data.
+ * @param off The number as returned by register_additional_node_data().
+ * @return A pointer to the ir node the custom data belongs to.
+ */
+#define get_irn_data_base(data,off) \
+ (assert(off > 0 && "Invalid node data offset"), (ir_node *) ((char *) (data) + (off)))
/**
* Request additional data to be allocated with an ir node.
#include "entity_t.h"
#include "type_t.h"
+
/** ir node attributes **/
/** Block attributes */
* Intern version for libFirm.
*/
static INLINE ir_node *
-__get_irn_intra_n (ir_node *node, int n) {
+__get_irn_intra_n (const ir_node *node, int n) {
assert(node); assert(-1 <= n && n < __get_irn_intra_arity(node));
return (node->in[n + 1] = skip_Id(node->in[n + 1]));
* Intern version for libFirm.
*/
static INLINE ir_node*
-__get_irn_inter_n (ir_node *node, int n) {
+__get_irn_inter_n (const ir_node *node, int n) {
assert(node); assert(-1 <= n && n < __get_irn_inter_arity(node));
/* handle Filter and Block specially */
* If it is a block, the entry -1 is NULL.
* Intern version for libFirm.
*/
-extern ir_node *(*__get_irn_n)(ir_node *node, int n);
+extern ir_node *(*__get_irn_n)(const ir_node *node, int n);
/**
* Gets the mode of a node.