1 /* $Id: node.h,v 1.36 2010/08/11 14:08:44 ragge Exp $ */
3 * Copyright (c) 2003 Anders Magnusson (ragge@ludd.luth.se).
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * 2. Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
14 * 3. The name of the author may not be used to endorse or promote products
15 * derived from this software without specific prior written permission
17 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
18 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
33 * The attribute struct contains stuff that might be useful in
34 * both passes; but currently it's only legal to use it in pass1.
49 * The node structure is the basic element in the compiler.
50 * Depending on the operator, it may be one of several types.
52 * This is rewritten to be a struct instead of a union as it
53 * was in the old compiler.
55 typedef unsigned int TWORD
;
69 #define n_reg n_3._reg
70 #define n_regw n_3._regw
95 #ifdef SPECIAL_INTEGERS
107 /* To store F- or D-floats */
109 unsigned short fd1
, fd2
, fd3
, fd4
;
112 #error missing softfloat structure definition
120 #define n_name n_5._name
121 #define n_stsize n_5._stsize
124 #define n_label n_6._label
125 #define n_stalign n_6._stalign
126 #define n_flags n_6._flags
129 #define n_left n_f.n_u.n_l._left
130 #define n_lval n_f.n_u.n_l._lval
131 #define n_slval n_f.n_u.n_l._slval
132 #define n_right n_f.n_u.n_r._right
133 #define n_rval n_f.n_u.n_r._rval
134 #define n_sp n_f.n_u.n_r._sp
135 #define n_dcon n_f._dcon
137 #define NLOCAL1 010000
138 #define NLOCAL2 020000
139 #define NLOCAL3 040000
143 * MAXOP is the highest number used by the backend.
168 * Bitwise operations.
181 * Logical compare nodes.