11499 lines
123 KiB
Plaintext
11499 lines
123 KiB
Plaintext
|
# 1 "/a/users/paul/gcc2/cc1/../common/tree.c"
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
# 1 "/a/users/paul/gcc2/cc1/../common/config.h" 1
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
# 1 "/a/users/paul/gcc2/cc1/../common/tm.h" 1
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
# 1 "/a/users/paul/gcc2/cc1/../common/i386/gstabs.h" 1
|
|||
|
# 1 "/a/users/paul/gcc2/cc1/../common/i386/gas.h" 1
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
# 1 "/a/users/paul/gcc2/cc1/../common/i386/i386.h" 1
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern int target_flags;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
# 119 "/a/users/paul/gcc2/cc1/../common/i386/i386.h"
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
# 258 "/a/users/paul/gcc2/cc1/../common/i386/i386.h"
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
enum reg_class
|
|||
|
{
|
|||
|
NO_REGS,
|
|||
|
AREG, DREG, CREG, BREG,
|
|||
|
Q_REGS,
|
|||
|
SIREG, DIREG,
|
|||
|
INDEX_REGS,
|
|||
|
GENERAL_REGS,
|
|||
|
FP_TOP_REG, FP_SECOND_REG,
|
|||
|
FLOAT_REGS,
|
|||
|
ALL_REGS, LIM_REG_CLASSES
|
|||
|
};
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
# 406 "/a/users/paul/gcc2/cc1/../common/i386/i386.h"
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
# 421 "/a/users/paul/gcc2/cc1/../common/i386/i386.h"
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern enum reg_class regclass_map[17 ];
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
# 487 "/a/users/paul/gcc2/cc1/../common/i386/i386.h"
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
# 728 "/a/users/paul/gcc2/cc1/../common/i386/i386.h"
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
# 781 "/a/users/paul/gcc2/cc1/../common/i386/i386.h"
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
# 850 "/a/users/paul/gcc2/cc1/../common/i386/i386.h"
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
# 922 "/a/users/paul/gcc2/cc1/../common/i386/i386.h"
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
# 1002 "/a/users/paul/gcc2/cc1/../common/i386/i386.h"
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
# 1056 "/a/users/paul/gcc2/cc1/../common/i386/i386.h"
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
# 1097 "/a/users/paul/gcc2/cc1/../common/i386/i386.h"
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
# 1194 "/a/users/paul/gcc2/cc1/../common/i386/i386.h"
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
# 1217 "/a/users/paul/gcc2/cc1/../common/i386/i386.h"
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern struct rtx_def *i386_compare_op0, *i386_compare_op1;
|
|||
|
extern struct rtx_def *(*i386_compare_gen)(), *(*i386_compare_gen_eq)();
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
# 1359 "/a/users/paul/gcc2/cc1/../common/i386/i386.h"
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern char *hi_reg_name[];
|
|||
|
extern char *qi_reg_name[];
|
|||
|
extern char *qi_high_reg_name[];
|
|||
|
|
|||
|
|
|||
|
# 1527 "/a/users/paul/gcc2/cc1/../common/i386/i386.h"
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
# 1560 "/a/users/paul/gcc2/cc1/../common/i386/i386.h"
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
# 23 "/a/users/paul/gcc2/cc1/../common/i386/gas.h" 2
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
# 1 "/a/users/paul/gcc2/cc1/../common/i386/bsd.h" 1
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
# 1 "/a/users/paul/gcc2/cc1/../common/i386/unix.h" 1
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
# 23 "/a/users/paul/gcc2/cc1/../common/i386/bsd.h" 2
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
# 46 "/a/users/paul/gcc2/cc1/../common/i386/gas.h" 2
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
# 125 "/a/users/paul/gcc2/cc1/../common/i386/gas.h"
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
# 158 "/a/users/paul/gcc2/cc1/../common/i386/gas.h"
|
|||
|
|
|||
|
# 1 "/a/users/paul/gcc2/cc1/../common/i386/gstabs.h" 2
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
# 6 "/a/users/paul/gcc2/cc1/../common/tm.h" 2
|
|||
|
|
|||
|
|
|||
|
|
|||
|
# 1 "/a/users/paul/gcc2/cc1/../common/i386/perform.h" 1
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
# 39 "/a/users/paul/gcc2/cc1/../common/i386/perform.h"
|
|||
|
|
|||
|
|
|||
|
# 49 "/a/users/paul/gcc2/cc1/../common/i386/perform.h"
|
|||
|
|
|||
|
|
|||
|
# 60 "/a/users/paul/gcc2/cc1/../common/i386/perform.h"
|
|||
|
|
|||
|
|
|||
|
# 70 "/a/users/paul/gcc2/cc1/../common/i386/perform.h"
|
|||
|
|
|||
|
|
|||
|
# 93 "/a/users/paul/gcc2/cc1/../common/i386/perform.h"
|
|||
|
|
|||
|
# 9 "/a/users/paul/gcc2/cc1/../common/tm.h" 2
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
# 51 "/a/users/paul/gcc2/cc1/../common/tm.h"
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
# 48 "/a/users/paul/gcc2/cc1/../common/config.h" 2
|
|||
|
|
|||
|
# 35 "/a/users/paul/gcc2/cc1/../common/tree.c" 2
|
|||
|
|
|||
|
# 1 "/a/users/paul/gcc2/cc1/../common/flags.h" 1
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern char *main_input_filename;
|
|||
|
|
|||
|
enum debug_info_type
|
|||
|
{
|
|||
|
NO_DEBUG,
|
|||
|
DBX_DEBUG,
|
|||
|
SDB_DEBUG,
|
|||
|
DWARF_DEBUG,
|
|||
|
XCOFF_DEBUG
|
|||
|
};
|
|||
|
|
|||
|
|
|||
|
extern enum debug_info_type write_symbols;
|
|||
|
|
|||
|
enum debug_info_level
|
|||
|
{
|
|||
|
DINFO_LEVEL_NONE,
|
|||
|
DINFO_LEVEL_TERSE,
|
|||
|
DINFO_LEVEL_NORMAL,
|
|||
|
DINFO_LEVEL_VERBOSE
|
|||
|
};
|
|||
|
|
|||
|
|
|||
|
extern enum debug_info_level debug_info_level;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern int use_gnu_debug_info_extensions;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern int optimize;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern int obey_regdecls;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern int quiet_flag;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern int inhibit_warnings;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern int extra_warnings;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern int warn_unused;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern int warn_inline;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern int warn_uninitialized;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern int warn_shadow;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern int warn_switch;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern int warn_return_type;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern int warn_cast_align;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern int warn_template_debugging;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern int warn_id_clash;
|
|||
|
extern int id_clash_len;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern int warn_aggregate_return;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern int profile_flag;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern int profile_block_flag;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern int pedantic;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern int in_system_header;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern int flag_print_asm_name;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern int flag_signed_char;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern int flag_short_enums;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern int flag_caller_saves;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern int flag_pcc_struct_return;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern int flag_force_mem;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern int flag_force_addr;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern int flag_defer_pop;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern int flag_float_store;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern int flag_strength_reduce;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern int flag_unroll_loops;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern int flag_unroll_all_loops;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern int flag_cse_follow_jumps;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern int flag_cse_skip_blocks;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern int flag_expensive_optimizations;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern int flag_writable_strings;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern int flag_no_function_cse;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern int flag_omit_frame_pointer;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern int flag_no_peephole;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern int flag_volatile;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern int flag_volatile_global;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern int flag_fast_math;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern int flag_inline_functions;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern int flag_keep_inline_functions;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern int flag_no_inline;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern int flag_syntax_only;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern int flag_gen_aux_info;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern int flag_shared_data;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern int flag_schedule_insns;
|
|||
|
extern int flag_schedule_insns_after_reload;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern int flag_delayed_branch;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern int flag_pretend_float;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern int flag_pedantic_errors;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern int flag_pic;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern int flag_no_common;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern int flag_inhibit_size_directive;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern int flag_verbose_asm;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern int flag_gnu_linker;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern int frame_pointer_needed;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern int can_reach_end;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern int current_function_has_nonlocal_label;
|
|||
|
|
|||
|
# 36 "/a/users/paul/gcc2/cc1/../common/tree.c" 2
|
|||
|
|
|||
|
# 1 "/a/users/paul/gcc2/cc1/../common/tree.h" 1
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
# 1 "/a/users/paul/gcc2/cc1/../common/machmode.h" 1
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
enum machine_mode {
|
|||
|
# 1 "/a/users/paul/gcc2/cc1/../common/machmode.def" 1
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
VOIDmode,
|
|||
|
|
|||
|
QImode,
|
|||
|
HImode,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
PSImode,
|
|||
|
SImode,
|
|||
|
PDImode,
|
|||
|
DImode,
|
|||
|
TImode,
|
|||
|
OImode,
|
|||
|
|
|||
|
QFmode,
|
|||
|
HFmode,
|
|||
|
SFmode,
|
|||
|
DFmode,
|
|||
|
XFmode,
|
|||
|
TFmode,
|
|||
|
|
|||
|
|
|||
|
SCmode,
|
|||
|
DCmode,
|
|||
|
XCmode,
|
|||
|
TCmode,
|
|||
|
|
|||
|
CQImode,
|
|||
|
CHImode,
|
|||
|
CSImode,
|
|||
|
CDImode,
|
|||
|
CTImode,
|
|||
|
COImode,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
BLKmode,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
CCmode,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
# 78 "/a/users/paul/gcc2/cc1/../common/machmode.h" 2
|
|||
|
|
|||
|
|
|||
|
|
|||
|
CCFPEQmode ,
|
|||
|
|
|||
|
MAX_MACHINE_MODE };
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern char *mode_name[];
|
|||
|
|
|||
|
|
|||
|
enum mode_class { MODE_RANDOM, MODE_INT, MODE_FLOAT, MODE_PARTIAL_INT, MODE_CC,
|
|||
|
MODE_COMPLEX_INT, MODE_COMPLEX_FLOAT, MAX_MODE_CLASS};
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern enum mode_class mode_class[];
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern int mode_size[];
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern int mode_unit_size[];
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern enum machine_mode mode_wider_mode[];
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern enum machine_mode mode_for_size (unsigned int, enum mode_class, int) ;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern enum machine_mode get_best_mode (int, int, int, enum machine_mode, int) ;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern enum machine_mode class_narrowest_mode[];
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern enum machine_mode byte_mode;
|
|||
|
extern enum machine_mode word_mode;
|
|||
|
|
|||
|
|
|||
|
# 20 "/a/users/paul/gcc2/cc1/../common/tree.h" 2
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
enum tree_code {
|
|||
|
# 1 "/a/users/paul/gcc2/cc1/../common/tree.def" 1
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
ERROR_MARK,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
IDENTIFIER_NODE,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
OP_IDENTIFIER,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
TREE_LIST,
|
|||
|
|
|||
|
|
|||
|
TREE_VEC,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
BLOCK,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
VOID_TYPE,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
INTEGER_TYPE,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
REAL_TYPE,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
COMPLEX_TYPE,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
ENUMERAL_TYPE,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
BOOLEAN_TYPE,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
CHAR_TYPE,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
POINTER_TYPE,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
OFFSET_TYPE,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
REFERENCE_TYPE,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
METHOD_TYPE,
|
|||
|
|
|||
|
|
|||
|
FILE_TYPE,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
ARRAY_TYPE,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
SET_TYPE,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
STRING_TYPE,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
RECORD_TYPE,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
UNION_TYPE,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
QUAL_UNION_TYPE,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
FUNCTION_TYPE,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
LANG_TYPE,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
INTEGER_CST,
|
|||
|
|
|||
|
|
|||
|
REAL_CST,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
COMPLEX_CST,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
STRING_CST,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
FUNCTION_DECL,
|
|||
|
LABEL_DECL,
|
|||
|
CONST_DECL,
|
|||
|
TYPE_DECL,
|
|||
|
VAR_DECL,
|
|||
|
PARM_DECL,
|
|||
|
RESULT_DECL,
|
|||
|
FIELD_DECL,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
COMPONENT_REF,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
BIT_FIELD_REF,
|
|||
|
|
|||
|
|
|||
|
INDIRECT_REF,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
OFFSET_REF,
|
|||
|
|
|||
|
|
|||
|
BUFFER_REF,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
ARRAY_REF,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
CONSTRUCTOR,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
COMPOUND_EXPR,
|
|||
|
|
|||
|
|
|||
|
MODIFY_EXPR,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
INIT_EXPR,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
TARGET_EXPR,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
COND_EXPR,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
BIND_EXPR,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
CALL_EXPR,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
METHOD_CALL_EXPR,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
WITH_CLEANUP_EXPR,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
PLUS_EXPR,
|
|||
|
MINUS_EXPR,
|
|||
|
MULT_EXPR,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
TRUNC_DIV_EXPR,
|
|||
|
|
|||
|
|
|||
|
CEIL_DIV_EXPR,
|
|||
|
|
|||
|
|
|||
|
FLOOR_DIV_EXPR,
|
|||
|
|
|||
|
|
|||
|
ROUND_DIV_EXPR,
|
|||
|
|
|||
|
|
|||
|
TRUNC_MOD_EXPR,
|
|||
|
CEIL_MOD_EXPR,
|
|||
|
FLOOR_MOD_EXPR,
|
|||
|
ROUND_MOD_EXPR,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
RDIV_EXPR,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
EXACT_DIV_EXPR,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
FIX_TRUNC_EXPR,
|
|||
|
FIX_CEIL_EXPR,
|
|||
|
FIX_FLOOR_EXPR,
|
|||
|
FIX_ROUND_EXPR,
|
|||
|
|
|||
|
|
|||
|
FLOAT_EXPR,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
EXPON_EXPR,
|
|||
|
|
|||
|
|
|||
|
NEGATE_EXPR,
|
|||
|
|
|||
|
MIN_EXPR,
|
|||
|
MAX_EXPR,
|
|||
|
ABS_EXPR,
|
|||
|
FFS_EXPR,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
LSHIFT_EXPR,
|
|||
|
RSHIFT_EXPR,
|
|||
|
LROTATE_EXPR,
|
|||
|
RROTATE_EXPR,
|
|||
|
|
|||
|
|
|||
|
BIT_IOR_EXPR,
|
|||
|
BIT_XOR_EXPR,
|
|||
|
BIT_AND_EXPR,
|
|||
|
BIT_ANDTC_EXPR,
|
|||
|
BIT_NOT_EXPR,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
TRUTH_ANDIF_EXPR,
|
|||
|
TRUTH_ORIF_EXPR,
|
|||
|
TRUTH_AND_EXPR,
|
|||
|
TRUTH_OR_EXPR,
|
|||
|
TRUTH_XOR_EXPR,
|
|||
|
TRUTH_NOT_EXPR,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
LT_EXPR,
|
|||
|
LE_EXPR,
|
|||
|
GT_EXPR,
|
|||
|
GE_EXPR,
|
|||
|
EQ_EXPR,
|
|||
|
NE_EXPR,
|
|||
|
|
|||
|
|
|||
|
IN_EXPR,
|
|||
|
SET_LE_EXPR,
|
|||
|
CARD_EXPR,
|
|||
|
RANGE_EXPR,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
CONVERT_EXPR,
|
|||
|
|
|||
|
|
|||
|
NOP_EXPR,
|
|||
|
|
|||
|
|
|||
|
NON_LVALUE_EXPR,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
SAVE_EXPR,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
RTL_EXPR,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
ADDR_EXPR,
|
|||
|
|
|||
|
|
|||
|
REFERENCE_EXPR,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
ENTRY_VALUE_EXPR,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
COMPLEX_EXPR,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
CONJ_EXPR,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
REALPART_EXPR,
|
|||
|
IMAGPART_EXPR,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
PREDECREMENT_EXPR,
|
|||
|
PREINCREMENT_EXPR,
|
|||
|
POSTDECREMENT_EXPR,
|
|||
|
POSTINCREMENT_EXPR,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
LABEL_EXPR,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
GOTO_EXPR,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
RETURN_EXPR,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
EXIT_EXPR,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
LOOP_EXPR,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
# 27 "/a/users/paul/gcc2/cc1/../common/tree.h" 2
|
|||
|
|
|||
|
|
|||
|
LAST_AND_UNUSED_TREE_CODE
|
|||
|
|
|||
|
};
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern char **tree_code_type;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern int *tree_code_length;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern char **tree_code_name;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
enum built_in_function
|
|||
|
{
|
|||
|
NOT_BUILT_IN,
|
|||
|
BUILT_IN_ALLOCA,
|
|||
|
BUILT_IN_ABS,
|
|||
|
BUILT_IN_FABS,
|
|||
|
BUILT_IN_LABS,
|
|||
|
BUILT_IN_FFS,
|
|||
|
BUILT_IN_DIV,
|
|||
|
BUILT_IN_LDIV,
|
|||
|
BUILT_IN_FFLOOR,
|
|||
|
BUILT_IN_FCEIL,
|
|||
|
BUILT_IN_FMOD,
|
|||
|
BUILT_IN_FREM,
|
|||
|
BUILT_IN_MEMCPY,
|
|||
|
BUILT_IN_MEMCMP,
|
|||
|
BUILT_IN_MEMSET,
|
|||
|
BUILT_IN_STRCPY,
|
|||
|
BUILT_IN_STRCMP,
|
|||
|
BUILT_IN_STRLEN,
|
|||
|
BUILT_IN_FSQRT,
|
|||
|
BUILT_IN_SIN,
|
|||
|
BUILT_IN_COS,
|
|||
|
BUILT_IN_GETEXP,
|
|||
|
BUILT_IN_GETMAN,
|
|||
|
BUILT_IN_SAVEREGS,
|
|||
|
BUILT_IN_CLASSIFY_TYPE,
|
|||
|
BUILT_IN_NEXT_ARG,
|
|||
|
BUILT_IN_ARGS_INFO,
|
|||
|
BUILT_IN_CONSTANT_P,
|
|||
|
BUILT_IN_FRAME_ADDRESS,
|
|||
|
BUILT_IN_RETURN_ADDRESS,
|
|||
|
BUILT_IN_CALLER_RETURN_ADDRESS,
|
|||
|
BUILT_IN_APPLY_ARGS,
|
|||
|
BUILT_IN_APPLY,
|
|||
|
BUILT_IN_RETURN,
|
|||
|
|
|||
|
|
|||
|
BUILT_IN_NEW,
|
|||
|
BUILT_IN_VEC_NEW,
|
|||
|
BUILT_IN_DELETE,
|
|||
|
BUILT_IN_VEC_DELETE
|
|||
|
};
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
typedef union tree_node *tree;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
struct tree_common
|
|||
|
{
|
|||
|
union tree_node *chain;
|
|||
|
union tree_node *type;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
enum tree_code code : 8;
|
|||
|
|
|||
|
|
|||
|
unsigned side_effects_flag : 1;
|
|||
|
unsigned constant_flag : 1;
|
|||
|
unsigned permanent_flag : 1;
|
|||
|
unsigned addressable_flag : 1;
|
|||
|
unsigned volatile_flag : 1;
|
|||
|
unsigned readonly_flag : 1;
|
|||
|
unsigned unsigned_flag : 1;
|
|||
|
unsigned asm_written_flag: 1;
|
|||
|
|
|||
|
unsigned used_flag : 1;
|
|||
|
unsigned raises_flag : 1;
|
|||
|
unsigned static_flag : 1;
|
|||
|
unsigned public_flag : 1;
|
|||
|
unsigned private_flag : 1;
|
|||
|
unsigned protected_flag : 1;
|
|||
|
|
|||
|
unsigned lang_flag_0 : 1;
|
|||
|
unsigned lang_flag_1 : 1;
|
|||
|
unsigned lang_flag_2 : 1;
|
|||
|
unsigned lang_flag_3 : 1;
|
|||
|
unsigned lang_flag_4 : 1;
|
|||
|
unsigned lang_flag_5 : 1;
|
|||
|
unsigned lang_flag_6 : 1;
|
|||
|
|
|||
|
};
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
struct tree_int_cst
|
|||
|
{
|
|||
|
char common[sizeof (struct tree_common)];
|
|||
|
int int_cst_low;
|
|||
|
int int_cst_high;
|
|||
|
};
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
# 1 "/a/users/paul/gcc2/cc1/../common/real.h" 1
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
# 141 "/a/users/paul/gcc2/cc1/../common/real.h"
|
|||
|
|
|||
|
|
|||
|
|
|||
|
# 163 "/a/users/paul/gcc2/cc1/../common/real.h"
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern double ldexp ();
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
double ereal_atof ();
|
|||
|
|
|||
|
# 267 "/a/users/paul/gcc2/cc1/../common/real.h"
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern double real_value_truncate ();
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern double dconst0;
|
|||
|
extern double dconst1;
|
|||
|
extern double dconst2;
|
|||
|
extern double dconstm1;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
union real_extract
|
|||
|
{
|
|||
|
double d;
|
|||
|
int i[sizeof (double ) / sizeof (int )];
|
|||
|
};
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
double real_value_from_int_cst ();
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
# 396 "/a/users/paul/gcc2/cc1/../common/tree.h" 2
|
|||
|
|
|||
|
|
|||
|
struct tree_real_cst
|
|||
|
{
|
|||
|
char common[sizeof (struct tree_common)];
|
|||
|
struct rtx_def *rtl;
|
|||
|
|
|||
|
double real_cst;
|
|||
|
};
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
struct tree_string
|
|||
|
{
|
|||
|
char common[sizeof (struct tree_common)];
|
|||
|
struct rtx_def *rtl;
|
|||
|
|
|||
|
int length;
|
|||
|
char *pointer;
|
|||
|
};
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
struct tree_complex
|
|||
|
{
|
|||
|
char common[sizeof (struct tree_common)];
|
|||
|
struct rtx_def *rtl;
|
|||
|
|
|||
|
union tree_node *real;
|
|||
|
union tree_node *imag;
|
|||
|
};
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
struct tree_identifier
|
|||
|
{
|
|||
|
char common[sizeof (struct tree_common)];
|
|||
|
int length;
|
|||
|
char *pointer;
|
|||
|
};
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
struct tree_list
|
|||
|
{
|
|||
|
char common[sizeof (struct tree_common)];
|
|||
|
union tree_node *purpose;
|
|||
|
union tree_node *value;
|
|||
|
};
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
struct tree_vec
|
|||
|
{
|
|||
|
char common[sizeof (struct tree_common)];
|
|||
|
int length;
|
|||
|
union tree_node *a[1];
|
|||
|
};
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
struct tree_exp
|
|||
|
{
|
|||
|
char common[sizeof (struct tree_common)];
|
|||
|
int complexity;
|
|||
|
union tree_node *operands[1];
|
|||
|
};
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
struct tree_block
|
|||
|
{
|
|||
|
char common[sizeof (struct tree_common)];
|
|||
|
|
|||
|
unsigned handler_block_flag : 1;
|
|||
|
unsigned abstract_flag : 1;
|
|||
|
|
|||
|
union tree_node *vars;
|
|||
|
union tree_node *type_tags;
|
|||
|
union tree_node *subblocks;
|
|||
|
union tree_node *supercontext;
|
|||
|
union tree_node *abstract_origin;
|
|||
|
struct rtx_def *end_note;
|
|||
|
};
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
struct tree_type
|
|||
|
{
|
|||
|
char common[sizeof (struct tree_common)];
|
|||
|
union tree_node *values;
|
|||
|
union tree_node *size;
|
|||
|
unsigned uid;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
enum machine_mode mode : 8;
|
|||
|
|
|||
|
unsigned char precision;
|
|||
|
|
|||
|
unsigned no_force_blk_flag : 1;
|
|||
|
unsigned lang_flag_0 : 1;
|
|||
|
unsigned lang_flag_1 : 1;
|
|||
|
unsigned lang_flag_2 : 1;
|
|||
|
unsigned lang_flag_3 : 1;
|
|||
|
unsigned lang_flag_4 : 1;
|
|||
|
unsigned lang_flag_5 : 1;
|
|||
|
unsigned lang_flag_6 : 1;
|
|||
|
|
|||
|
unsigned int align;
|
|||
|
union tree_node *pointer_to;
|
|||
|
union tree_node *reference_to;
|
|||
|
int parse_info;
|
|||
|
int symtab_address;
|
|||
|
union tree_node *name;
|
|||
|
union tree_node *minval;
|
|||
|
union tree_node *maxval;
|
|||
|
union tree_node *next_variant;
|
|||
|
union tree_node *main_variant;
|
|||
|
union tree_node *binfo;
|
|||
|
union tree_node *noncopied_parts;
|
|||
|
union tree_node *context;
|
|||
|
|
|||
|
struct lang_type *lang_specific;
|
|||
|
};
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
struct tree_decl
|
|||
|
{
|
|||
|
char common[sizeof (struct tree_common)];
|
|||
|
char *filename;
|
|||
|
int linenum;
|
|||
|
union tree_node *size;
|
|||
|
unsigned int uid;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
enum machine_mode mode : 8;
|
|||
|
|
|||
|
|
|||
|
unsigned external_flag : 1;
|
|||
|
unsigned nonlocal_flag : 1;
|
|||
|
unsigned regdecl_flag : 1;
|
|||
|
unsigned inline_flag : 1;
|
|||
|
unsigned bit_field_flag : 1;
|
|||
|
unsigned virtual_flag : 1;
|
|||
|
unsigned ignored_flag : 1;
|
|||
|
unsigned abstract_flag : 1;
|
|||
|
|
|||
|
unsigned in_system_header_flag : 1;
|
|||
|
|
|||
|
|
|||
|
unsigned lang_flag_0 : 1;
|
|||
|
unsigned lang_flag_1 : 1;
|
|||
|
unsigned lang_flag_2 : 1;
|
|||
|
unsigned lang_flag_3 : 1;
|
|||
|
unsigned lang_flag_4 : 1;
|
|||
|
unsigned lang_flag_5 : 1;
|
|||
|
unsigned lang_flag_6 : 1;
|
|||
|
unsigned lang_flag_7 : 1;
|
|||
|
|
|||
|
union tree_node *name;
|
|||
|
union tree_node *context;
|
|||
|
union tree_node *arguments;
|
|||
|
union tree_node *result;
|
|||
|
union tree_node *initial;
|
|||
|
union tree_node *abstract_origin;
|
|||
|
|
|||
|
char *print_name;
|
|||
|
union tree_node *assembler_name;
|
|||
|
struct rtx_def *rtl;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
int frame_size;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
union {
|
|||
|
struct rtx_def *r;
|
|||
|
int i;
|
|||
|
} saved_insns;
|
|||
|
union tree_node *vindex;
|
|||
|
|
|||
|
struct lang_decl *lang_specific;
|
|||
|
};
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
union tree_node
|
|||
|
{
|
|||
|
struct tree_common common;
|
|||
|
struct tree_int_cst int_cst;
|
|||
|
struct tree_real_cst real_cst;
|
|||
|
struct tree_string string;
|
|||
|
struct tree_complex complex;
|
|||
|
struct tree_identifier identifier;
|
|||
|
struct tree_decl decl;
|
|||
|
struct tree_type type;
|
|||
|
struct tree_list list;
|
|||
|
struct tree_vec vec;
|
|||
|
struct tree_exp exp;
|
|||
|
struct tree_block block;
|
|||
|
};
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern char *xmalloc ();
|
|||
|
extern char *xrealloc ();
|
|||
|
|
|||
|
|
|||
|
extern char *oballoc (int) ;
|
|||
|
extern char *permalloc (int) ;
|
|||
|
extern char *savealloc (int) ;
|
|||
|
extern void free (void *) ;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern tree make_node (enum tree_code) ;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern tree copy_node (tree) ;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern tree copy_list (tree) ;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern tree make_tree_vec (int) ;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern tree get_identifier (char *) ;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
# 1065 "/a/users/paul/gcc2/cc1/../common/tree.h"
|
|||
|
|
|||
|
extern tree build ();
|
|||
|
extern tree build_nt ();
|
|||
|
extern tree build_parse_node ();
|
|||
|
|
|||
|
|
|||
|
extern tree build_int_2_wide (int , int ) ;
|
|||
|
extern tree build_real (tree, double ) ;
|
|||
|
extern tree build_real_from_int_cst (tree, tree) ;
|
|||
|
extern tree build_complex (tree, tree) ;
|
|||
|
extern tree build_string (int, char *) ;
|
|||
|
extern tree build1 (enum tree_code, tree, tree) ;
|
|||
|
extern tree build_tree_list (tree, tree) ;
|
|||
|
extern tree build_decl_list (tree, tree) ;
|
|||
|
extern tree build_decl (enum tree_code, tree, tree) ;
|
|||
|
extern tree build_block (tree, tree, tree, tree, tree) ;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern tree make_signed_type (int) ;
|
|||
|
extern tree make_unsigned_type (int) ;
|
|||
|
extern tree signed_or_unsigned_type (int, tree) ;
|
|||
|
extern void fixup_unsigned_type (tree) ;
|
|||
|
extern tree build_pointer_type (tree) ;
|
|||
|
extern tree build_reference_type (tree) ;
|
|||
|
extern tree build_index_type (tree) ;
|
|||
|
extern tree build_index_2_type (tree, tree) ;
|
|||
|
extern tree build_array_type (tree, tree) ;
|
|||
|
extern tree build_function_type (tree, tree) ;
|
|||
|
extern tree build_method_type (tree, tree) ;
|
|||
|
extern tree build_offset_type (tree, tree) ;
|
|||
|
extern tree build_complex_type (tree) ;
|
|||
|
extern tree array_type_nelts (tree) ;
|
|||
|
|
|||
|
extern tree value_member (tree, tree) ;
|
|||
|
extern tree purpose_member (tree, tree) ;
|
|||
|
extern tree binfo_member (tree, tree) ;
|
|||
|
extern int tree_int_cst_equal (tree, tree) ;
|
|||
|
extern int tree_int_cst_lt (tree, tree) ;
|
|||
|
extern int index_type_equal (tree, tree) ;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern tree make_tree ();
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern tree build_type_variant (tree, int, int) ;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern tree build_type_copy (tree) ;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern void layout_type (tree) ;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern tree type_hash_canon (int, tree) ;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern void layout_decl (tree, unsigned) ;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern tree fold (tree) ;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern tree non_lvalue (tree) ;
|
|||
|
|
|||
|
extern tree convert (tree, tree) ;
|
|||
|
extern tree size_in_bytes (tree) ;
|
|||
|
extern int int_size_in_bytes (tree) ;
|
|||
|
extern tree size_binop (enum tree_code, tree, tree) ;
|
|||
|
extern tree size_int (unsigned) ;
|
|||
|
extern tree round_up (tree, int) ;
|
|||
|
extern tree get_pending_sizes (void) ;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern tree sizetype;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern tree chainon (tree, tree) ;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern tree tree_cons (tree, tree, tree) ;
|
|||
|
extern tree perm_tree_cons (tree, tree, tree) ;
|
|||
|
extern tree temp_tree_cons (tree, tree, tree) ;
|
|||
|
extern tree saveable_tree_cons (tree, tree, tree) ;
|
|||
|
extern tree decl_tree_cons (tree, tree, tree) ;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern tree tree_last (tree) ;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern tree nreverse (tree) ;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern int list_length (tree) ;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern int integer_zerop (tree) ;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern int integer_onep (tree) ;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern int integer_all_onesp (tree) ;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern int integer_pow2p (tree) ;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern int staticp (tree) ;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern int lvalue_or_else (tree, char *) ;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern tree save_expr (tree) ;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern tree variable_size (tree) ;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern tree stabilize_reference (tree) ;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern tree get_unwidened (tree, tree) ;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern tree get_narrower (tree, int *) ;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern tree type_for_mode (enum machine_mode, int) ;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern tree type_for_size (unsigned, int) ;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern tree unsigned_type (tree) ;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern tree signed_type (tree) ;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern tree maybe_build_cleanup (tree) ;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern tree get_inner_reference (tree, int *, int *, tree *, enum machine_mode *, int *, int *) ;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern tree decl_function_context (tree) ;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern tree decl_type_context (tree) ;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern char *function_cannot_inline_p (tree) ;
|
|||
|
|
|||
|
|
|||
|
extern int real_zerop (tree) ;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern tree integer_zero_node;
|
|||
|
|
|||
|
|
|||
|
extern tree integer_one_node;
|
|||
|
|
|||
|
|
|||
|
extern tree size_zero_node;
|
|||
|
|
|||
|
|
|||
|
extern tree size_one_node;
|
|||
|
|
|||
|
|
|||
|
extern tree null_pointer_node;
|
|||
|
|
|||
|
|
|||
|
extern tree error_mark_node;
|
|||
|
|
|||
|
|
|||
|
extern tree void_type_node;
|
|||
|
|
|||
|
|
|||
|
extern tree integer_type_node;
|
|||
|
|
|||
|
|
|||
|
extern tree unsigned_type_node;
|
|||
|
|
|||
|
|
|||
|
extern tree char_type_node;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern char *input_filename;
|
|||
|
|
|||
|
|
|||
|
extern int lineno;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern int pedantic;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern int immediate_size_expand;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern tree current_function_decl;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern int current_function_calls_setjmp;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern int current_function_calls_longjmp;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern int all_types_permanent;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern char *(*decl_printable_name) ();
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern void (*incomplete_decl_finalize_hook) ();
|
|||
|
|
|||
|
|
|||
|
extern char *perm_calloc (int, long) ;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern tree expand_start_stmt_expr (void) ;
|
|||
|
extern tree expand_end_stmt_expr (tree) ;
|
|||
|
extern void expand_expr_stmt (tree) ;
|
|||
|
extern void expand_decl_init (tree) ;
|
|||
|
extern void clear_last_expr (void) ;
|
|||
|
extern void expand_label (tree) ;
|
|||
|
extern void expand_goto (tree) ;
|
|||
|
extern void expand_asm (tree) ;
|
|||
|
extern void expand_start_cond (tree, int) ;
|
|||
|
extern void expand_end_cond (void) ;
|
|||
|
extern void expand_start_else (void) ;
|
|||
|
extern void expand_start_elseif (tree) ;
|
|||
|
extern struct nesting *expand_start_loop (int) ;
|
|||
|
extern struct nesting *expand_start_loop_continue_elsewhere (int) ;
|
|||
|
extern void expand_loop_continue_here (void) ;
|
|||
|
extern void expand_end_loop (void) ;
|
|||
|
extern int expand_continue_loop (struct nesting *) ;
|
|||
|
extern int expand_exit_loop (struct nesting *) ;
|
|||
|
extern int expand_exit_loop_if_false (struct nesting *, tree) ;
|
|||
|
extern int expand_exit_something (void) ;
|
|||
|
|
|||
|
extern void expand_null_return (void) ;
|
|||
|
extern void expand_return (tree) ;
|
|||
|
extern void expand_start_bindings (int) ;
|
|||
|
extern void expand_end_bindings (tree, int, int) ;
|
|||
|
extern tree last_cleanup_this_contour (void) ;
|
|||
|
extern void expand_start_case (int, tree, tree, char *) ;
|
|||
|
extern void expand_end_case (tree) ;
|
|||
|
extern int pushcase (tree, tree, tree *) ;
|
|||
|
extern int pushcase_range (tree, tree, tree, tree *) ;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern tree invert_truthvalue (tree) ;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern void init_lex (void) ;
|
|||
|
|
|||
|
extern void init_decl_processing (void) ;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern void lang_init (void) ;
|
|||
|
extern void lang_finish (void) ;
|
|||
|
|
|||
|
|
|||
|
extern char *lang_identify (void) ;
|
|||
|
|
|||
|
|
|||
|
extern int yyparse (void) ;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern int lang_decode_option (char *) ;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern void pushlevel (int) ;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern tree poplevel (int, int, int) ;
|
|||
|
|
|||
|
extern void set_block (tree) ;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern tree pushdecl (tree) ;
|
|||
|
|
|||
|
extern tree getdecls (void) ;
|
|||
|
|
|||
|
extern tree gettags (void) ;
|
|||
|
|
|||
|
extern tree build_range_type (tree, tree, tree) ;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern int suspend_momentary (void) ;
|
|||
|
|
|||
|
extern int allocation_temporary_p (void) ;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern void resume_momentary (int) ;
|
|||
|
|
|||
|
|
|||
|
extern void rest_of_type_compilation (tree, int) ;
|
|||
|
|
|||
|
|
|||
|
extern void push_obstacks_nochange (void) ;
|
|||
|
|
|||
|
extern void push_momentary (void) ;
|
|||
|
|
|||
|
extern void clear_momentary (void) ;
|
|||
|
|
|||
|
extern void pop_momentary (void) ;
|
|||
|
|
|||
|
extern void end_temporary_allocation (void) ;
|
|||
|
|
|||
|
|
|||
|
extern void pop_obstacks (void) ;
|
|||
|
# 37 "/a/users/paul/gcc2/cc1/../common/tree.c" 2
|
|||
|
|
|||
|
# 1 "/a/users/paul/gcc2/cc1/../common/function.h" 1
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
struct var_refs_queue
|
|||
|
{
|
|||
|
int * modified;
|
|||
|
enum machine_mode promoted_mode;
|
|||
|
int unsignedp;
|
|||
|
struct var_refs_queue *next;
|
|||
|
};
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
struct sequence_stack
|
|||
|
{
|
|||
|
|
|||
|
int * first, last;
|
|||
|
struct sequence_stack *next;
|
|||
|
};
|
|||
|
|
|||
|
extern struct sequence_stack *sequence_stack;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
struct function
|
|||
|
{
|
|||
|
struct function *next;
|
|||
|
|
|||
|
|
|||
|
char *name;
|
|||
|
tree decl;
|
|||
|
int pops_args;
|
|||
|
int returns_struct;
|
|||
|
int returns_pcc_struct;
|
|||
|
int needs_context;
|
|||
|
int calls_setjmp;
|
|||
|
int calls_longjmp;
|
|||
|
int calls_alloca;
|
|||
|
int has_nonlocal_label;
|
|||
|
int * nonlocal_goto_handler_slot;
|
|||
|
int * nonlocal_goto_stack_level;
|
|||
|
tree nonlocal_labels;
|
|||
|
int args_size;
|
|||
|
int pretend_args_size;
|
|||
|
int * arg_offset_rtx;
|
|||
|
int max_parm_reg;
|
|||
|
int * *parm_reg_stack_loc;
|
|||
|
int outgoing_args_size;
|
|||
|
int * return_rtx;
|
|||
|
int * cleanup_label;
|
|||
|
int * return_label;
|
|||
|
int * save_expr_regs;
|
|||
|
int * stack_slot_list;
|
|||
|
int * parm_birth_insn;
|
|||
|
int frame_offset;
|
|||
|
int * tail_recursion_label;
|
|||
|
int * tail_recursion_reentry;
|
|||
|
int * internal_arg_pointer;
|
|||
|
int * arg_pointer_save_area;
|
|||
|
tree rtl_expr_chain;
|
|||
|
int * last_parm_insn;
|
|||
|
tree context_display;
|
|||
|
tree trampoline_list;
|
|||
|
int function_call_count;
|
|||
|
struct temp_slot *temp_slots;
|
|||
|
int temp_slot_level;
|
|||
|
|
|||
|
|
|||
|
struct var_refs_queue *fixup_var_refs_queue;
|
|||
|
|
|||
|
|
|||
|
struct nesting *block_stack;
|
|||
|
struct nesting *stack_block_stack;
|
|||
|
struct nesting *cond_stack;
|
|||
|
struct nesting *loop_stack;
|
|||
|
struct nesting *case_stack;
|
|||
|
struct nesting *nesting_stack;
|
|||
|
int nesting_depth;
|
|||
|
int block_start_count;
|
|||
|
tree last_expr_type;
|
|||
|
int * last_expr_value;
|
|||
|
int expr_stmts_for_value;
|
|||
|
char *emit_filename;
|
|||
|
int emit_lineno;
|
|||
|
struct goto_fixup *goto_fixup_chain;
|
|||
|
|
|||
|
|
|||
|
int pending_stack_adjust;
|
|||
|
int inhibit_defer_pop;
|
|||
|
tree cleanups_this_call;
|
|||
|
int * saveregs_value;
|
|||
|
int * apply_args_value;
|
|||
|
int * forced_labels;
|
|||
|
|
|||
|
|
|||
|
int reg_rtx_no;
|
|||
|
int first_label_num;
|
|||
|
int * first_insn;
|
|||
|
int * last_insn;
|
|||
|
struct sequence_stack *sequence_stack;
|
|||
|
int cur_insn_uid;
|
|||
|
int last_linenum;
|
|||
|
char *last_filename;
|
|||
|
char *regno_pointer_flag;
|
|||
|
int regno_pointer_flag_length;
|
|||
|
int * *regno_reg_rtx;
|
|||
|
|
|||
|
|
|||
|
tree permanent_type_chain;
|
|||
|
tree temporary_type_chain;
|
|||
|
tree permanent_type_end;
|
|||
|
tree temporary_type_end;
|
|||
|
tree pending_sizes;
|
|||
|
int immediate_size_expand;
|
|||
|
|
|||
|
|
|||
|
int all_types_permanent;
|
|||
|
struct momentary_level *momentary_stack;
|
|||
|
char *maybepermanent_firstobj;
|
|||
|
char *temporary_firstobj;
|
|||
|
char *momentary_firstobj;
|
|||
|
struct obstack *current_obstack;
|
|||
|
struct obstack *function_obstack;
|
|||
|
struct obstack *function_maybepermanent_obstack;
|
|||
|
struct obstack *expression_obstack;
|
|||
|
struct obstack *saveable_obstack;
|
|||
|
struct obstack *rtl_obstack;
|
|||
|
|
|||
|
|
|||
|
int uses_const_pool;
|
|||
|
|
|||
|
|
|||
|
int uses_pic_offset_table;
|
|||
|
|
|||
|
|
|||
|
int * epilogue_delay_list;
|
|||
|
|
|||
|
|
|||
|
struct constant_descriptor **const_rtx_hash_table;
|
|||
|
struct pool_sym **const_rtx_sym_hash_table;
|
|||
|
struct pool_constant *first_pool, *last_pool;
|
|||
|
int pool_offset;
|
|||
|
};
|
|||
|
|
|||
|
|
|||
|
extern tree inline_function_decl;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern int * return_label;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern int * stack_slot_list;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
struct function *find_function_data (tree) ;
|
|||
|
|
|||
|
|
|||
|
extern struct function *outer_function_chain;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
tree *identify_blocks (tree, int * ) ;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
# 38 "/a/users/paul/gcc2/cc1/../common/tree.c" 2
|
|||
|
|
|||
|
# 1 "/a/users/paul/gcc2/cc1/../common/obstack.h" 1
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
# 133 "/a/users/paul/gcc2/cc1/../common/obstack.h"
|
|||
|
|
|||
|
# 1 "/usr/include/stddef.h" 1
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
# 1 "/usr/include/machine/ansi.h" 1
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
# 39 "/usr/include/stddef.h" 2
|
|||
|
|
|||
|
|
|||
|
typedef int ptrdiff_t;
|
|||
|
|
|||
|
|
|||
|
typedef unsigned int size_t;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
typedef unsigned short wchar_t;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
# 134 "/a/users/paul/gcc2/cc1/../common/obstack.h" 2
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
struct _obstack_chunk
|
|||
|
{
|
|||
|
char *limit;
|
|||
|
struct _obstack_chunk *prev;
|
|||
|
char contents[4];
|
|||
|
};
|
|||
|
|
|||
|
struct obstack
|
|||
|
{
|
|||
|
long chunk_size;
|
|||
|
struct _obstack_chunk* chunk;
|
|||
|
char *object_base;
|
|||
|
char *next_free;
|
|||
|
char *chunk_limit;
|
|||
|
ptrdiff_t temp;
|
|||
|
int alignment_mask;
|
|||
|
struct _obstack_chunk *(*chunkfun) ();
|
|||
|
void (*freefun) ();
|
|||
|
char *extra_arg;
|
|||
|
unsigned use_extra_arg:1;
|
|||
|
unsigned maybe_empty_object:1;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
};
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern void _obstack_newchunk (struct obstack *, int);
|
|||
|
extern void _obstack_free (struct obstack *, void *);
|
|||
|
extern void _obstack_begin (struct obstack *, int, int,
|
|||
|
void *(*) (), void (*) ());
|
|||
|
extern void _obstack_begin_1 (struct obstack *, int, int,
|
|||
|
void *(*) (), void (*) (), void *);
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
void obstack_init (struct obstack *obstack);
|
|||
|
|
|||
|
void * obstack_alloc (struct obstack *obstack, int size);
|
|||
|
|
|||
|
void * obstack_copy (struct obstack *obstack, void *address, int size);
|
|||
|
void * obstack_copy0 (struct obstack *obstack, void *address, int size);
|
|||
|
|
|||
|
void obstack_free (struct obstack *obstack, void *block);
|
|||
|
|
|||
|
void obstack_blank (struct obstack *obstack, int size);
|
|||
|
|
|||
|
void obstack_grow (struct obstack *obstack, void *data, int size);
|
|||
|
void obstack_grow0 (struct obstack *obstack, void *data, int size);
|
|||
|
|
|||
|
void obstack_1grow (struct obstack *obstack, int data_char);
|
|||
|
void obstack_ptr_grow (struct obstack *obstack, void *data);
|
|||
|
void obstack_int_grow (struct obstack *obstack, int data);
|
|||
|
|
|||
|
void * obstack_finish (struct obstack *obstack);
|
|||
|
|
|||
|
int obstack_object_size (struct obstack *obstack);
|
|||
|
|
|||
|
int obstack_room (struct obstack *obstack);
|
|||
|
void obstack_1grow_fast (struct obstack *obstack, int data_char);
|
|||
|
void obstack_ptr_grow_fast (struct obstack *obstack, void *data);
|
|||
|
void obstack_int_grow_fast (struct obstack *obstack, int data);
|
|||
|
void obstack_blank_fast (struct obstack *obstack, int size);
|
|||
|
|
|||
|
void * obstack_base (struct obstack *obstack);
|
|||
|
void * obstack_next_free (struct obstack *obstack);
|
|||
|
int obstack_alignment_mask (struct obstack *obstack);
|
|||
|
int obstack_chunk_size (struct obstack *obstack);
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
# 301 "/a/users/paul/gcc2/cc1/../common/obstack.h"
|
|||
|
|
|||
|
|
|||
|
# 312 "/a/users/paul/gcc2/cc1/../common/obstack.h"
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
# 387 "/a/users/paul/gcc2/cc1/../common/obstack.h"
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
# 482 "/a/users/paul/gcc2/cc1/../common/obstack.h"
|
|||
|
|
|||
|
|
|||
|
|
|||
|
# 39 "/a/users/paul/gcc2/cc1/../common/tree.c" 2
|
|||
|
|
|||
|
# 1 "/a/users/paul/gcc2/cc1/../common/gvarargs.h" 1
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
# 57 "/a/users/paul/gcc2/cc1/../common/gvarargs.h"
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
typedef void *__gnuc_va_list;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
# 140 "/a/users/paul/gcc2/cc1/../common/gvarargs.h"
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
typedef __gnuc_va_list va_list;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
# 40 "/a/users/paul/gcc2/cc1/../common/tree.c" 2
|
|||
|
|
|||
|
# 1 "/usr/include/stdio.h" 1
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
# 1 "/usr/include/sys/cdefs.h" 1
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
# 77 "/usr/include/sys/cdefs.h"
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
# 42 "/usr/include/stdio.h" 2
|
|||
|
|
|||
|
|
|||
|
# 1 "/usr/include/machine/ansi.h" 1
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
# 58 "/usr/include/machine/ansi.h"
|
|||
|
|
|||
|
# 44 "/usr/include/stdio.h" 2
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
typedef long fpos_t;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
struct __sbuf {
|
|||
|
unsigned char *_base;
|
|||
|
int _size;
|
|||
|
};
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
typedef struct __sFILE {
|
|||
|
unsigned char *_p;
|
|||
|
int _r;
|
|||
|
int _w;
|
|||
|
short _flags;
|
|||
|
short _file;
|
|||
|
struct __sbuf _bf;
|
|||
|
int _lbfsize;
|
|||
|
|
|||
|
|
|||
|
void *_cookie;
|
|||
|
int (*_close) (void *) ;
|
|||
|
int (*_read) (void *, char *, int) ;
|
|||
|
fpos_t (*_seek) (void *, fpos_t, int) ;
|
|||
|
int (*_write) (void *, const char *, int) ;
|
|||
|
|
|||
|
|
|||
|
struct __sbuf _ub;
|
|||
|
unsigned char *_up;
|
|||
|
int _ur;
|
|||
|
|
|||
|
|
|||
|
unsigned char _ubuf[3];
|
|||
|
unsigned char _nbuf[1];
|
|||
|
|
|||
|
|
|||
|
struct __sbuf _lb;
|
|||
|
|
|||
|
|
|||
|
int _blksize;
|
|||
|
int _offset;
|
|||
|
} FILE;
|
|||
|
|
|||
|
|
|||
|
extern FILE __sF[];
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
void clearerr (FILE *) ;
|
|||
|
int fclose (FILE *) ;
|
|||
|
int feof (FILE *) ;
|
|||
|
int ferror (FILE *) ;
|
|||
|
int fflush (FILE *) ;
|
|||
|
int fgetc (FILE *) ;
|
|||
|
int fgetpos (FILE *, fpos_t *) ;
|
|||
|
char *fgets (char *, size_t, FILE *) ;
|
|||
|
FILE *fopen (const char *, const char *) ;
|
|||
|
int fprintf (FILE *, const char *, ...) ;
|
|||
|
int fputc (int, FILE *) ;
|
|||
|
int fputs (const char *, FILE *) ;
|
|||
|
int fread (void *, size_t, size_t, FILE *) ;
|
|||
|
FILE *freopen (const char *, const char *, FILE *) ;
|
|||
|
int fscanf (FILE *, const char *, ...) ;
|
|||
|
int fseek (FILE *, long, int) ;
|
|||
|
int fsetpos (FILE *, const fpos_t *) ;
|
|||
|
long ftell (const FILE *) ;
|
|||
|
int fwrite (const void *, size_t, size_t, FILE *) ;
|
|||
|
int getc (FILE *) ;
|
|||
|
int getchar (void) ;
|
|||
|
char *gets (char *) ;
|
|||
|
|
|||
|
extern int sys_nerr;
|
|||
|
extern char *sys_errlist[];
|
|||
|
|
|||
|
void perror (const char *) ;
|
|||
|
int printf (const char *, ...) ;
|
|||
|
int putc (int, FILE *) ;
|
|||
|
int putchar (int) ;
|
|||
|
int puts (const char *) ;
|
|||
|
int remove (const char *) ;
|
|||
|
int rename (const char *, const char *) ;
|
|||
|
void rewind (FILE *) ;
|
|||
|
int scanf (const char *, ...) ;
|
|||
|
void setbuf (FILE *, char *) ;
|
|||
|
int setvbuf (FILE *, char *, int, size_t) ;
|
|||
|
int sprintf (char *, const char *, ...) ;
|
|||
|
int sscanf (char *, const char *, ...) ;
|
|||
|
FILE *tmpfile (void) ;
|
|||
|
char *tmpnam (char *) ;
|
|||
|
int ungetc (int, FILE *) ;
|
|||
|
int vfprintf (FILE *, const char *, char * ) ;
|
|||
|
int vprintf (const char *, char * ) ;
|
|||
|
int vsprintf (char *, const char *, char * ) ;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
char *ctermid (char *) ;
|
|||
|
FILE *fdopen (int, const char *) ;
|
|||
|
int fileno (FILE *) ;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
char *fgetline (FILE *, size_t *) ;
|
|||
|
int fpurge (FILE *) ;
|
|||
|
int getw (FILE *) ;
|
|||
|
int pclose (FILE *) ;
|
|||
|
FILE *popen (const char *, const char *) ;
|
|||
|
int putw (int, FILE *) ;
|
|||
|
void setbuffer (FILE *, char *, int) ;
|
|||
|
int setlinebuf (FILE *) ;
|
|||
|
char *tempnam (const char *, const char *) ;
|
|||
|
int snprintf (char *, size_t, const char *, ...) ;
|
|||
|
int vsnprintf (char *, size_t, const char *, char * ) ;
|
|||
|
int vscanf (const char *, char * ) ;
|
|||
|
int vsscanf (const char *, const char *, char * ) ;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
FILE *funopen (const void *,
|
|||
|
int (*)(void *, char *, int),
|
|||
|
int (*)(void *, const char *, int),
|
|||
|
fpos_t (*)(void *, fpos_t, int),
|
|||
|
int (*)(void *)) ;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
int __srget (FILE *) ;
|
|||
|
int __svfscanf (FILE *, const char *, char * ) ;
|
|||
|
int __swbuf (int, FILE *) ;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
static __inline int __sputc(int _c, FILE *_p) {
|
|||
|
if (--_p->_w >= 0 || (_p->_w >= _p->_lbfsize && (char)_c != '\n'))
|
|||
|
return (*_p->_p++ = _c);
|
|||
|
else
|
|||
|
return (__swbuf(_c, _p));
|
|||
|
}
|
|||
|
# 331 "/usr/include/stdio.h"
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
# 41 "/a/users/paul/gcc2/cc1/../common/tree.c" 2
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
struct obstack permanent_obstack;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
struct obstack *function_maybepermanent_obstack;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
struct obstack maybepermanent_obstack;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
struct obstack *function_obstack;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
struct obstack temporary_obstack;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
struct obstack momentary_obstack;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
static struct obstack temp_decl_obstack;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
struct obstack *saveable_obstack;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
struct obstack *rtl_obstack;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
struct obstack *current_obstack;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
struct obstack *expression_obstack;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
struct obstack_stack
|
|||
|
{
|
|||
|
struct obstack_stack *next;
|
|||
|
struct obstack *current;
|
|||
|
struct obstack *saveable;
|
|||
|
struct obstack *expression;
|
|||
|
struct obstack *rtl;
|
|||
|
};
|
|||
|
|
|||
|
struct obstack_stack *obstack_stack;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
static struct obstack obstack_stack_obstack;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
char *maybepermanent_firstobj;
|
|||
|
char *temporary_firstobj;
|
|||
|
char *momentary_firstobj;
|
|||
|
char *temp_decl_firstobj;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
int all_types_permanent;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
struct momentary_level
|
|||
|
{
|
|||
|
|
|||
|
struct momentary_level *prev;
|
|||
|
|
|||
|
char *base;
|
|||
|
|
|||
|
struct obstack *obstack;
|
|||
|
};
|
|||
|
|
|||
|
struct momentary_level *momentary_stack;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
char *standard_tree_code_type[] = {
|
|||
|
# 1 "/a/users/paul/gcc2/cc1/../common/tree.def" 1
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"x",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"x",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"x",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"x",
|
|||
|
|
|||
|
|
|||
|
"x",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"b",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"t",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"t",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"t",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"t",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"t",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"t",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"t",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"t",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"t",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"t",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"t",
|
|||
|
|
|||
|
|
|||
|
"t",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"t",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"t",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"t",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"t",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"t",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"t",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"t",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"t",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"c",
|
|||
|
|
|||
|
|
|||
|
"c",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"c",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"c",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"d",
|
|||
|
"d",
|
|||
|
"d",
|
|||
|
"d",
|
|||
|
"d",
|
|||
|
"d",
|
|||
|
"d",
|
|||
|
"d",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"r",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"r",
|
|||
|
|
|||
|
|
|||
|
"r",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"r",
|
|||
|
|
|||
|
|
|||
|
"r",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"r",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"e",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"e",
|
|||
|
|
|||
|
|
|||
|
"e",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"e",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"e",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"e",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"e",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"e",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"e",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"e",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"2",
|
|||
|
"2",
|
|||
|
"2",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"2",
|
|||
|
|
|||
|
|
|||
|
"2",
|
|||
|
|
|||
|
|
|||
|
"2",
|
|||
|
|
|||
|
|
|||
|
"2",
|
|||
|
|
|||
|
|
|||
|
"2",
|
|||
|
"2",
|
|||
|
"2",
|
|||
|
"2",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"2",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"2",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"1",
|
|||
|
"1",
|
|||
|
"1",
|
|||
|
"1",
|
|||
|
|
|||
|
|
|||
|
"1",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"2",
|
|||
|
|
|||
|
|
|||
|
"1",
|
|||
|
|
|||
|
"2",
|
|||
|
"2",
|
|||
|
"1",
|
|||
|
"1",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"2",
|
|||
|
"2",
|
|||
|
"2",
|
|||
|
"2",
|
|||
|
|
|||
|
|
|||
|
"2",
|
|||
|
"2",
|
|||
|
"2",
|
|||
|
"2",
|
|||
|
"1",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"e",
|
|||
|
"e",
|
|||
|
"2",
|
|||
|
"2",
|
|||
|
"2",
|
|||
|
"e",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"<",
|
|||
|
"<",
|
|||
|
"<",
|
|||
|
"<",
|
|||
|
"<",
|
|||
|
"<",
|
|||
|
|
|||
|
|
|||
|
"2",
|
|||
|
"<",
|
|||
|
"1",
|
|||
|
"2",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"1",
|
|||
|
|
|||
|
|
|||
|
"1",
|
|||
|
|
|||
|
|
|||
|
"1",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"e",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"e",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"e",
|
|||
|
|
|||
|
|
|||
|
"e",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"e",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"2",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"1",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"1",
|
|||
|
"1",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"e",
|
|||
|
"e",
|
|||
|
"e",
|
|||
|
"e",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"s",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"s",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"s",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"s",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"s",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
# 155 "/a/users/paul/gcc2/cc1/../common/tree.c" 2
|
|||
|
|
|||
|
};
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
int standard_tree_code_length[] = {
|
|||
|
# 1 "/a/users/paul/gcc2/cc1/../common/tree.def" 1
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
0,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
-1,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
2,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
2,
|
|||
|
|
|||
|
|
|||
|
2,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
0,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
0,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
0,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
0,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
0,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
0,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
0,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
0,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
0,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
0,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
0,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
0,
|
|||
|
|
|||
|
|
|||
|
0,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
0,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
0,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
0,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
0,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
0,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
0,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
0,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
0,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
2,
|
|||
|
|
|||
|
|
|||
|
3,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
3,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
3,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
0,
|
|||
|
0,
|
|||
|
0,
|
|||
|
0,
|
|||
|
0,
|
|||
|
0,
|
|||
|
0,
|
|||
|
0,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
2,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
3,
|
|||
|
|
|||
|
|
|||
|
1,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
2,
|
|||
|
|
|||
|
|
|||
|
1,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
2,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
2,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
2,
|
|||
|
|
|||
|
|
|||
|
2,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
2,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
3,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
3,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
3,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
3,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
4,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
3,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
2,
|
|||
|
2,
|
|||
|
2,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
2,
|
|||
|
|
|||
|
|
|||
|
2,
|
|||
|
|
|||
|
|
|||
|
2,
|
|||
|
|
|||
|
|
|||
|
2,
|
|||
|
|
|||
|
|
|||
|
2,
|
|||
|
2,
|
|||
|
2,
|
|||
|
2,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
2,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
2,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
1,
|
|||
|
1,
|
|||
|
1,
|
|||
|
1,
|
|||
|
|
|||
|
|
|||
|
1,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
2,
|
|||
|
|
|||
|
|
|||
|
1,
|
|||
|
|
|||
|
2,
|
|||
|
2,
|
|||
|
1,
|
|||
|
1,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
2,
|
|||
|
2,
|
|||
|
2,
|
|||
|
2,
|
|||
|
|
|||
|
|
|||
|
2,
|
|||
|
2,
|
|||
|
2,
|
|||
|
2,
|
|||
|
1,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
2,
|
|||
|
2,
|
|||
|
2,
|
|||
|
2,
|
|||
|
2,
|
|||
|
1,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
2,
|
|||
|
2,
|
|||
|
2,
|
|||
|
2,
|
|||
|
2,
|
|||
|
2,
|
|||
|
|
|||
|
|
|||
|
2,
|
|||
|
2,
|
|||
|
1,
|
|||
|
2,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
1,
|
|||
|
|
|||
|
|
|||
|
1,
|
|||
|
|
|||
|
|
|||
|
1,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
3,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
2,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
1,
|
|||
|
|
|||
|
|
|||
|
1,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
1,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
2,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
1,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
1,
|
|||
|
1,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
2,
|
|||
|
2,
|
|||
|
2,
|
|||
|
2,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
1,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
1,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
1,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
1,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
1,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
# 166 "/a/users/paul/gcc2/cc1/../common/tree.c" 2
|
|||
|
|
|||
|
};
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
char *standard_tree_code_name[] = {
|
|||
|
# 1 "/a/users/paul/gcc2/cc1/../common/tree.def" 1
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"error_mark",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"identifier_node",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"op_identifier",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"tree_list",
|
|||
|
|
|||
|
|
|||
|
"tree_vec",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"block",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"void_type",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"integer_type",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"real_type",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"complex_type",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"enumeral_type",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"boolean_type",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"char_type",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"pointer_type",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"offset_type",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"reference_type",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"method_type",
|
|||
|
|
|||
|
|
|||
|
"file_type",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"array_type",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"set_type",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"string_type",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"record_type",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"union_type",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"qual_union_type",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"function_type",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"lang_type",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"integer_cst",
|
|||
|
|
|||
|
|
|||
|
"real_cst",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"complex_cst",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"string_cst",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"function_decl",
|
|||
|
"label_decl",
|
|||
|
"const_decl",
|
|||
|
"type_decl",
|
|||
|
"var_decl",
|
|||
|
"parm_decl",
|
|||
|
"result_decl",
|
|||
|
"field_decl",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"component_ref",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"bit_field_ref",
|
|||
|
|
|||
|
|
|||
|
"indirect_ref",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"offset_ref",
|
|||
|
|
|||
|
|
|||
|
"buffer_ref",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"array_ref",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"constructor",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"compound_expr",
|
|||
|
|
|||
|
|
|||
|
"modify_expr",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"init_expr",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"target_expr",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"cond_expr",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"bind_expr",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"call_expr",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"method_call_expr",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"with_cleanup_expr",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"plus_expr",
|
|||
|
"minus_expr",
|
|||
|
"mult_expr",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"trunc_div_expr",
|
|||
|
|
|||
|
|
|||
|
"ceil_div_expr",
|
|||
|
|
|||
|
|
|||
|
"floor_div_expr",
|
|||
|
|
|||
|
|
|||
|
"round_div_expr",
|
|||
|
|
|||
|
|
|||
|
"trunc_mod_expr",
|
|||
|
"ceil_mod_expr",
|
|||
|
"floor_mod_expr",
|
|||
|
"round_mod_expr",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"rdiv_expr",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"exact_div_expr",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"fix_trunc_expr",
|
|||
|
"fix_ceil_expr",
|
|||
|
"fix_floor_expr",
|
|||
|
"fix_round_expr",
|
|||
|
|
|||
|
|
|||
|
"float_expr",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"expon_expr",
|
|||
|
|
|||
|
|
|||
|
"negate_expr",
|
|||
|
|
|||
|
"min_expr",
|
|||
|
"max_expr",
|
|||
|
"abs_expr",
|
|||
|
"ffs_expr",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"alshift_expr",
|
|||
|
"arshift_expr",
|
|||
|
"lrotate_expr",
|
|||
|
"rrotate_expr",
|
|||
|
|
|||
|
|
|||
|
"bit_ior_expr",
|
|||
|
"bit_xor_expr",
|
|||
|
"bit_and_expr",
|
|||
|
"bit_andtc_expr",
|
|||
|
"bit_not_expr",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"truth_andif_expr",
|
|||
|
"truth_orif_expr",
|
|||
|
"truth_and_expr",
|
|||
|
"truth_or_expr",
|
|||
|
"truth_xor_expr",
|
|||
|
"truth_not_expr",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"lt_expr",
|
|||
|
"le_expr",
|
|||
|
"gt_expr",
|
|||
|
"ge_expr",
|
|||
|
"eq_expr",
|
|||
|
"ne_expr",
|
|||
|
|
|||
|
|
|||
|
"in_expr",
|
|||
|
"set_le_expr",
|
|||
|
"card_expr",
|
|||
|
"range_expr",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"convert_expr",
|
|||
|
|
|||
|
|
|||
|
"nop_expr",
|
|||
|
|
|||
|
|
|||
|
"non_lvalue_expr",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"save_expr",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"rtl_expr",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"addr_expr",
|
|||
|
|
|||
|
|
|||
|
"reference_expr",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"entry_value_expr",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"complex_expr",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"conj_expr",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"realpart_expr",
|
|||
|
"imagpart_expr",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"predecrement_expr",
|
|||
|
"preincrement_expr",
|
|||
|
"postdecrement_expr",
|
|||
|
"postincrement_expr",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"label_expr",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"goto_expr",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"return_expr",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"exit_expr",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"loop_expr",
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
# 175 "/a/users/paul/gcc2/cc1/../common/tree.c" 2
|
|||
|
|
|||
|
};
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
char **tree_code_type;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
int *tree_code_length;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
char **tree_code_name;
|
|||
|
|
|||
|
|
|||
|
typedef enum
|
|||
|
{
|
|||
|
d_kind,
|
|||
|
t_kind,
|
|||
|
b_kind,
|
|||
|
s_kind,
|
|||
|
r_kind,
|
|||
|
e_kind,
|
|||
|
c_kind,
|
|||
|
id_kind,
|
|||
|
op_id_kind,
|
|||
|
perm_list_kind,
|
|||
|
temp_list_kind,
|
|||
|
vec_kind,
|
|||
|
x_kind,
|
|||
|
lang_decl,
|
|||
|
lang_type,
|
|||
|
all_kinds
|
|||
|
} tree_node_kind;
|
|||
|
|
|||
|
int tree_node_counts[(int)all_kinds];
|
|||
|
int tree_node_sizes[(int)all_kinds];
|
|||
|
int id_string_size = 0;
|
|||
|
|
|||
|
char *tree_node_kind_names[] = {
|
|||
|
"decls",
|
|||
|
"types",
|
|||
|
"blocks",
|
|||
|
"stmts",
|
|||
|
"refs",
|
|||
|
"exprs",
|
|||
|
"constants",
|
|||
|
"identifiers",
|
|||
|
"op_identifiers",
|
|||
|
"perm_tree_lists",
|
|||
|
"temp_tree_lists",
|
|||
|
"vecs",
|
|||
|
"random kinds",
|
|||
|
"lang_decl kinds",
|
|||
|
"lang_type kinds"
|
|||
|
};
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
static tree hash_table[1009 ];
|
|||
|
|
|||
|
|
|||
|
static int do_identifier_warnings;
|
|||
|
|
|||
|
|
|||
|
static int next_decl_uid;
|
|||
|
|
|||
|
static int next_type_uid = 1;
|
|||
|
|
|||
|
extern char *mode_name[];
|
|||
|
|
|||
|
void gcc_obstack_init ();
|
|||
|
static tree stabilize_reference_1 ();
|
|||
|
|
|||
|
|
|||
|
|
|||
|
void
|
|||
|
init_obstacks ()
|
|||
|
{
|
|||
|
gcc_obstack_init (&obstack_stack_obstack);
|
|||
|
gcc_obstack_init (&permanent_obstack);
|
|||
|
|
|||
|
gcc_obstack_init (&temporary_obstack);
|
|||
|
temporary_firstobj = (char *) ({ struct obstack *__h = (&temporary_obstack); ({ struct obstack *__o = (__h); int __len = ( ( 0)); ((__o->chunk_limit - __o->next_free < __len) ? (_obstack_newchunk (__o, __len), 0) : 0); __o->next_free += __len; (void) 0; }) ; ({ struct obstack *__o1 = (__h); void *value = (void *) __o1->object_base; if (__o1->next_free == value) __o1->maybe_empty_object = 1; __o1->next_free = (((((__o1->next_free) - (char *)0) +__o1->alignment_mask) & ~ (__o1->alignment_mask)) + (char *)0) ; ((__o1->next_free - (char *)__o1->chunk > __o1->chunk_limit - (char *)__o1->chunk) ? (__o1->next_free = __o1->chunk_limit) : 0); __o1->object_base = __o1->next_free; value; }) ; }) ;
|
|||
|
gcc_obstack_init (&momentary_obstack);
|
|||
|
momentary_firstobj = (char *) ({ struct obstack *__h = (&momentary_obstack); ({ struct obstack *__o = (__h); int __len = ( ( 0)); ((__o->chunk_limit - __o->next_free < __len) ? (_obstack_newchunk (__o, __len), 0) : 0); __o->next_free += __len; (void) 0; }) ; ({ struct obstack *__o1 = (__h); void *value = (void *) __o1->object_base; if (__o1->next_free == value) __o1->maybe_empty_object = 1; __o1->next_free = (((((__o1->next_free) - (char *)0) +__o1->alignment_mask) & ~ (__o1->alignment_mask)) + (char *)0) ; ((__o1->next_free - (char *)__o1->chunk > __o1->chunk_limit - (char *)__o1->chunk) ? (__o1->next_free = __o1->chunk_limit) : 0); __o1->object_base = __o1->next_free; value; }) ; }) ;
|
|||
|
gcc_obstack_init (&maybepermanent_obstack);
|
|||
|
maybepermanent_firstobj
|
|||
|
= (char *) ({ struct obstack *__h = (&maybepermanent_obstack); ({ struct obstack *__o = (__h); int __len = ( ( 0)); ((__o->chunk_limit - __o->next_free < __len) ? (_obstack_newchunk (__o, __len), 0) : 0); __o->next_free += __len; (void) 0; }) ; ({ struct obstack *__o1 = (__h); void *value = (void *) __o1->object_base; if (__o1->next_free == value) __o1->maybe_empty_object = 1; __o1->next_free = (((((__o1->next_free) - (char *)0) +__o1->alignment_mask) & ~ (__o1->alignment_mask)) + (char *)0) ; ((__o1->next_free - (char *)__o1->chunk > __o1->chunk_limit - (char *)__o1->chunk) ? (__o1->next_free = __o1->chunk_limit) : 0); __o1->object_base = __o1->next_free; value; }) ; }) ;
|
|||
|
gcc_obstack_init (&temp_decl_obstack);
|
|||
|
temp_decl_firstobj = (char *) ({ struct obstack *__h = (&temp_decl_obstack); ({ struct obstack *__o = (__h); int __len = ( ( 0)); ((__o->chunk_limit - __o->next_free < __len) ? (_obstack_newchunk (__o, __len), 0) : 0); __o->next_free += __len; (void) 0; }) ; ({ struct obstack *__o1 = (__h); void *value = (void *) __o1->object_base; if (__o1->next_free == value) __o1->maybe_empty_object = 1; __o1->next_free = (((((__o1->next_free) - (char *)0) +__o1->alignment_mask) & ~ (__o1->alignment_mask)) + (char *)0) ; ((__o1->next_free - (char *)__o1->chunk > __o1->chunk_limit - (char *)__o1->chunk) ? (__o1->next_free = __o1->chunk_limit) : 0); __o1->object_base = __o1->next_free; value; }) ; }) ;
|
|||
|
|
|||
|
function_obstack = &temporary_obstack;
|
|||
|
function_maybepermanent_obstack = &maybepermanent_obstack;
|
|||
|
current_obstack = &permanent_obstack;
|
|||
|
expression_obstack = &permanent_obstack;
|
|||
|
rtl_obstack = saveable_obstack = &permanent_obstack;
|
|||
|
|
|||
|
|
|||
|
bzero (hash_table, sizeof hash_table);
|
|||
|
}
|
|||
|
|
|||
|
void
|
|||
|
gcc_obstack_init (obstack)
|
|||
|
struct obstack *obstack;
|
|||
|
{
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
_obstack_begin (obstack, 0 , 0,
|
|||
|
(void *(*) ()) xmalloc ,
|
|||
|
(void (*) ()) free );
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
void
|
|||
|
save_tree_status (p)
|
|||
|
struct function *p;
|
|||
|
{
|
|||
|
p->all_types_permanent = all_types_permanent;
|
|||
|
p->momentary_stack = momentary_stack;
|
|||
|
p->maybepermanent_firstobj = maybepermanent_firstobj;
|
|||
|
p->momentary_firstobj = momentary_firstobj;
|
|||
|
p->function_obstack = function_obstack;
|
|||
|
p->function_maybepermanent_obstack = function_maybepermanent_obstack;
|
|||
|
p->current_obstack = current_obstack;
|
|||
|
p->expression_obstack = expression_obstack;
|
|||
|
p->saveable_obstack = saveable_obstack;
|
|||
|
p->rtl_obstack = rtl_obstack;
|
|||
|
|
|||
|
function_obstack = (struct obstack *) xmalloc (sizeof (struct obstack));
|
|||
|
gcc_obstack_init (function_obstack);
|
|||
|
|
|||
|
function_maybepermanent_obstack
|
|||
|
= (struct obstack *) xmalloc (sizeof (struct obstack));
|
|||
|
gcc_obstack_init (function_maybepermanent_obstack);
|
|||
|
|
|||
|
current_obstack = &permanent_obstack;
|
|||
|
expression_obstack = &permanent_obstack;
|
|||
|
rtl_obstack = saveable_obstack = &permanent_obstack;
|
|||
|
|
|||
|
momentary_firstobj = (char *) ({ struct obstack *__o1 = (&momentary_obstack); void *value = (void *) __o1->object_base; if (__o1->next_free == value) __o1->maybe_empty_object = 1; __o1->next_free = (((((__o1->next_free) - (char *)0) +__o1->alignment_mask) & ~ (__o1->alignment_mask)) + (char *)0) ; ((__o1->next_free - (char *)__o1->chunk > __o1->chunk_limit - (char *)__o1->chunk) ? (__o1->next_free = __o1->chunk_limit) : 0); __o1->object_base = __o1->next_free; value; }) ;
|
|||
|
maybepermanent_firstobj
|
|||
|
= (char *) ({ struct obstack *__o1 = (function_maybepermanent_obstack); void *value = (void *) __o1->object_base; if (__o1->next_free == value) __o1->maybe_empty_object = 1; __o1->next_free = (((((__o1->next_free) - (char *)0) +__o1->alignment_mask) & ~ (__o1->alignment_mask)) + (char *)0) ; ((__o1->next_free - (char *)__o1->chunk > __o1->chunk_limit - (char *)__o1->chunk) ? (__o1->next_free = __o1->chunk_limit) : 0); __o1->object_base = __o1->next_free; value; }) ;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
void
|
|||
|
restore_tree_status (p)
|
|||
|
struct function *p;
|
|||
|
{
|
|||
|
all_types_permanent = p->all_types_permanent;
|
|||
|
momentary_stack = p->momentary_stack;
|
|||
|
|
|||
|
({ struct obstack *__o = (&momentary_obstack); void *__obj = ( momentary_firstobj); if (__obj > (void *)__o->chunk && __obj < (void *)__o->chunk_limit) __o->next_free = __o->object_base = __obj; else (obstack_free) (__o, __obj); }) ;
|
|||
|
({ struct obstack *__o = (function_obstack); void *__obj = ( 0); if (__obj > (void *)__o->chunk && __obj < (void *)__o->chunk_limit) __o->next_free = __o->object_base = __obj; else (obstack_free) (__o, __obj); }) ;
|
|||
|
({ struct obstack *__o = (function_maybepermanent_obstack); void *__obj = ( 0); if (__obj > (void *)__o->chunk && __obj < (void *)__o->chunk_limit) __o->next_free = __o->object_base = __obj; else (obstack_free) (__o, __obj); }) ;
|
|||
|
free (function_obstack);
|
|||
|
|
|||
|
momentary_firstobj = p->momentary_firstobj;
|
|||
|
maybepermanent_firstobj = p->maybepermanent_firstobj;
|
|||
|
function_obstack = p->function_obstack;
|
|||
|
function_maybepermanent_obstack = p->function_maybepermanent_obstack;
|
|||
|
current_obstack = p->current_obstack;
|
|||
|
expression_obstack = p->expression_obstack;
|
|||
|
saveable_obstack = p->saveable_obstack;
|
|||
|
rtl_obstack = p->rtl_obstack;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
void
|
|||
|
temporary_allocation ()
|
|||
|
{
|
|||
|
|
|||
|
|
|||
|
current_obstack = function_obstack;
|
|||
|
expression_obstack = function_obstack;
|
|||
|
rtl_obstack = saveable_obstack = function_maybepermanent_obstack;
|
|||
|
momentary_stack = 0;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
void
|
|||
|
end_temporary_allocation ()
|
|||
|
{
|
|||
|
current_obstack = &permanent_obstack;
|
|||
|
expression_obstack = &permanent_obstack;
|
|||
|
rtl_obstack = saveable_obstack = &permanent_obstack;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
void
|
|||
|
resume_temporary_allocation ()
|
|||
|
{
|
|||
|
current_obstack = function_obstack;
|
|||
|
expression_obstack = function_obstack;
|
|||
|
rtl_obstack = saveable_obstack = function_maybepermanent_obstack;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
void
|
|||
|
saveable_allocation ()
|
|||
|
{
|
|||
|
|
|||
|
|
|||
|
expression_obstack = current_obstack = saveable_obstack;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
void
|
|||
|
push_obstacks (current, saveable)
|
|||
|
struct obstack *current, *saveable;
|
|||
|
{
|
|||
|
struct obstack_stack *p
|
|||
|
= (struct obstack_stack *) ({ struct obstack *__h = (&obstack_stack_obstack); ({ struct obstack *__o = (__h); int __len = ( (
|
|||
|
(sizeof (struct obstack_stack)))); ((__o->chunk_limit - __o->next_free < __len) ? (_obstack_newchunk (__o, __len), 0) : 0); __o->next_free += __len; (void) 0; }) ; ({ struct obstack *__o1 = (__h); void *value = (void *) __o1->object_base; if (__o1->next_free == value) __o1->maybe_empty_object = 1; __o1->next_free = (((((__o1->next_free) - (char *)0) +__o1->alignment_mask) & ~ (__o1->alignment_mask)) + (char *)0) ; ((__o1->next_free - (char *)__o1->chunk > __o1->chunk_limit - (char *)__o1->chunk) ? (__o1->next_free = __o1->chunk_limit) : 0); __o1->object_base = __o1->next_free; value; }) ; }) ;
|
|||
|
|
|||
|
p->current = current_obstack;
|
|||
|
p->saveable = saveable_obstack;
|
|||
|
p->expression = expression_obstack;
|
|||
|
p->rtl = rtl_obstack;
|
|||
|
p->next = obstack_stack;
|
|||
|
obstack_stack = p;
|
|||
|
|
|||
|
current_obstack = current;
|
|||
|
expression_obstack = current;
|
|||
|
rtl_obstack = saveable_obstack = saveable;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
void
|
|||
|
push_obstacks_nochange ()
|
|||
|
{
|
|||
|
struct obstack_stack *p
|
|||
|
= (struct obstack_stack *) ({ struct obstack *__h = (&obstack_stack_obstack); ({ struct obstack *__o = (__h); int __len = ( (
|
|||
|
(sizeof (struct obstack_stack)))); ((__o->chunk_limit - __o->next_free < __len) ? (_obstack_newchunk (__o, __len), 0) : 0); __o->next_free += __len; (void) 0; }) ; ({ struct obstack *__o1 = (__h); void *value = (void *) __o1->object_base; if (__o1->next_free == value) __o1->maybe_empty_object = 1; __o1->next_free = (((((__o1->next_free) - (char *)0) +__o1->alignment_mask) & ~ (__o1->alignment_mask)) + (char *)0) ; ((__o1->next_free - (char *)__o1->chunk > __o1->chunk_limit - (char *)__o1->chunk) ? (__o1->next_free = __o1->chunk_limit) : 0); __o1->object_base = __o1->next_free; value; }) ; }) ;
|
|||
|
|
|||
|
p->current = current_obstack;
|
|||
|
p->saveable = saveable_obstack;
|
|||
|
p->expression = expression_obstack;
|
|||
|
p->rtl = rtl_obstack;
|
|||
|
p->next = obstack_stack;
|
|||
|
obstack_stack = p;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
void
|
|||
|
pop_obstacks ()
|
|||
|
{
|
|||
|
struct obstack_stack *p = obstack_stack;
|
|||
|
obstack_stack = p->next;
|
|||
|
|
|||
|
current_obstack = p->current;
|
|||
|
saveable_obstack = p->saveable;
|
|||
|
expression_obstack = p->expression;
|
|||
|
rtl_obstack = p->rtl;
|
|||
|
|
|||
|
({ struct obstack *__o = (&obstack_stack_obstack); void *__obj = ( p); if (__obj > (void *)__o->chunk && __obj < (void *)__o->chunk_limit) __o->next_free = __o->object_base = __obj; else (obstack_free) (__o, __obj); }) ;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
int
|
|||
|
allocation_temporary_p ()
|
|||
|
{
|
|||
|
return current_obstack != &permanent_obstack;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
void
|
|||
|
permanent_allocation ()
|
|||
|
{
|
|||
|
|
|||
|
({ struct obstack *__o = (&temporary_obstack); void *__obj = ( temporary_firstobj); if (__obj > (void *)__o->chunk && __obj < (void *)__o->chunk_limit) __o->next_free = __o->object_base = __obj; else (obstack_free) (__o, __obj); }) ;
|
|||
|
({ struct obstack *__o = (&momentary_obstack); void *__obj = ( momentary_firstobj); if (__obj > (void *)__o->chunk && __obj < (void *)__o->chunk_limit) __o->next_free = __o->object_base = __obj; else (obstack_free) (__o, __obj); }) ;
|
|||
|
({ struct obstack *__o = (&maybepermanent_obstack); void *__obj = ( maybepermanent_firstobj); if (__obj > (void *)__o->chunk && __obj < (void *)__o->chunk_limit) __o->next_free = __o->object_base = __obj; else (obstack_free) (__o, __obj); }) ;
|
|||
|
({ struct obstack *__o = (&temp_decl_obstack); void *__obj = ( temp_decl_firstobj); if (__obj > (void *)__o->chunk && __obj < (void *)__o->chunk_limit) __o->next_free = __o->object_base = __obj; else (obstack_free) (__o, __obj); }) ;
|
|||
|
|
|||
|
current_obstack = &permanent_obstack;
|
|||
|
expression_obstack = &permanent_obstack;
|
|||
|
rtl_obstack = saveable_obstack = &permanent_obstack;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
void
|
|||
|
preserve_data ()
|
|||
|
{
|
|||
|
maybepermanent_firstobj
|
|||
|
= (char *) ({ struct obstack *__h = (function_maybepermanent_obstack); ({ struct obstack *__o = (__h); int __len = ( ( 0)); ((__o->chunk_limit - __o->next_free < __len) ? (_obstack_newchunk (__o, __len), 0) : 0); __o->next_free += __len; (void) 0; }) ; ({ struct obstack *__o1 = (__h); void *value = (void *) __o1->object_base; if (__o1->next_free == value) __o1->maybe_empty_object = 1; __o1->next_free = (((((__o1->next_free) - (char *)0) +__o1->alignment_mask) & ~ (__o1->alignment_mask)) + (char *)0) ; ((__o1->next_free - (char *)__o1->chunk > __o1->chunk_limit - (char *)__o1->chunk) ? (__o1->next_free = __o1->chunk_limit) : 0); __o1->object_base = __o1->next_free; value; }) ; }) ;
|
|||
|
}
|
|||
|
|
|||
|
void
|
|||
|
preserve_initializer ()
|
|||
|
{
|
|||
|
temporary_firstobj
|
|||
|
= (char *) ({ struct obstack *__h = (&temporary_obstack); ({ struct obstack *__o = (__h); int __len = ( ( 0)); ((__o->chunk_limit - __o->next_free < __len) ? (_obstack_newchunk (__o, __len), 0) : 0); __o->next_free += __len; (void) 0; }) ; ({ struct obstack *__o1 = (__h); void *value = (void *) __o1->object_base; if (__o1->next_free == value) __o1->maybe_empty_object = 1; __o1->next_free = (((((__o1->next_free) - (char *)0) +__o1->alignment_mask) & ~ (__o1->alignment_mask)) + (char *)0) ; ((__o1->next_free - (char *)__o1->chunk > __o1->chunk_limit - (char *)__o1->chunk) ? (__o1->next_free = __o1->chunk_limit) : 0); __o1->object_base = __o1->next_free; value; }) ; }) ;
|
|||
|
momentary_firstobj
|
|||
|
= (char *) ({ struct obstack *__h = (&momentary_obstack); ({ struct obstack *__o = (__h); int __len = ( ( 0)); ((__o->chunk_limit - __o->next_free < __len) ? (_obstack_newchunk (__o, __len), 0) : 0); __o->next_free += __len; (void) 0; }) ; ({ struct obstack *__o1 = (__h); void *value = (void *) __o1->object_base; if (__o1->next_free == value) __o1->maybe_empty_object = 1; __o1->next_free = (((((__o1->next_free) - (char *)0) +__o1->alignment_mask) & ~ (__o1->alignment_mask)) + (char *)0) ; ((__o1->next_free - (char *)__o1->chunk > __o1->chunk_limit - (char *)__o1->chunk) ? (__o1->next_free = __o1->chunk_limit) : 0); __o1->object_base = __o1->next_free; value; }) ; }) ;
|
|||
|
maybepermanent_firstobj
|
|||
|
= (char *) ({ struct obstack *__h = (function_maybepermanent_obstack); ({ struct obstack *__o = (__h); int __len = ( ( 0)); ((__o->chunk_limit - __o->next_free < __len) ? (_obstack_newchunk (__o, __len), 0) : 0); __o->next_free += __len; (void) 0; }) ; ({ struct obstack *__o1 = (__h); void *value = (void *) __o1->object_base; if (__o1->next_free == value) __o1->maybe_empty_object = 1; __o1->next_free = (((((__o1->next_free) - (char *)0) +__o1->alignment_mask) & ~ (__o1->alignment_mask)) + (char *)0) ; ((__o1->next_free - (char *)__o1->chunk > __o1->chunk_limit - (char *)__o1->chunk) ? (__o1->next_free = __o1->chunk_limit) : 0); __o1->object_base = __o1->next_free; value; }) ; }) ;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
void
|
|||
|
rtl_in_current_obstack ()
|
|||
|
{
|
|||
|
rtl_obstack = current_obstack;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
void
|
|||
|
rtl_in_saveable_obstack ()
|
|||
|
{
|
|||
|
rtl_obstack = saveable_obstack;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
char *
|
|||
|
oballoc (size)
|
|||
|
int size;
|
|||
|
{
|
|||
|
return (char *) ({ struct obstack *__h = (current_obstack); ({ struct obstack *__o = (__h); int __len = ( ( size)); ((__o->chunk_limit - __o->next_free < __len) ? (_obstack_newchunk (__o, __len), 0) : 0); __o->next_free += __len; (void) 0; }) ; ({ struct obstack *__o1 = (__h); void *value = (void *) __o1->object_base; if (__o1->next_free == value) __o1->maybe_empty_object = 1; __o1->next_free = (((((__o1->next_free) - (char *)0) +__o1->alignment_mask) & ~ (__o1->alignment_mask)) + (char *)0) ; ((__o1->next_free - (char *)__o1->chunk > __o1->chunk_limit - (char *)__o1->chunk) ? (__o1->next_free = __o1->chunk_limit) : 0); __o1->object_base = __o1->next_free; value; }) ; }) ;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
void
|
|||
|
obfree (ptr)
|
|||
|
char *ptr;
|
|||
|
{
|
|||
|
({ struct obstack *__o = (current_obstack); void *__obj = ( ptr); if (__obj > (void *)__o->chunk && __obj < (void *)__o->chunk_limit) __o->next_free = __o->object_base = __obj; else (obstack_free) (__o, __obj); }) ;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
char *
|
|||
|
permalloc (size)
|
|||
|
int size;
|
|||
|
{
|
|||
|
return (char *) ({ struct obstack *__h = (&permanent_obstack); ({ struct obstack *__o = (__h); int __len = ( ( size)); ((__o->chunk_limit - __o->next_free < __len) ? (_obstack_newchunk (__o, __len), 0) : 0); __o->next_free += __len; (void) 0; }) ; ({ struct obstack *__o1 = (__h); void *value = (void *) __o1->object_base; if (__o1->next_free == value) __o1->maybe_empty_object = 1; __o1->next_free = (((((__o1->next_free) - (char *)0) +__o1->alignment_mask) & ~ (__o1->alignment_mask)) + (char *)0) ; ((__o1->next_free - (char *)__o1->chunk > __o1->chunk_limit - (char *)__o1->chunk) ? (__o1->next_free = __o1->chunk_limit) : 0); __o1->object_base = __o1->next_free; value; }) ; }) ;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
char *
|
|||
|
perm_calloc (nelem, size)
|
|||
|
int nelem;
|
|||
|
long size;
|
|||
|
{
|
|||
|
char *rval = (char *) ({ struct obstack *__h = (&permanent_obstack); ({ struct obstack *__o = (__h); int __len = ( ( nelem * size)); ((__o->chunk_limit - __o->next_free < __len) ? (_obstack_newchunk (__o, __len), 0) : 0); __o->next_free += __len; (void) 0; }) ; ({ struct obstack *__o1 = (__h); void *value = (void *) __o1->object_base; if (__o1->next_free == value) __o1->maybe_empty_object = 1; __o1->next_free = (((((__o1->next_free) - (char *)0) +__o1->alignment_mask) & ~ (__o1->alignment_mask)) + (char *)0) ; ((__o1->next_free - (char *)__o1->chunk > __o1->chunk_limit - (char *)__o1->chunk) ? (__o1->next_free = __o1->chunk_limit) : 0); __o1->object_base = __o1->next_free; value; }) ; }) ;
|
|||
|
bzero (rval, nelem * size);
|
|||
|
return rval;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
char *
|
|||
|
savealloc (size)
|
|||
|
int size;
|
|||
|
{
|
|||
|
return (char *) ({ struct obstack *__h = (saveable_obstack); ({ struct obstack *__o = (__h); int __len = ( ( size)); ((__o->chunk_limit - __o->next_free < __len) ? (_obstack_newchunk (__o, __len), 0) : 0); __o->next_free += __len; (void) 0; }) ; ({ struct obstack *__o1 = (__h); void *value = (void *) __o1->object_base; if (__o1->next_free == value) __o1->maybe_empty_object = 1; __o1->next_free = (((((__o1->next_free) - (char *)0) +__o1->alignment_mask) & ~ (__o1->alignment_mask)) + (char *)0) ; ((__o1->next_free - (char *)__o1->chunk > __o1->chunk_limit - (char *)__o1->chunk) ? (__o1->next_free = __o1->chunk_limit) : 0); __o1->object_base = __o1->next_free; value; }) ; }) ;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
void
|
|||
|
debug_obstack (object)
|
|||
|
char *object;
|
|||
|
{
|
|||
|
struct obstack *obstack = 0 ;
|
|||
|
char *obstack_name = 0 ;
|
|||
|
struct function *p;
|
|||
|
|
|||
|
for (p = outer_function_chain; p; p = p->next)
|
|||
|
{
|
|||
|
if (_obstack_allocated_p (p->function_obstack, object))
|
|||
|
{
|
|||
|
obstack = p->function_obstack;
|
|||
|
obstack_name = "containing function obstack";
|
|||
|
}
|
|||
|
if (_obstack_allocated_p (p->function_maybepermanent_obstack, object))
|
|||
|
{
|
|||
|
obstack = p->function_maybepermanent_obstack;
|
|||
|
obstack_name = "containing function maybepermanent obstack";
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
if (_obstack_allocated_p (&obstack_stack_obstack, object))
|
|||
|
{
|
|||
|
obstack = &obstack_stack_obstack;
|
|||
|
obstack_name = "obstack_stack_obstack";
|
|||
|
}
|
|||
|
else if (_obstack_allocated_p (function_obstack, object))
|
|||
|
{
|
|||
|
obstack = function_obstack;
|
|||
|
obstack_name = "function obstack";
|
|||
|
}
|
|||
|
else if (_obstack_allocated_p (&permanent_obstack, object))
|
|||
|
{
|
|||
|
obstack = &permanent_obstack;
|
|||
|
obstack_name = "permanent_obstack";
|
|||
|
}
|
|||
|
else if (_obstack_allocated_p (&momentary_obstack, object))
|
|||
|
{
|
|||
|
obstack = &momentary_obstack;
|
|||
|
obstack_name = "momentary_obstack";
|
|||
|
}
|
|||
|
else if (_obstack_allocated_p (function_maybepermanent_obstack, object))
|
|||
|
{
|
|||
|
obstack = function_maybepermanent_obstack;
|
|||
|
obstack_name = "function maybepermanent obstack";
|
|||
|
}
|
|||
|
else if (_obstack_allocated_p (&temp_decl_obstack, object))
|
|||
|
{
|
|||
|
obstack = &temp_decl_obstack;
|
|||
|
obstack_name = "temp_decl_obstack";
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
if (obstack != 0 )
|
|||
|
{
|
|||
|
if (object >= obstack->next_free
|
|||
|
&& object < obstack->chunk_limit)
|
|||
|
fprintf ((&__sF[2]) , "object in free portion of obstack %s.\n",
|
|||
|
obstack_name);
|
|||
|
else
|
|||
|
fprintf ((&__sF[2]) , "object allocated from %s.\n", obstack_name);
|
|||
|
}
|
|||
|
else
|
|||
|
fprintf ((&__sF[2]) , "object not allocated from any obstack.\n");
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
int
|
|||
|
object_permanent_p (obj)
|
|||
|
tree obj;
|
|||
|
{
|
|||
|
return _obstack_allocated_p (&permanent_obstack, obj);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
void
|
|||
|
push_momentary ()
|
|||
|
{
|
|||
|
struct momentary_level *tem
|
|||
|
= (struct momentary_level *) ({ struct obstack *__h = (&momentary_obstack); ({ struct obstack *__o = (__h); int __len = ( (
|
|||
|
sizeof (struct momentary_level))); ((__o->chunk_limit - __o->next_free < __len) ? (_obstack_newchunk (__o, __len), 0) : 0); __o->next_free += __len; (void) 0; }) ; ({ struct obstack *__o1 = (__h); void *value = (void *) __o1->object_base; if (__o1->next_free == value) __o1->maybe_empty_object = 1; __o1->next_free = (((((__o1->next_free) - (char *)0) +__o1->alignment_mask) & ~ (__o1->alignment_mask)) + (char *)0) ; ((__o1->next_free - (char *)__o1->chunk > __o1->chunk_limit - (char *)__o1->chunk) ? (__o1->next_free = __o1->chunk_limit) : 0); __o1->object_base = __o1->next_free; value; }) ; }) ;
|
|||
|
tem->prev = momentary_stack;
|
|||
|
tem->base = (char *) ((&momentary_obstack)->object_base) ;
|
|||
|
tem->obstack = expression_obstack;
|
|||
|
momentary_stack = tem;
|
|||
|
expression_obstack = &momentary_obstack;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
void
|
|||
|
clear_momentary ()
|
|||
|
{
|
|||
|
({ struct obstack *__o = (&momentary_obstack); void *__obj = ( momentary_stack->base); if (__obj > (void *)__o->chunk && __obj < (void *)__o->chunk_limit) __o->next_free = __o->object_base = __obj; else (obstack_free) (__o, __obj); }) ;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
void
|
|||
|
pop_momentary ()
|
|||
|
{
|
|||
|
struct momentary_level *tem = momentary_stack;
|
|||
|
momentary_stack = tem->prev;
|
|||
|
expression_obstack = tem->obstack;
|
|||
|
({ struct obstack *__o = (&momentary_obstack); void *__obj = ( tem); if (__obj > (void *)__o->chunk && __obj < (void *)__o->chunk_limit) __o->next_free = __o->object_base = __obj; else (obstack_free) (__o, __obj); }) ;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
int
|
|||
|
suspend_momentary ()
|
|||
|
{
|
|||
|
register int tem = expression_obstack == &momentary_obstack;
|
|||
|
expression_obstack = saveable_obstack;
|
|||
|
return tem;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
void
|
|||
|
resume_momentary (yes)
|
|||
|
int yes;
|
|||
|
{
|
|||
|
if (yes)
|
|||
|
expression_obstack = &momentary_obstack;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
void
|
|||
|
init_tree_codes ()
|
|||
|
{
|
|||
|
tree_code_type = (char **) xmalloc (sizeof (standard_tree_code_type));
|
|||
|
tree_code_length = (int *) xmalloc (sizeof (standard_tree_code_length));
|
|||
|
tree_code_name = (char **) xmalloc (sizeof (standard_tree_code_name));
|
|||
|
bcopy (standard_tree_code_type, tree_code_type,
|
|||
|
sizeof (standard_tree_code_type));
|
|||
|
bcopy (standard_tree_code_length, tree_code_length,
|
|||
|
sizeof (standard_tree_code_length));
|
|||
|
bcopy (standard_tree_code_name, tree_code_name,
|
|||
|
sizeof (standard_tree_code_name));
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
tree
|
|||
|
make_node (code)
|
|||
|
enum tree_code code;
|
|||
|
{
|
|||
|
register tree t;
|
|||
|
register int type = (*tree_code_type[(int) (code)]) ;
|
|||
|
register int length;
|
|||
|
register struct obstack *obstack = current_obstack;
|
|||
|
register int i;
|
|||
|
register tree_node_kind kind;
|
|||
|
|
|||
|
switch (type)
|
|||
|
{
|
|||
|
case 'd':
|
|||
|
|
|||
|
|
|||
|
|
|||
|
length = sizeof (struct tree_decl);
|
|||
|
|
|||
|
if (obstack != &permanent_obstack)
|
|||
|
obstack = saveable_obstack;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
else if (code == PARM_DECL)
|
|||
|
obstack = function_maybepermanent_obstack;
|
|||
|
break;
|
|||
|
|
|||
|
case 't':
|
|||
|
|
|||
|
|
|||
|
|
|||
|
length = sizeof (struct tree_type);
|
|||
|
|
|||
|
if (obstack != &permanent_obstack)
|
|||
|
obstack = all_types_permanent ? &permanent_obstack : saveable_obstack;
|
|||
|
break;
|
|||
|
|
|||
|
case 'b':
|
|||
|
|
|||
|
|
|||
|
|
|||
|
length = sizeof (struct tree_block);
|
|||
|
|
|||
|
if (obstack != &permanent_obstack)
|
|||
|
obstack = saveable_obstack;
|
|||
|
break;
|
|||
|
|
|||
|
case 's':
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
case 'r':
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
case 'e':
|
|||
|
case '<':
|
|||
|
case '1':
|
|||
|
case '2':
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
obstack = expression_obstack;
|
|||
|
|
|||
|
if (code == BIND_EXPR && obstack != &permanent_obstack)
|
|||
|
obstack = saveable_obstack;
|
|||
|
length = sizeof (struct tree_exp)
|
|||
|
+ (tree_code_length[(int) code] - 1) * sizeof (char *);
|
|||
|
break;
|
|||
|
|
|||
|
case 'c':
|
|||
|
|
|||
|
|
|||
|
|
|||
|
obstack = expression_obstack;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
if (code == INTEGER_CST)
|
|||
|
length = sizeof (struct tree_int_cst);
|
|||
|
else if (code == REAL_CST)
|
|||
|
length = sizeof (struct tree_real_cst);
|
|||
|
else
|
|||
|
length = sizeof (struct tree_common)
|
|||
|
+ tree_code_length[(int) code] * sizeof (char *);
|
|||
|
break;
|
|||
|
|
|||
|
case 'x':
|
|||
|
# 869 "/a/users/paul/gcc2/cc1/../common/tree.c"
|
|||
|
|
|||
|
length = sizeof (struct tree_common)
|
|||
|
+ tree_code_length[(int) code] * sizeof (char *);
|
|||
|
|
|||
|
|
|||
|
if (code == IDENTIFIER_NODE) obstack = &permanent_obstack;
|
|||
|
}
|
|||
|
|
|||
|
t = (tree) ({ struct obstack *__h = (obstack); ({ struct obstack *__o = (__h); int __len = ( ( length)); ((__o->chunk_limit - __o->next_free < __len) ? (_obstack_newchunk (__o, __len), 0) : 0); __o->next_free += __len; (void) 0; }) ; ({ struct obstack *__o1 = (__h); void *value = (void *) __o1->object_base; if (__o1->next_free == value) __o1->maybe_empty_object = 1; __o1->next_free = (((((__o1->next_free) - (char *)0) +__o1->alignment_mask) & ~ (__o1->alignment_mask)) + (char *)0) ; ((__o1->next_free - (char *)__o1->chunk > __o1->chunk_limit - (char *)__o1->chunk) ? (__o1->next_free = __o1->chunk_limit) : 0); __o1->object_base = __o1->next_free; value; }) ; }) ;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
for (i = (length / sizeof (int)) - 1; i >= 0; i--)
|
|||
|
((int *) t)[i] = 0;
|
|||
|
|
|||
|
for (i = length / sizeof (int) * sizeof (int); i < length; i++)
|
|||
|
((char *) t)[i] = 0;
|
|||
|
|
|||
|
((t)->common.code = (int) ( code)) ;
|
|||
|
if (obstack == &permanent_obstack)
|
|||
|
((t)->common.permanent_flag) = 1;
|
|||
|
|
|||
|
switch (type)
|
|||
|
{
|
|||
|
case 's':
|
|||
|
((t)->common.side_effects_flag) = 1;
|
|||
|
((t)->common.type) = void_type_node;
|
|||
|
break;
|
|||
|
|
|||
|
case 'd':
|
|||
|
if (code != FUNCTION_DECL)
|
|||
|
((t)->decl.frame_size) = 1;
|
|||
|
((t)->decl.in_system_header_flag)
|
|||
|
= in_system_header && (obstack == &permanent_obstack);
|
|||
|
((t)->decl.linenum) = lineno;
|
|||
|
((t)->decl.filename) = (input_filename) ? input_filename : "<built-in>";
|
|||
|
((t)->decl.uid) = next_decl_uid++;
|
|||
|
break;
|
|||
|
|
|||
|
case 't':
|
|||
|
((t)->type.uid) = next_type_uid++;
|
|||
|
((t)->type.align) = 1;
|
|||
|
((t)->type.main_variant) = t;
|
|||
|
break;
|
|||
|
|
|||
|
case 'c':
|
|||
|
((t)->common.constant_flag) = 1;
|
|||
|
break;
|
|||
|
}
|
|||
|
|
|||
|
return t;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
tree
|
|||
|
copy_node (node)
|
|||
|
tree node;
|
|||
|
{
|
|||
|
register tree t;
|
|||
|
register enum tree_code code = ((enum tree_code) (node)->common.code) ;
|
|||
|
register int length;
|
|||
|
register int i;
|
|||
|
|
|||
|
switch ((*tree_code_type[(int) (code)]) )
|
|||
|
{
|
|||
|
case 'd':
|
|||
|
length = sizeof (struct tree_decl);
|
|||
|
break;
|
|||
|
|
|||
|
case 't':
|
|||
|
length = sizeof (struct tree_type);
|
|||
|
break;
|
|||
|
|
|||
|
case 'b':
|
|||
|
length = sizeof (struct tree_block);
|
|||
|
break;
|
|||
|
|
|||
|
case 'r':
|
|||
|
case 'e':
|
|||
|
case 's':
|
|||
|
case '<':
|
|||
|
case '1':
|
|||
|
case '2':
|
|||
|
length = sizeof (struct tree_exp)
|
|||
|
+ (tree_code_length[(int) code] - 1) * sizeof (char *);
|
|||
|
break;
|
|||
|
|
|||
|
case 'c':
|
|||
|
|
|||
|
|
|||
|
if (code == REAL_CST)
|
|||
|
{
|
|||
|
length = sizeof (struct tree_real_cst);
|
|||
|
break;
|
|||
|
}
|
|||
|
|
|||
|
case 'x':
|
|||
|
length = sizeof (struct tree_common)
|
|||
|
+ tree_code_length[(int) code] * sizeof (char *);
|
|||
|
if (code == TREE_VEC)
|
|||
|
length += (((node)->vec.length) - 1) * sizeof (char *);
|
|||
|
}
|
|||
|
|
|||
|
t = (tree) ({ struct obstack *__h = (current_obstack); ({ struct obstack *__o = (__h); int __len = ( ( length)); ((__o->chunk_limit - __o->next_free < __len) ? (_obstack_newchunk (__o, __len), 0) : 0); __o->next_free += __len; (void) 0; }) ; ({ struct obstack *__o1 = (__h); void *value = (void *) __o1->object_base; if (__o1->next_free == value) __o1->maybe_empty_object = 1; __o1->next_free = (((((__o1->next_free) - (char *)0) +__o1->alignment_mask) & ~ (__o1->alignment_mask)) + (char *)0) ; ((__o1->next_free - (char *)__o1->chunk > __o1->chunk_limit - (char *)__o1->chunk) ? (__o1->next_free = __o1->chunk_limit) : 0); __o1->object_base = __o1->next_free; value; }) ; }) ;
|
|||
|
|
|||
|
for (i = (length / sizeof (int)) - 1; i >= 0; i--)
|
|||
|
((int *) t)[i] = ((int *) node)[i];
|
|||
|
|
|||
|
for (i = length / sizeof (int) * sizeof (int); i < length; i++)
|
|||
|
((char *) t)[i] = ((char *) node)[i];
|
|||
|
|
|||
|
((t)->common.chain) = 0;
|
|||
|
|
|||
|
if ((*tree_code_type[(int) (code)]) == 'd')
|
|||
|
((t)->decl.uid) = next_decl_uid++;
|
|||
|
else if ((*tree_code_type[(int) (code)]) == 't')
|
|||
|
((t)->type.uid) = next_type_uid++;
|
|||
|
|
|||
|
((t)->common.permanent_flag) = (current_obstack == &permanent_obstack);
|
|||
|
|
|||
|
return t;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
tree
|
|||
|
copy_list (list)
|
|||
|
tree list;
|
|||
|
{
|
|||
|
tree head;
|
|||
|
register tree prev, next;
|
|||
|
|
|||
|
if (list == 0)
|
|||
|
return 0;
|
|||
|
|
|||
|
head = prev = copy_node (list);
|
|||
|
next = ((list)->common.chain) ;
|
|||
|
while (next)
|
|||
|
{
|
|||
|
((prev)->common.chain) = copy_node (next);
|
|||
|
prev = ((prev)->common.chain) ;
|
|||
|
next = ((next)->common.chain) ;
|
|||
|
}
|
|||
|
return head;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
tree
|
|||
|
get_identifier (text)
|
|||
|
register char *text;
|
|||
|
{
|
|||
|
register int hi;
|
|||
|
register int i;
|
|||
|
register tree idp;
|
|||
|
register int len, hash_len;
|
|||
|
|
|||
|
|
|||
|
for (len = 0; text[len]; len++);
|
|||
|
|
|||
|
|
|||
|
hash_len = len;
|
|||
|
if (warn_id_clash && len > id_clash_len)
|
|||
|
hash_len = id_clash_len;
|
|||
|
|
|||
|
|
|||
|
hi = hash_len * 613 + (unsigned)text[0];
|
|||
|
for (i = 1; i < hash_len; i += 2)
|
|||
|
hi = ((hi * 613) + (unsigned)(text[i]));
|
|||
|
|
|||
|
hi &= (1 << 30 ) - 1;
|
|||
|
hi %= 1009 ;
|
|||
|
|
|||
|
|
|||
|
for (idp = hash_table[hi]; idp; idp = ((idp)->common.chain) )
|
|||
|
if (((idp)->identifier.length) == len
|
|||
|
&& ((idp)->identifier.pointer) [0] == text[0]
|
|||
|
&& !bcmp (((idp)->identifier.pointer) , text, len))
|
|||
|
return idp;
|
|||
|
|
|||
|
|
|||
|
if (warn_id_clash && do_identifier_warnings && len >= id_clash_len)
|
|||
|
for (idp = hash_table[hi]; idp; idp = ((idp)->common.chain) )
|
|||
|
if (!strncmp (((idp)->identifier.pointer) , text, id_clash_len))
|
|||
|
{
|
|||
|
warning ("`%s' and `%s' identical in first %d characters",
|
|||
|
((idp)->identifier.pointer) , text, id_clash_len);
|
|||
|
break;
|
|||
|
}
|
|||
|
|
|||
|
if (tree_code_length[(int) IDENTIFIER_NODE] < 0)
|
|||
|
abort ();
|
|||
|
|
|||
|
|
|||
|
idp = make_node (IDENTIFIER_NODE);
|
|||
|
((idp)->identifier.length) = len;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
((idp)->identifier.pointer) = ({ struct obstack *__h = (&permanent_obstack); ({ struct obstack *__o = (__h); int __len = ( ( len)); ((__o->next_free + __len + 1 > __o->chunk_limit) ? (_obstack_newchunk (__o, __len + 1), 0) : 0), bcopy ( ( text), __o->next_free, __len), __o->next_free += __len, *(__o->next_free)++ = 0; (void) 0; }) ; ({ struct obstack *__o1 = (__h); void *value = (void *) __o1->object_base; if (__o1->next_free == value) __o1->maybe_empty_object = 1; __o1->next_free = (((((__o1->next_free) - (char *)0) +__o1->alignment_mask) & ~ (__o1->alignment_mask)) + (char *)0) ; ((__o1->next_free - (char *)__o1->chunk > __o1->chunk_limit - (char *)__o1->chunk) ? (__o1->next_free = __o1->chunk_limit) : 0); __o1->object_base = __o1->next_free; value; }) ; }) ;
|
|||
|
|
|||
|
((idp)->common.chain) = hash_table[hi];
|
|||
|
hash_table[hi] = idp;
|
|||
|
return idp;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
void
|
|||
|
start_identifier_warnings ()
|
|||
|
{
|
|||
|
do_identifier_warnings = 1;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
void
|
|||
|
set_identifier_size (size)
|
|||
|
int size;
|
|||
|
{
|
|||
|
tree_code_length[(int) IDENTIFIER_NODE]
|
|||
|
= (size - sizeof (struct tree_common)) / sizeof (tree);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
tree
|
|||
|
build_int_2_wide (low, hi)
|
|||
|
int low, hi;
|
|||
|
{
|
|||
|
register tree t = make_node (INTEGER_CST);
|
|||
|
((t)->int_cst.int_cst_low) = low;
|
|||
|
((t)->int_cst.int_cst_high) = hi;
|
|||
|
((t)->common.type) = integer_type_node;
|
|||
|
return t;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
tree
|
|||
|
build_real (type, d)
|
|||
|
tree type;
|
|||
|
double d;
|
|||
|
{
|
|||
|
tree v;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
v = make_node (REAL_CST);
|
|||
|
((v)->common.type) = type;
|
|||
|
((v)->real_cst.real_cst) = d;
|
|||
|
return v;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
double
|
|||
|
real_value_from_int_cst (i)
|
|||
|
tree i;
|
|||
|
{
|
|||
|
double d;
|
|||
|
double e;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
if (((i)->int_cst.int_cst_high) < 0 && ! ((((i)->common.type) )->common.unsigned_flag) )
|
|||
|
{
|
|||
|
d = (double) (~ ((i)->int_cst.int_cst_high) );
|
|||
|
e = ((double) ((int ) 1 << (32 / 2))
|
|||
|
* (double) ((int ) 1 << (32 / 2)));
|
|||
|
d *= e;
|
|||
|
e = (double) (unsigned int ) (~ ((i)->int_cst.int_cst_low) );
|
|||
|
d += e;
|
|||
|
d = (- d - 1.0);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
d = (double) (unsigned int ) ((i)->int_cst.int_cst_high) ;
|
|||
|
e = ((double) ((int ) 1 << (32 / 2))
|
|||
|
* (double) ((int ) 1 << (32 / 2)));
|
|||
|
d *= e;
|
|||
|
e = (double) (unsigned int ) ((i)->int_cst.int_cst_low) ;
|
|||
|
d += e;
|
|||
|
}
|
|||
|
|
|||
|
return d;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
tree
|
|||
|
build_real_from_int_cst (type, i)
|
|||
|
tree type;
|
|||
|
tree i;
|
|||
|
{
|
|||
|
tree v;
|
|||
|
double d;
|
|||
|
|
|||
|
v = make_node (REAL_CST);
|
|||
|
((v)->common.type) = type;
|
|||
|
|
|||
|
d = ( (8 * mode_size[(int)(((type)->type.mode) )]) == sizeof (float) * 8 ? (float) ( real_value_from_int_cst (i)) : ( real_value_from_int_cst (i))) ;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
((v)->real_cst.real_cst) = d;
|
|||
|
return v;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
tree
|
|||
|
build_string (len, str)
|
|||
|
int len;
|
|||
|
char *str;
|
|||
|
{
|
|||
|
register tree s = make_node (STRING_CST);
|
|||
|
((s)->string.length) = len;
|
|||
|
((s)->string.pointer) = ({ struct obstack *__h = (saveable_obstack); ({ struct obstack *__o = (__h); int __len = ( ( len)); ((__o->next_free + __len + 1 > __o->chunk_limit) ? (_obstack_newchunk (__o, __len + 1), 0) : 0), bcopy ( ( str), __o->next_free, __len), __o->next_free += __len, *(__o->next_free)++ = 0; (void) 0; }) ; ({ struct obstack *__o1 = (__h); void *value = (void *) __o1->object_base; if (__o1->next_free == value) __o1->maybe_empty_object = 1; __o1->next_free = (((((__o1->next_free) - (char *)0) +__o1->alignment_mask) & ~ (__o1->alignment_mask)) + (char *)0) ; ((__o1->next_free - (char *)__o1->chunk > __o1->chunk_limit - (char *)__o1->chunk) ? (__o1->next_free = __o1->chunk_limit) : 0); __o1->object_base = __o1->next_free; value; }) ; }) ;
|
|||
|
return s;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
tree
|
|||
|
build_complex (real, imag)
|
|||
|
tree real, imag;
|
|||
|
{
|
|||
|
register tree t = make_node (COMPLEX_CST);
|
|||
|
((t)->complex.real) = real;
|
|||
|
((t)->complex.imag) = imag;
|
|||
|
((t)->common.type) = build_complex_type (((real)->common.type) );
|
|||
|
return t;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
tree
|
|||
|
make_tree_vec (len)
|
|||
|
int len;
|
|||
|
{
|
|||
|
register tree t;
|
|||
|
register int length = (len-1) * sizeof (tree) + sizeof (struct tree_vec);
|
|||
|
register struct obstack *obstack = current_obstack;
|
|||
|
register int i;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
t = (tree) ({ struct obstack *__h = (obstack); ({ struct obstack *__o = (__h); int __len = ( ( length)); ((__o->chunk_limit - __o->next_free < __len) ? (_obstack_newchunk (__o, __len), 0) : 0); __o->next_free += __len; (void) 0; }) ; ({ struct obstack *__o1 = (__h); void *value = (void *) __o1->object_base; if (__o1->next_free == value) __o1->maybe_empty_object = 1; __o1->next_free = (((((__o1->next_free) - (char *)0) +__o1->alignment_mask) & ~ (__o1->alignment_mask)) + (char *)0) ; ((__o1->next_free - (char *)__o1->chunk > __o1->chunk_limit - (char *)__o1->chunk) ? (__o1->next_free = __o1->chunk_limit) : 0); __o1->object_base = __o1->next_free; value; }) ; }) ;
|
|||
|
|
|||
|
for (i = (length / sizeof (int)) - 1; i >= 0; i--)
|
|||
|
((int *) t)[i] = 0;
|
|||
|
|
|||
|
((t)->common.code = (int) ( TREE_VEC)) ;
|
|||
|
((t)->vec.length) = len;
|
|||
|
if (obstack == &permanent_obstack)
|
|||
|
((t)->common.permanent_flag) = 1;
|
|||
|
|
|||
|
return t;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
int
|
|||
|
integer_zerop (expr)
|
|||
|
tree expr;
|
|||
|
{
|
|||
|
while ((((enum tree_code) (expr)->common.code) == NOP_EXPR || ((enum tree_code) (expr)->common.code) == CONVERT_EXPR || ((enum tree_code) (expr)->common.code) == NON_LVALUE_EXPR) && (((((expr)->common.type) )->type.mode) == ((((((expr)->exp.operands[ 0]) )->common.type) )->type.mode) )) (expr) = ((expr)->exp.operands[ 0]) ; ;
|
|||
|
|
|||
|
return (((enum tree_code) (expr)->common.code) == INTEGER_CST
|
|||
|
&& ((expr)->int_cst.int_cst_low) == 0
|
|||
|
&& ((expr)->int_cst.int_cst_high) == 0);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
int
|
|||
|
integer_onep (expr)
|
|||
|
tree expr;
|
|||
|
{
|
|||
|
while ((((enum tree_code) (expr)->common.code) == NOP_EXPR || ((enum tree_code) (expr)->common.code) == CONVERT_EXPR || ((enum tree_code) (expr)->common.code) == NON_LVALUE_EXPR) && (((((expr)->common.type) )->type.mode) == ((((((expr)->exp.operands[ 0]) )->common.type) )->type.mode) )) (expr) = ((expr)->exp.operands[ 0]) ; ;
|
|||
|
|
|||
|
return (((enum tree_code) (expr)->common.code) == INTEGER_CST
|
|||
|
&& ((expr)->int_cst.int_cst_low) == 1
|
|||
|
&& ((expr)->int_cst.int_cst_high) == 0);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
int
|
|||
|
integer_all_onesp (expr)
|
|||
|
tree expr;
|
|||
|
{
|
|||
|
register int prec;
|
|||
|
register int uns;
|
|||
|
|
|||
|
while ((((enum tree_code) (expr)->common.code) == NOP_EXPR || ((enum tree_code) (expr)->common.code) == CONVERT_EXPR || ((enum tree_code) (expr)->common.code) == NON_LVALUE_EXPR) && (((((expr)->common.type) )->type.mode) == ((((((expr)->exp.operands[ 0]) )->common.type) )->type.mode) )) (expr) = ((expr)->exp.operands[ 0]) ; ;
|
|||
|
|
|||
|
if (((enum tree_code) (expr)->common.code) != INTEGER_CST)
|
|||
|
return 0;
|
|||
|
|
|||
|
uns = ((((expr)->common.type) )->common.unsigned_flag) ;
|
|||
|
if (!uns)
|
|||
|
return ((expr)->int_cst.int_cst_low) == -1 && ((expr)->int_cst.int_cst_high) == -1;
|
|||
|
|
|||
|
prec = ((((expr)->common.type) )->type.precision) ;
|
|||
|
if (prec >= 32 )
|
|||
|
{
|
|||
|
int high_value, shift_amount;
|
|||
|
|
|||
|
shift_amount = prec - 32 ;
|
|||
|
|
|||
|
if (shift_amount > 32 )
|
|||
|
|
|||
|
abort ();
|
|||
|
else if (shift_amount == 32 )
|
|||
|
|
|||
|
|
|||
|
high_value = -1;
|
|||
|
else
|
|||
|
high_value = ((int ) 1 << shift_amount) - 1;
|
|||
|
|
|||
|
return ((expr)->int_cst.int_cst_low) == -1
|
|||
|
&& ((expr)->int_cst.int_cst_high) == high_value;
|
|||
|
}
|
|||
|
else
|
|||
|
return ((expr)->int_cst.int_cst_low) == ((int ) 1 << prec) - 1;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
int
|
|||
|
integer_pow2p (expr)
|
|||
|
tree expr;
|
|||
|
{
|
|||
|
int high, low;
|
|||
|
|
|||
|
while ((((enum tree_code) (expr)->common.code) == NOP_EXPR || ((enum tree_code) (expr)->common.code) == CONVERT_EXPR || ((enum tree_code) (expr)->common.code) == NON_LVALUE_EXPR) && (((((expr)->common.type) )->type.mode) == ((((((expr)->exp.operands[ 0]) )->common.type) )->type.mode) )) (expr) = ((expr)->exp.operands[ 0]) ; ;
|
|||
|
|
|||
|
if (((enum tree_code) (expr)->common.code) != INTEGER_CST)
|
|||
|
return 0;
|
|||
|
|
|||
|
high = ((expr)->int_cst.int_cst_high) ;
|
|||
|
low = ((expr)->int_cst.int_cst_low) ;
|
|||
|
|
|||
|
if (high == 0 && low == 0)
|
|||
|
return 0;
|
|||
|
|
|||
|
return ((high == 0 && (low & (low - 1)) == 0)
|
|||
|
|| (low == 0 && (high & (high - 1)) == 0));
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
int
|
|||
|
real_zerop (expr)
|
|||
|
tree expr;
|
|||
|
{
|
|||
|
while ((((enum tree_code) (expr)->common.code) == NOP_EXPR || ((enum tree_code) (expr)->common.code) == CONVERT_EXPR || ((enum tree_code) (expr)->common.code) == NON_LVALUE_EXPR) && (((((expr)->common.type) )->type.mode) == ((((((expr)->exp.operands[ 0]) )->common.type) )->type.mode) )) (expr) = ((expr)->exp.operands[ 0]) ; ;
|
|||
|
|
|||
|
return (((enum tree_code) (expr)->common.code) == REAL_CST
|
|||
|
&& ((((expr)->real_cst.real_cst) ) == ( dconst0)) );
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
int
|
|||
|
real_onep (expr)
|
|||
|
tree expr;
|
|||
|
{
|
|||
|
while ((((enum tree_code) (expr)->common.code) == NOP_EXPR || ((enum tree_code) (expr)->common.code) == CONVERT_EXPR || ((enum tree_code) (expr)->common.code) == NON_LVALUE_EXPR) && (((((expr)->common.type) )->type.mode) == ((((((expr)->exp.operands[ 0]) )->common.type) )->type.mode) )) (expr) = ((expr)->exp.operands[ 0]) ; ;
|
|||
|
|
|||
|
return (((enum tree_code) (expr)->common.code) == REAL_CST
|
|||
|
&& ((((expr)->real_cst.real_cst) ) == ( dconst1)) );
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
int
|
|||
|
real_twop (expr)
|
|||
|
tree expr;
|
|||
|
{
|
|||
|
while ((((enum tree_code) (expr)->common.code) == NOP_EXPR || ((enum tree_code) (expr)->common.code) == CONVERT_EXPR || ((enum tree_code) (expr)->common.code) == NON_LVALUE_EXPR) && (((((expr)->common.type) )->type.mode) == ((((((expr)->exp.operands[ 0]) )->common.type) )->type.mode) )) (expr) = ((expr)->exp.operands[ 0]) ; ;
|
|||
|
|
|||
|
return (((enum tree_code) (expr)->common.code) == REAL_CST
|
|||
|
&& ((((expr)->real_cst.real_cst) ) == ( dconst2)) );
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
int
|
|||
|
really_constant_p (exp)
|
|||
|
tree exp;
|
|||
|
{
|
|||
|
|
|||
|
while (((enum tree_code) (exp)->common.code) == NOP_EXPR
|
|||
|
|| ((enum tree_code) (exp)->common.code) == CONVERT_EXPR
|
|||
|
|| ((enum tree_code) (exp)->common.code) == NON_LVALUE_EXPR)
|
|||
|
exp = ((exp)->exp.operands[ 0]) ;
|
|||
|
return ((exp)->common.constant_flag) ;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
tree
|
|||
|
value_member (elem, list)
|
|||
|
tree elem, list;
|
|||
|
{
|
|||
|
while (list)
|
|||
|
{
|
|||
|
if (elem == ((list)->list.value) )
|
|||
|
return list;
|
|||
|
list = ((list)->common.chain) ;
|
|||
|
}
|
|||
|
return (tree) 0 ;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
tree
|
|||
|
purpose_member (elem, list)
|
|||
|
tree elem, list;
|
|||
|
{
|
|||
|
while (list)
|
|||
|
{
|
|||
|
if (elem == ((list)->list.purpose) )
|
|||
|
return list;
|
|||
|
list = ((list)->common.chain) ;
|
|||
|
}
|
|||
|
return (tree) 0 ;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
tree
|
|||
|
binfo_member (elem, list)
|
|||
|
tree elem, list;
|
|||
|
{
|
|||
|
while (list)
|
|||
|
{
|
|||
|
if (elem == ((list)->common.type) )
|
|||
|
return list;
|
|||
|
list = ((list)->common.chain) ;
|
|||
|
}
|
|||
|
return (tree) 0 ;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
int
|
|||
|
chain_member (elem, chain)
|
|||
|
tree elem, chain;
|
|||
|
{
|
|||
|
while (chain)
|
|||
|
{
|
|||
|
if (elem == chain)
|
|||
|
return 1;
|
|||
|
chain = ((chain)->common.chain) ;
|
|||
|
}
|
|||
|
|
|||
|
return 0;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
int
|
|||
|
list_length (t)
|
|||
|
tree t;
|
|||
|
{
|
|||
|
register tree tail;
|
|||
|
register int len = 0;
|
|||
|
|
|||
|
for (tail = t; tail; tail = ((tail)->common.chain) )
|
|||
|
len++;
|
|||
|
|
|||
|
return len;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
tree
|
|||
|
chainon (op1, op2)
|
|||
|
tree op1, op2;
|
|||
|
{
|
|||
|
tree t;
|
|||
|
|
|||
|
if (op1)
|
|||
|
{
|
|||
|
for (t = op1; ((t)->common.chain) ; t = ((t)->common.chain) )
|
|||
|
if (t == op2) abort ();
|
|||
|
if (t == op2) abort ();
|
|||
|
((t)->common.chain) = op2;
|
|||
|
return op1;
|
|||
|
}
|
|||
|
else return op2;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
tree
|
|||
|
tree_last (chain)
|
|||
|
register tree chain;
|
|||
|
{
|
|||
|
register tree next;
|
|||
|
if (chain)
|
|||
|
while (next = ((chain)->common.chain) )
|
|||
|
chain = next;
|
|||
|
return chain;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
tree
|
|||
|
nreverse (t)
|
|||
|
tree t;
|
|||
|
{
|
|||
|
register tree prev = 0, decl, next;
|
|||
|
for (decl = t; decl; decl = next)
|
|||
|
{
|
|||
|
next = ((decl)->common.chain) ;
|
|||
|
((decl)->common.chain) = prev;
|
|||
|
prev = decl;
|
|||
|
}
|
|||
|
return prev;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
tree
|
|||
|
listify (chain)
|
|||
|
tree chain;
|
|||
|
{
|
|||
|
tree result = (tree) 0 ;
|
|||
|
tree in_tail = chain;
|
|||
|
tree out_tail = (tree) 0 ;
|
|||
|
|
|||
|
while (in_tail)
|
|||
|
{
|
|||
|
tree next = tree_cons ((tree) 0 , in_tail, (tree) 0 );
|
|||
|
if (out_tail)
|
|||
|
((out_tail)->common.chain) = next;
|
|||
|
else
|
|||
|
result = next;
|
|||
|
out_tail = next;
|
|||
|
in_tail = ((in_tail)->common.chain) ;
|
|||
|
}
|
|||
|
|
|||
|
return result;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
tree
|
|||
|
build_tree_list (parm, value)
|
|||
|
tree parm, value;
|
|||
|
{
|
|||
|
register tree t = make_node (TREE_LIST);
|
|||
|
((t)->list.purpose) = parm;
|
|||
|
((t)->list.value) = value;
|
|||
|
return t;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
tree
|
|||
|
build_decl_list (parm, value)
|
|||
|
tree parm, value;
|
|||
|
{
|
|||
|
register tree node;
|
|||
|
register struct obstack *ambient_obstack = current_obstack;
|
|||
|
current_obstack = &temp_decl_obstack;
|
|||
|
node = build_tree_list (parm, value);
|
|||
|
current_obstack = ambient_obstack;
|
|||
|
return node;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
tree
|
|||
|
tree_cons (purpose, value, chain)
|
|||
|
tree purpose, value, chain;
|
|||
|
{
|
|||
|
|
|||
|
|
|||
|
|
|||
|
register int i;
|
|||
|
register tree node = (tree) ({ struct obstack *__h = (current_obstack); ({ struct obstack *__o = (__h); int __len = ( ( sizeof (struct tree_list))); ((__o->chunk_limit - __o->next_free < __len) ? (_obstack_newchunk (__o, __len), 0) : 0); __o->next_free += __len; (void) 0; }) ; ({ struct obstack *__o1 = (__h); void *value = (void *) __o1->object_base; if (__o1->next_free == value) __o1->maybe_empty_object = 1; __o1->next_free = (((((__o1->next_free) - (char *)0) +__o1->alignment_mask) & ~ (__o1->alignment_mask)) + (char *)0) ; ((__o1->next_free - (char *)__o1->chunk > __o1->chunk_limit - (char *)__o1->chunk) ? (__o1->next_free = __o1->chunk_limit) : 0); __o1->object_base = __o1->next_free; value; }) ; }) ;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
for (i = (sizeof (struct tree_common) / sizeof (int)) - 1; i >= 0; i--)
|
|||
|
((int *) node)[i] = 0;
|
|||
|
|
|||
|
((node)->common.code = (int) ( TREE_LIST)) ;
|
|||
|
if (current_obstack == &permanent_obstack)
|
|||
|
((node)->common.permanent_flag) = 1;
|
|||
|
|
|||
|
|
|||
|
((node)->common.chain) = chain;
|
|||
|
((node)->list.purpose) = purpose;
|
|||
|
((node)->list.value) = value;
|
|||
|
return node;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
tree
|
|||
|
decl_tree_cons (purpose, value, chain)
|
|||
|
tree purpose, value, chain;
|
|||
|
{
|
|||
|
register tree node;
|
|||
|
register struct obstack *ambient_obstack = current_obstack;
|
|||
|
current_obstack = &temp_decl_obstack;
|
|||
|
node = tree_cons (purpose, value, chain);
|
|||
|
current_obstack = ambient_obstack;
|
|||
|
return node;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
tree
|
|||
|
perm_tree_cons (purpose, value, chain)
|
|||
|
tree purpose, value, chain;
|
|||
|
{
|
|||
|
register tree node;
|
|||
|
register struct obstack *ambient_obstack = current_obstack;
|
|||
|
current_obstack = &permanent_obstack;
|
|||
|
|
|||
|
node = tree_cons (purpose, value, chain);
|
|||
|
current_obstack = ambient_obstack;
|
|||
|
return node;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
tree
|
|||
|
temp_tree_cons (purpose, value, chain)
|
|||
|
tree purpose, value, chain;
|
|||
|
{
|
|||
|
register tree node;
|
|||
|
register struct obstack *ambient_obstack = current_obstack;
|
|||
|
current_obstack = &temporary_obstack;
|
|||
|
|
|||
|
node = tree_cons (purpose, value, chain);
|
|||
|
current_obstack = ambient_obstack;
|
|||
|
return node;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
tree
|
|||
|
saveable_tree_cons (purpose, value, chain)
|
|||
|
tree purpose, value, chain;
|
|||
|
{
|
|||
|
register tree node;
|
|||
|
register struct obstack *ambient_obstack = current_obstack;
|
|||
|
current_obstack = saveable_obstack;
|
|||
|
|
|||
|
node = tree_cons (purpose, value, chain);
|
|||
|
current_obstack = ambient_obstack;
|
|||
|
return node;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
tree
|
|||
|
size_in_bytes (type)
|
|||
|
tree type;
|
|||
|
{
|
|||
|
tree t;
|
|||
|
|
|||
|
if (type == error_mark_node)
|
|||
|
return integer_zero_node;
|
|||
|
type = ((type)->type.main_variant) ;
|
|||
|
if (((type)->type.size) == 0)
|
|||
|
{
|
|||
|
incomplete_type_error ((tree) 0 , type);
|
|||
|
return integer_zero_node;
|
|||
|
}
|
|||
|
t = size_binop (CEIL_DIV_EXPR, ((type)->type.size) ,
|
|||
|
size_int (8 ));
|
|||
|
if (((enum tree_code) (t)->common.code) == INTEGER_CST)
|
|||
|
force_fit_type (t, 0);
|
|||
|
return t;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
int
|
|||
|
int_size_in_bytes (type)
|
|||
|
tree type;
|
|||
|
{
|
|||
|
unsigned int size;
|
|||
|
if (type == error_mark_node)
|
|||
|
return 0;
|
|||
|
type = ((type)->type.main_variant) ;
|
|||
|
if (((type)->type.size) == 0)
|
|||
|
return -1;
|
|||
|
if (((enum tree_code) (((type)->type.size) )->common.code) != INTEGER_CST)
|
|||
|
return -1;
|
|||
|
if (((((type)->type.size) )->int_cst.int_cst_high) != 0)
|
|||
|
{
|
|||
|
tree t = size_binop (CEIL_DIV_EXPR, ((type)->type.size) ,
|
|||
|
size_int (8 ));
|
|||
|
return ((t)->int_cst.int_cst_low) ;
|
|||
|
}
|
|||
|
size = ((((type)->type.size) )->int_cst.int_cst_low) ;
|
|||
|
return (size + 8 - 1) / 8 ;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
tree
|
|||
|
array_type_nelts (type)
|
|||
|
tree type;
|
|||
|
{
|
|||
|
tree index_type = ((type)->type.values) ;
|
|||
|
return (tree_int_cst_equal (((index_type)->type.minval) , integer_zero_node)
|
|||
|
? ((index_type)->type.maxval)
|
|||
|
: fold (build (MINUS_EXPR, integer_type_node,
|
|||
|
((index_type)->type.maxval) ,
|
|||
|
((index_type)->type.minval) )));
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
int
|
|||
|
staticp (arg)
|
|||
|
tree arg;
|
|||
|
{
|
|||
|
switch (((enum tree_code) (arg)->common.code) )
|
|||
|
{
|
|||
|
case VAR_DECL:
|
|||
|
case FUNCTION_DECL:
|
|||
|
case CONSTRUCTOR:
|
|||
|
return ((arg)->common.static_flag) || ((arg)->decl.external_flag) ;
|
|||
|
|
|||
|
case STRING_CST:
|
|||
|
return 1;
|
|||
|
|
|||
|
case COMPONENT_REF:
|
|||
|
case BIT_FIELD_REF:
|
|||
|
return staticp (((arg)->exp.operands[ 0]) );
|
|||
|
|
|||
|
case INDIRECT_REF:
|
|||
|
return ((((arg)->exp.operands[ 0]) )->common.constant_flag) ;
|
|||
|
|
|||
|
case ARRAY_REF:
|
|||
|
if (((enum tree_code) (((((arg)->common.type) )->type.size) )->common.code) == INTEGER_CST
|
|||
|
&& ((enum tree_code) (((arg)->exp.operands[ 1]) )->common.code) == INTEGER_CST)
|
|||
|
return staticp (((arg)->exp.operands[ 0]) );
|
|||
|
}
|
|||
|
|
|||
|
return 0;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
tree
|
|||
|
save_expr (expr)
|
|||
|
tree expr;
|
|||
|
{
|
|||
|
register tree t = fold (expr);
|
|||
|
|
|||
|
|
|||
|
|
|||
|
while (((enum tree_code) (t)->common.code) == NON_LVALUE_EXPR)
|
|||
|
t = ((t)->exp.operands[ 0]) ;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
if (((t)->common.constant_flag) || (((t)->common.readonly_flag) && ! ((t)->common.side_effects_flag) )
|
|||
|
|| ((enum tree_code) (t)->common.code) == SAVE_EXPR)
|
|||
|
return t;
|
|||
|
|
|||
|
t = build (SAVE_EXPR, ((expr)->common.type) , t, current_function_decl, (tree) 0 );
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
((t)->common.side_effects_flag) = 1;
|
|||
|
return t;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
tree
|
|||
|
stabilize_reference (ref)
|
|||
|
tree ref;
|
|||
|
{
|
|||
|
register tree result;
|
|||
|
register enum tree_code code = ((enum tree_code) (ref)->common.code) ;
|
|||
|
|
|||
|
switch (code)
|
|||
|
{
|
|||
|
case VAR_DECL:
|
|||
|
case PARM_DECL:
|
|||
|
case RESULT_DECL:
|
|||
|
|
|||
|
return ref;
|
|||
|
|
|||
|
case NOP_EXPR:
|
|||
|
case CONVERT_EXPR:
|
|||
|
case FLOAT_EXPR:
|
|||
|
case FIX_TRUNC_EXPR:
|
|||
|
case FIX_FLOOR_EXPR:
|
|||
|
case FIX_ROUND_EXPR:
|
|||
|
case FIX_CEIL_EXPR:
|
|||
|
result = build_nt (code, stabilize_reference (((ref)->exp.operands[ 0]) ));
|
|||
|
break;
|
|||
|
|
|||
|
case INDIRECT_REF:
|
|||
|
result = build_nt (INDIRECT_REF,
|
|||
|
stabilize_reference_1 (((ref)->exp.operands[ 0]) ));
|
|||
|
break;
|
|||
|
|
|||
|
case COMPONENT_REF:
|
|||
|
result = build_nt (COMPONENT_REF,
|
|||
|
stabilize_reference (((ref)->exp.operands[ 0]) ),
|
|||
|
((ref)->exp.operands[ 1]) );
|
|||
|
break;
|
|||
|
|
|||
|
case BIT_FIELD_REF:
|
|||
|
result = build_nt (BIT_FIELD_REF,
|
|||
|
stabilize_reference (((ref)->exp.operands[ 0]) ),
|
|||
|
stabilize_reference_1 (((ref)->exp.operands[ 1]) ),
|
|||
|
stabilize_reference_1 (((ref)->exp.operands[ 2]) ));
|
|||
|
break;
|
|||
|
|
|||
|
case ARRAY_REF:
|
|||
|
result = build_nt (ARRAY_REF,
|
|||
|
stabilize_reference (((ref)->exp.operands[ 0]) ),
|
|||
|
stabilize_reference_1 (((ref)->exp.operands[ 1]) ));
|
|||
|
break;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
default:
|
|||
|
return ref;
|
|||
|
|
|||
|
case ERROR_MARK:
|
|||
|
return error_mark_node;
|
|||
|
}
|
|||
|
|
|||
|
((result)->common.type) = ((ref)->common.type) ;
|
|||
|
((result)->common.readonly_flag) = ((ref)->common.readonly_flag) ;
|
|||
|
((result)->common.side_effects_flag) = ((ref)->common.side_effects_flag) ;
|
|||
|
((result)->common.volatile_flag) = ((ref)->common.volatile_flag) ;
|
|||
|
((result)->common.raises_flag) = ((ref)->common.raises_flag) ;
|
|||
|
|
|||
|
return result;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
static tree
|
|||
|
stabilize_reference_1 (e)
|
|||
|
tree e;
|
|||
|
{
|
|||
|
register tree result;
|
|||
|
register int length;
|
|||
|
register enum tree_code code = ((enum tree_code) (e)->common.code) ;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
if (((e)->common.constant_flag) || code == SAVE_EXPR)
|
|||
|
return e;
|
|||
|
|
|||
|
switch ((*tree_code_type[(int) (code)]) )
|
|||
|
{
|
|||
|
case 'x':
|
|||
|
case 't':
|
|||
|
case 'd':
|
|||
|
case 'b':
|
|||
|
case '<':
|
|||
|
case 's':
|
|||
|
case 'e':
|
|||
|
case 'r':
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
if (((e)->common.side_effects_flag) )
|
|||
|
return save_expr (e);
|
|||
|
return e;
|
|||
|
|
|||
|
case 'c':
|
|||
|
|
|||
|
|
|||
|
return e;
|
|||
|
|
|||
|
case '2':
|
|||
|
|
|||
|
|
|||
|
|
|||
|
if (code == TRUNC_DIV_EXPR || code == TRUNC_MOD_EXPR
|
|||
|
|| code == FLOOR_DIV_EXPR || code == FLOOR_MOD_EXPR
|
|||
|
|| code == CEIL_DIV_EXPR || code == CEIL_MOD_EXPR
|
|||
|
|| code == ROUND_DIV_EXPR || code == ROUND_MOD_EXPR)
|
|||
|
return save_expr (e);
|
|||
|
|
|||
|
result = build_nt (code, stabilize_reference_1 (((e)->exp.operands[ 0]) ),
|
|||
|
stabilize_reference_1 (((e)->exp.operands[ 1]) ));
|
|||
|
break;
|
|||
|
|
|||
|
case '1':
|
|||
|
|
|||
|
result = build_nt (code, stabilize_reference_1 (((e)->exp.operands[ 0]) ));
|
|||
|
break;
|
|||
|
}
|
|||
|
|
|||
|
((result)->common.type) = ((e)->common.type) ;
|
|||
|
((result)->common.readonly_flag) = ((e)->common.readonly_flag) ;
|
|||
|
((result)->common.side_effects_flag) = ((e)->common.side_effects_flag) ;
|
|||
|
((result)->common.volatile_flag) = ((e)->common.volatile_flag) ;
|
|||
|
((result)->common.raises_flag) = ((e)->common.raises_flag) ;
|
|||
|
|
|||
|
return result;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
tree
|
|||
|
build ( __builtin_va_alist )
|
|||
|
int __builtin_va_alist;
|
|||
|
{
|
|||
|
va_list p;
|
|||
|
enum tree_code code;
|
|||
|
register tree t;
|
|||
|
register int length;
|
|||
|
register int i;
|
|||
|
|
|||
|
p=(char *) &__builtin_va_alist ;
|
|||
|
|
|||
|
code = (p = (__gnuc_va_list) ((char *) (p) + (((sizeof ( enum tree_code) + sizeof (int) - 1) / sizeof (int)) * sizeof (int)) ), *(( enum tree_code *) (void *) ((char *) (p) - (((sizeof ( enum tree_code) + sizeof (int) - 1) / sizeof (int)) * sizeof (int)) ))) ;
|
|||
|
t = make_node (code);
|
|||
|
length = tree_code_length[(int) code];
|
|||
|
((t)->common.type) = (p = (__gnuc_va_list) ((char *) (p) + (((sizeof ( tree) + sizeof (int) - 1) / sizeof (int)) * sizeof (int)) ), *(( tree *) (void *) ((char *) (p) - (((sizeof ( tree) + sizeof (int) - 1) / sizeof (int)) * sizeof (int)) ))) ;
|
|||
|
|
|||
|
if (length == 2)
|
|||
|
{
|
|||
|
|
|||
|
register tree arg0 = (p = (__gnuc_va_list) ((char *) (p) + (((sizeof ( tree) + sizeof (int) - 1) / sizeof (int)) * sizeof (int)) ), *(( tree *) (void *) ((char *) (p) - (((sizeof ( tree) + sizeof (int) - 1) / sizeof (int)) * sizeof (int)) ))) ;
|
|||
|
register tree arg1 = (p = (__gnuc_va_list) ((char *) (p) + (((sizeof ( tree) + sizeof (int) - 1) / sizeof (int)) * sizeof (int)) ), *(( tree *) (void *) ((char *) (p) - (((sizeof ( tree) + sizeof (int) - 1) / sizeof (int)) * sizeof (int)) ))) ;
|
|||
|
((t)->exp.operands[ 0]) = arg0;
|
|||
|
((t)->exp.operands[ 1]) = arg1;
|
|||
|
if ((arg0 && ((arg0)->common.side_effects_flag) )
|
|||
|
|| (arg1 && ((arg1)->common.side_effects_flag) ))
|
|||
|
((t)->common.side_effects_flag) = 1;
|
|||
|
((t)->common.raises_flag)
|
|||
|
= (arg0 && ((arg0)->common.raises_flag) ) || (arg1 && ((arg1)->common.raises_flag) );
|
|||
|
}
|
|||
|
else if (length == 1)
|
|||
|
{
|
|||
|
register tree arg0 = (p = (__gnuc_va_list) ((char *) (p) + (((sizeof ( tree) + sizeof (int) - 1) / sizeof (int)) * sizeof (int)) ), *(( tree *) (void *) ((char *) (p) - (((sizeof ( tree) + sizeof (int) - 1) / sizeof (int)) * sizeof (int)) ))) ;
|
|||
|
|
|||
|
|
|||
|
if ((*tree_code_type[(int) (code)]) != 's')
|
|||
|
abort ();
|
|||
|
((t)->exp.operands[ 0]) = arg0;
|
|||
|
if (arg0 && ((arg0)->common.side_effects_flag) )
|
|||
|
((t)->common.side_effects_flag) = 1;
|
|||
|
((t)->common.raises_flag) = (arg0 && ((arg0)->common.raises_flag) );
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
for (i = 0; i < length; i++)
|
|||
|
{
|
|||
|
register tree operand = (p = (__gnuc_va_list) ((char *) (p) + (((sizeof ( tree) + sizeof (int) - 1) / sizeof (int)) * sizeof (int)) ), *(( tree *) (void *) ((char *) (p) - (((sizeof ( tree) + sizeof (int) - 1) / sizeof (int)) * sizeof (int)) ))) ;
|
|||
|
((t)->exp.operands[ i]) = operand;
|
|||
|
if (operand)
|
|||
|
{
|
|||
|
if (((operand)->common.side_effects_flag) )
|
|||
|
((t)->common.side_effects_flag) = 1;
|
|||
|
if (((operand)->common.raises_flag) )
|
|||
|
((t)->common.raises_flag) = 1;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
;
|
|||
|
return t;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
tree
|
|||
|
build1 (code, type, node)
|
|||
|
enum tree_code code;
|
|||
|
tree type;
|
|||
|
tree node;
|
|||
|
{
|
|||
|
register struct obstack *obstack = current_obstack;
|
|||
|
register int i, length;
|
|||
|
register tree_node_kind kind;
|
|||
|
register tree t;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
obstack = expression_obstack;
|
|||
|
length = sizeof (struct tree_exp);
|
|||
|
|
|||
|
t = (tree) ({ struct obstack *__h = (obstack); ({ struct obstack *__o = (__h); int __len = ( ( length)); ((__o->chunk_limit - __o->next_free < __len) ? (_obstack_newchunk (__o, __len), 0) : 0); __o->next_free += __len; (void) 0; }) ; ({ struct obstack *__o1 = (__h); void *value = (void *) __o1->object_base; if (__o1->next_free == value) __o1->maybe_empty_object = 1; __o1->next_free = (((((__o1->next_free) - (char *)0) +__o1->alignment_mask) & ~ (__o1->alignment_mask)) + (char *)0) ; ((__o1->next_free - (char *)__o1->chunk > __o1->chunk_limit - (char *)__o1->chunk) ? (__o1->next_free = __o1->chunk_limit) : 0); __o1->object_base = __o1->next_free; value; }) ; }) ;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
for (i = (length / sizeof (int)) - 1; i >= 0; i--)
|
|||
|
((int *) t)[i] = 0;
|
|||
|
|
|||
|
((t)->common.type) = type;
|
|||
|
((t)->common.code = (int) ( code)) ;
|
|||
|
|
|||
|
if (obstack == &permanent_obstack)
|
|||
|
((t)->common.permanent_flag) = 1;
|
|||
|
|
|||
|
((t)->exp.operands[ 0]) = node;
|
|||
|
if (node)
|
|||
|
{
|
|||
|
if (((node)->common.side_effects_flag) )
|
|||
|
((t)->common.side_effects_flag) = 1;
|
|||
|
if (((node)->common.raises_flag) )
|
|||
|
((t)->common.raises_flag) = 1;
|
|||
|
}
|
|||
|
|
|||
|
return t;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
tree
|
|||
|
build_nt ( __builtin_va_alist )
|
|||
|
int __builtin_va_alist;
|
|||
|
{
|
|||
|
va_list p;
|
|||
|
register enum tree_code code;
|
|||
|
register tree t;
|
|||
|
register int length;
|
|||
|
register int i;
|
|||
|
|
|||
|
p=(char *) &__builtin_va_alist ;
|
|||
|
|
|||
|
code = (p = (__gnuc_va_list) ((char *) (p) + (((sizeof ( enum tree_code) + sizeof (int) - 1) / sizeof (int)) * sizeof (int)) ), *(( enum tree_code *) (void *) ((char *) (p) - (((sizeof ( enum tree_code) + sizeof (int) - 1) / sizeof (int)) * sizeof (int)) ))) ;
|
|||
|
t = make_node (code);
|
|||
|
length = tree_code_length[(int) code];
|
|||
|
|
|||
|
for (i = 0; i < length; i++)
|
|||
|
((t)->exp.operands[ i]) = (p = (__gnuc_va_list) ((char *) (p) + (((sizeof ( tree) + sizeof (int) - 1) / sizeof (int)) * sizeof (int)) ), *(( tree *) (void *) ((char *) (p) - (((sizeof ( tree) + sizeof (int) - 1) / sizeof (int)) * sizeof (int)) ))) ;
|
|||
|
|
|||
|
;
|
|||
|
return t;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
tree
|
|||
|
build_parse_node ( __builtin_va_alist )
|
|||
|
int __builtin_va_alist;
|
|||
|
{
|
|||
|
register struct obstack *ambient_obstack = expression_obstack;
|
|||
|
va_list p;
|
|||
|
register enum tree_code code;
|
|||
|
register tree t;
|
|||
|
register int length;
|
|||
|
register int i;
|
|||
|
|
|||
|
expression_obstack = &temp_decl_obstack;
|
|||
|
|
|||
|
p=(char *) &__builtin_va_alist ;
|
|||
|
|
|||
|
code = (p = (__gnuc_va_list) ((char *) (p) + (((sizeof ( enum tree_code) + sizeof (int) - 1) / sizeof (int)) * sizeof (int)) ), *(( enum tree_code *) (void *) ((char *) (p) - (((sizeof ( enum tree_code) + sizeof (int) - 1) / sizeof (int)) * sizeof (int)) ))) ;
|
|||
|
t = make_node (code);
|
|||
|
length = tree_code_length[(int) code];
|
|||
|
|
|||
|
for (i = 0; i < length; i++)
|
|||
|
((t)->exp.operands[ i]) = (p = (__gnuc_va_list) ((char *) (p) + (((sizeof ( tree) + sizeof (int) - 1) / sizeof (int)) * sizeof (int)) ), *(( tree *) (void *) ((char *) (p) - (((sizeof ( tree) + sizeof (int) - 1) / sizeof (int)) * sizeof (int)) ))) ;
|
|||
|
|
|||
|
;
|
|||
|
expression_obstack = ambient_obstack;
|
|||
|
return t;
|
|||
|
}
|
|||
|
|
|||
|
# 2175 "/a/users/paul/gcc2/cc1/../common/tree.c"
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
tree
|
|||
|
build_decl (code, name, type)
|
|||
|
enum tree_code code;
|
|||
|
tree name, type;
|
|||
|
{
|
|||
|
register tree t;
|
|||
|
|
|||
|
t = make_node (code);
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
((t)->decl.name) = name;
|
|||
|
((t)->decl.assembler_name) = name;
|
|||
|
((t)->common.type) = type;
|
|||
|
|
|||
|
if (code == VAR_DECL || code == PARM_DECL || code == RESULT_DECL)
|
|||
|
layout_decl (t, 0);
|
|||
|
else if (code == FUNCTION_DECL)
|
|||
|
((t)->decl.mode) = QImode ;
|
|||
|
|
|||
|
return t;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
tree
|
|||
|
build_block (vars, tags, subblocks, supercontext, chain)
|
|||
|
tree vars, tags, subblocks, supercontext, chain;
|
|||
|
{
|
|||
|
register tree block = make_node (BLOCK);
|
|||
|
((block)->block.vars) = vars;
|
|||
|
((block)->block.type_tags) = tags;
|
|||
|
((block)->block.subblocks) = subblocks;
|
|||
|
((block)->block.supercontext) = supercontext;
|
|||
|
((block)->common.chain) = chain;
|
|||
|
return block;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
tree
|
|||
|
build_type_variant (type, constp, volatilep)
|
|||
|
tree type;
|
|||
|
int constp, volatilep;
|
|||
|
{
|
|||
|
register tree t, m = ((type)->type.main_variant) ;
|
|||
|
register struct obstack *ambient_obstack = current_obstack;
|
|||
|
|
|||
|
|
|||
|
constp = !!constp;
|
|||
|
volatilep = !!volatilep;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
if (!flag_gen_aux_info)
|
|||
|
for (t = m; t; t = ((t)->type.next_variant) )
|
|||
|
if (constp == ((t)->common.readonly_flag) && volatilep == ((t)->common.volatile_flag) )
|
|||
|
return t;
|
|||
|
|
|||
|
|
|||
|
current_obstack
|
|||
|
= ((type)->common.permanent_flag) ? &permanent_obstack : saveable_obstack;
|
|||
|
|
|||
|
t = copy_node (type);
|
|||
|
((t)->common.readonly_flag) = constp;
|
|||
|
((t)->common.volatile_flag) = volatilep;
|
|||
|
((t)->type.pointer_to) = 0;
|
|||
|
((t)->type.reference_to) = 0;
|
|||
|
|
|||
|
|
|||
|
((t)->type.next_variant) = ((m)->type.next_variant) ;
|
|||
|
((m)->type.next_variant) = t;
|
|||
|
|
|||
|
current_obstack = ambient_obstack;
|
|||
|
return t;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
tree
|
|||
|
change_main_variant (type, new_main)
|
|||
|
tree type, new_main;
|
|||
|
{
|
|||
|
tree t;
|
|||
|
tree omain = ((type)->type.main_variant) ;
|
|||
|
|
|||
|
|
|||
|
if (((omain)->type.next_variant) == type)
|
|||
|
((omain)->type.next_variant) = ((type)->type.next_variant) ;
|
|||
|
else
|
|||
|
for (t = ((omain)->type.next_variant) ; t && ((t)->type.next_variant) ;
|
|||
|
t = ((t)->type.next_variant) )
|
|||
|
if (((t)->type.next_variant) == type)
|
|||
|
{
|
|||
|
((t)->type.next_variant) = ((type)->type.next_variant) ;
|
|||
|
break;
|
|||
|
}
|
|||
|
|
|||
|
((type)->type.main_variant) = new_main;
|
|||
|
((type)->type.next_variant) = ((new_main)->type.next_variant) ;
|
|||
|
((new_main)->type.next_variant) = type;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
tree
|
|||
|
build_type_copy (type)
|
|||
|
tree type;
|
|||
|
{
|
|||
|
register tree t, m = ((type)->type.main_variant) ;
|
|||
|
register struct obstack *ambient_obstack = current_obstack;
|
|||
|
|
|||
|
current_obstack
|
|||
|
= ((type)->common.permanent_flag) ? &permanent_obstack : saveable_obstack;
|
|||
|
|
|||
|
t = copy_node (type);
|
|||
|
((t)->type.pointer_to) = 0;
|
|||
|
((t)->type.reference_to) = 0;
|
|||
|
|
|||
|
|
|||
|
((t)->type.next_variant) = ((m)->type.next_variant) ;
|
|||
|
((m)->type.next_variant) = t;
|
|||
|
|
|||
|
current_obstack = ambient_obstack;
|
|||
|
return t;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
struct type_hash
|
|||
|
{
|
|||
|
struct type_hash *next;
|
|||
|
int hashcode;
|
|||
|
tree type;
|
|||
|
};
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
struct type_hash *type_hash_table[59 ];
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
int
|
|||
|
type_hash_list (list)
|
|||
|
tree list;
|
|||
|
{
|
|||
|
register int hashcode;
|
|||
|
register tree tail;
|
|||
|
for (hashcode = 0, tail = list; tail; tail = ((tail)->common.chain) )
|
|||
|
hashcode += ((int ) (((tail)->list.value) ) & 0777777) ;
|
|||
|
return hashcode;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
tree
|
|||
|
type_hash_lookup (hashcode, type)
|
|||
|
int hashcode;
|
|||
|
tree type;
|
|||
|
{
|
|||
|
register struct type_hash *h;
|
|||
|
for (h = type_hash_table[hashcode % 59 ]; h; h = h->next)
|
|||
|
if (h->hashcode == hashcode
|
|||
|
&& ((enum tree_code) (h->type)->common.code) == ((enum tree_code) (type)->common.code)
|
|||
|
&& ((h->type)->common.type) == ((type)->common.type)
|
|||
|
&& (((h->type)->type.maxval) == ((type)->type.maxval)
|
|||
|
|| tree_int_cst_equal (((h->type)->type.maxval) ,
|
|||
|
((type)->type.maxval) ))
|
|||
|
&& (((h->type)->type.minval) == ((type)->type.minval)
|
|||
|
|| tree_int_cst_equal (((h->type)->type.minval) ,
|
|||
|
((type)->type.minval) ))
|
|||
|
&& (((h->type)->type.values) == ((type)->type.values)
|
|||
|
|| (((h->type)->type.values)
|
|||
|
&& ((enum tree_code) (((h->type)->type.values) )->common.code) == TREE_LIST
|
|||
|
&& ((type)->type.values)
|
|||
|
&& ((enum tree_code) (((type)->type.values) )->common.code) == TREE_LIST
|
|||
|
&& type_list_equal (((h->type)->type.values) , ((type)->type.values) ))))
|
|||
|
return h->type;
|
|||
|
return 0;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
void
|
|||
|
type_hash_add (hashcode, type)
|
|||
|
int hashcode;
|
|||
|
tree type;
|
|||
|
{
|
|||
|
register struct type_hash *h;
|
|||
|
|
|||
|
h = (struct type_hash *) oballoc (sizeof (struct type_hash));
|
|||
|
h->hashcode = hashcode;
|
|||
|
h->type = type;
|
|||
|
h->next = type_hash_table[hashcode % 59 ];
|
|||
|
type_hash_table[hashcode % 59 ] = h;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
int debug_no_type_hash = 0;
|
|||
|
|
|||
|
tree
|
|||
|
type_hash_canon (hashcode, type)
|
|||
|
int hashcode;
|
|||
|
tree type;
|
|||
|
{
|
|||
|
tree t1;
|
|||
|
|
|||
|
if (debug_no_type_hash)
|
|||
|
return type;
|
|||
|
|
|||
|
t1 = type_hash_lookup (hashcode, type);
|
|||
|
if (t1 != 0)
|
|||
|
{
|
|||
|
struct obstack *o
|
|||
|
= ((type)->common.permanent_flag) ? &permanent_obstack : saveable_obstack;
|
|||
|
({ struct obstack *__o = (o); void *__obj = ( type); if (__obj > (void *)__o->chunk && __obj < (void *)__o->chunk_limit) __o->next_free = __o->object_base = __obj; else (obstack_free) (__o, __obj); }) ;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
return t1;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
if (current_obstack == &permanent_obstack)
|
|||
|
type_hash_add (hashcode, type);
|
|||
|
|
|||
|
return type;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
int
|
|||
|
type_list_equal (l1, l2)
|
|||
|
tree l1, l2;
|
|||
|
{
|
|||
|
register tree t1, t2;
|
|||
|
for (t1 = l1, t2 = l2; t1 && t2; t1 = ((t1)->common.chain) , t2 = ((t2)->common.chain) )
|
|||
|
{
|
|||
|
if (((t1)->list.value) != ((t2)->list.value) )
|
|||
|
return 0;
|
|||
|
if (((t1)->list.purpose) != ((t2)->list.purpose) )
|
|||
|
{
|
|||
|
int cmp = simple_cst_equal (((t1)->list.purpose) , ((t2)->list.purpose) );
|
|||
|
if (cmp < 0)
|
|||
|
abort ();
|
|||
|
if (cmp == 0)
|
|||
|
return 0;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
return t1 == t2;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
int
|
|||
|
tree_int_cst_equal (t1, t2)
|
|||
|
tree t1, t2;
|
|||
|
{
|
|||
|
if (t1 == t2)
|
|||
|
return 1;
|
|||
|
if (t1 == 0 || t2 == 0)
|
|||
|
return 0;
|
|||
|
if (((enum tree_code) (t1)->common.code) == INTEGER_CST
|
|||
|
&& ((enum tree_code) (t2)->common.code) == INTEGER_CST
|
|||
|
&& ((t1)->int_cst.int_cst_low) == ((t2)->int_cst.int_cst_low)
|
|||
|
&& ((t1)->int_cst.int_cst_high) == ((t2)->int_cst.int_cst_high) )
|
|||
|
return 1;
|
|||
|
return 0;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
int
|
|||
|
tree_int_cst_lt (t1, t2)
|
|||
|
tree t1, t2;
|
|||
|
{
|
|||
|
if (t1 == t2)
|
|||
|
return 0;
|
|||
|
|
|||
|
if (!((((t1)->common.type) )->common.unsigned_flag) )
|
|||
|
return (((t1)->int_cst.int_cst_high) < (( t2)->int_cst.int_cst_high) || (((t1)->int_cst.int_cst_high) == (( t2)->int_cst.int_cst_high) && ((unsigned int ) ((t1)->int_cst.int_cst_low) < (unsigned int ) (( t2)->int_cst.int_cst_low) ))) ;
|
|||
|
return (((unsigned int ) ((t1)->int_cst.int_cst_high) < (unsigned int ) (( t2)->int_cst.int_cst_high) ) || (((unsigned int ) ((t1)->int_cst.int_cst_high) == (unsigned int ) (( t2)->int_cst.int_cst_high) ) && (((unsigned int ) ((t1)->int_cst.int_cst_low) < (unsigned int ) (( t2)->int_cst.int_cst_low) )))) ;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
int
|
|||
|
simple_cst_list_equal (l1, l2)
|
|||
|
tree l1, l2;
|
|||
|
{
|
|||
|
while (l1 != (tree) 0 && l2 != (tree) 0 )
|
|||
|
{
|
|||
|
int cmp = simple_cst_equal (((l1)->list.value) , ((l2)->list.value) );
|
|||
|
if (cmp < 0)
|
|||
|
abort ();
|
|||
|
if (cmp == 0)
|
|||
|
return 0;
|
|||
|
l1 = ((l1)->common.chain) ;
|
|||
|
l2 = ((l2)->common.chain) ;
|
|||
|
}
|
|||
|
return (l1 == l2);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
int
|
|||
|
simple_cst_equal (t1, t2)
|
|||
|
tree t1, t2;
|
|||
|
{
|
|||
|
register enum tree_code code1, code2;
|
|||
|
int cmp;
|
|||
|
|
|||
|
if (t1 == t2)
|
|||
|
return 1;
|
|||
|
if (t1 == 0 || t2 == 0)
|
|||
|
return 0;
|
|||
|
|
|||
|
code1 = ((enum tree_code) (t1)->common.code) ;
|
|||
|
code2 = ((enum tree_code) (t2)->common.code) ;
|
|||
|
|
|||
|
if (code1 == NOP_EXPR || code1 == CONVERT_EXPR || code1 == NON_LVALUE_EXPR)
|
|||
|
if (code2 == NOP_EXPR || code2 == CONVERT_EXPR || code2 == NON_LVALUE_EXPR)
|
|||
|
return simple_cst_equal (((t1)->exp.operands[ 0]) , ((t2)->exp.operands[ 0]) );
|
|||
|
else
|
|||
|
return simple_cst_equal (((t1)->exp.operands[ 0]) , t2);
|
|||
|
else if (code2 == NOP_EXPR || code2 == CONVERT_EXPR
|
|||
|
|| code2 == NON_LVALUE_EXPR)
|
|||
|
return simple_cst_equal (t1, ((t2)->exp.operands[ 0]) );
|
|||
|
|
|||
|
if (code1 != code2)
|
|||
|
return 0;
|
|||
|
|
|||
|
switch (code1)
|
|||
|
{
|
|||
|
case INTEGER_CST:
|
|||
|
return ((t1)->int_cst.int_cst_low) == ((t2)->int_cst.int_cst_low)
|
|||
|
&& ((t1)->int_cst.int_cst_high) == ((t2)->int_cst.int_cst_high) ;
|
|||
|
|
|||
|
case REAL_CST:
|
|||
|
return ((((t1)->real_cst.real_cst) ) == ( ((t2)->real_cst.real_cst) )) ;
|
|||
|
|
|||
|
case STRING_CST:
|
|||
|
return ((t1)->string.length) == ((t2)->string.length)
|
|||
|
&& !bcmp (((t1)->string.pointer) , ((t2)->string.pointer) ,
|
|||
|
((t1)->string.length) );
|
|||
|
|
|||
|
case CONSTRUCTOR:
|
|||
|
abort ();
|
|||
|
|
|||
|
case SAVE_EXPR:
|
|||
|
return simple_cst_equal (((t1)->exp.operands[ 0]) , ((t2)->exp.operands[ 0]) );
|
|||
|
|
|||
|
case CALL_EXPR:
|
|||
|
cmp = simple_cst_equal (((t1)->exp.operands[ 0]) , ((t2)->exp.operands[ 0]) );
|
|||
|
if (cmp <= 0)
|
|||
|
return cmp;
|
|||
|
return simple_cst_list_equal (((t1)->exp.operands[ 1]) , ((t2)->exp.operands[ 1]) );
|
|||
|
|
|||
|
case TARGET_EXPR:
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
if ((((enum tree_code) (((t1)->exp.operands[ 0]) )->common.code) == VAR_DECL
|
|||
|
&& ((((t1)->exp.operands[ 0]) )->decl.name) == (tree) 0
|
|||
|
&& ((((t1)->exp.operands[ 0]) )->decl.rtl) == 0)
|
|||
|
|| (((enum tree_code) (((t2)->exp.operands[ 0]) )->common.code) == VAR_DECL
|
|||
|
&& ((((t2)->exp.operands[ 0]) )->decl.name) == (tree) 0
|
|||
|
&& ((((t2)->exp.operands[ 0]) )->decl.rtl) == 0))
|
|||
|
cmp = 1;
|
|||
|
else
|
|||
|
cmp = simple_cst_equal (((t1)->exp.operands[ 0]) , ((t2)->exp.operands[ 0]) );
|
|||
|
if (cmp <= 0)
|
|||
|
return cmp;
|
|||
|
return simple_cst_equal (((t1)->exp.operands[ 1]) , ((t2)->exp.operands[ 1]) );
|
|||
|
|
|||
|
case WITH_CLEANUP_EXPR:
|
|||
|
cmp = simple_cst_equal (((t1)->exp.operands[ 0]) , ((t2)->exp.operands[ 0]) );
|
|||
|
if (cmp <= 0)
|
|||
|
return cmp;
|
|||
|
return simple_cst_equal (((t1)->exp.operands[ 2]) , ((t1)->exp.operands[ 2]) );
|
|||
|
|
|||
|
case COMPONENT_REF:
|
|||
|
if (((t1)->exp.operands[ 1]) == ((t2)->exp.operands[ 1]) )
|
|||
|
return simple_cst_equal (((t1)->exp.operands[ 0]) , ((t2)->exp.operands[ 0]) );
|
|||
|
return 0;
|
|||
|
|
|||
|
case VAR_DECL:
|
|||
|
case PARM_DECL:
|
|||
|
case CONST_DECL:
|
|||
|
case FUNCTION_DECL:
|
|||
|
return 0;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
switch ((*tree_code_type[(int) (code1)]) )
|
|||
|
{
|
|||
|
int i;
|
|||
|
case '1':
|
|||
|
case '2':
|
|||
|
case '<':
|
|||
|
case 'e':
|
|||
|
case 'r':
|
|||
|
case 's':
|
|||
|
cmp = 1;
|
|||
|
for (i=0; i<tree_code_length[(int) code1]; ++i)
|
|||
|
{
|
|||
|
cmp = simple_cst_equal (((t1)->exp.operands[ i]) , ((t2)->exp.operands[ i]) );
|
|||
|
if (cmp <= 0)
|
|||
|
return cmp;
|
|||
|
}
|
|||
|
return cmp;
|
|||
|
}
|
|||
|
|
|||
|
return -1;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
tree
|
|||
|
build_pointer_type (to_type)
|
|||
|
tree to_type;
|
|||
|
{
|
|||
|
register tree t = ((to_type)->type.pointer_to) ;
|
|||
|
register struct obstack *ambient_obstack = current_obstack;
|
|||
|
register struct obstack *ambient_saveable_obstack = saveable_obstack;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
if (t)
|
|||
|
return t;
|
|||
|
|
|||
|
|
|||
|
if (((to_type)->common.permanent_flag) )
|
|||
|
{
|
|||
|
current_obstack = &permanent_obstack;
|
|||
|
saveable_obstack = &permanent_obstack;
|
|||
|
}
|
|||
|
|
|||
|
t = make_node (POINTER_TYPE);
|
|||
|
((t)->common.type) = to_type;
|
|||
|
|
|||
|
|
|||
|
((to_type)->type.pointer_to) = t;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
layout_type (t);
|
|||
|
|
|||
|
current_obstack = ambient_obstack;
|
|||
|
saveable_obstack = ambient_saveable_obstack;
|
|||
|
return t;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
tree
|
|||
|
build_index_type (maxval)
|
|||
|
tree maxval;
|
|||
|
{
|
|||
|
register tree itype = make_node (INTEGER_TYPE);
|
|||
|
((itype)->type.precision) = ((sizetype)->type.precision) ;
|
|||
|
((itype)->type.minval) = build_int_2_wide ((int ) (0), (int ) ( 0)) ;
|
|||
|
((((itype)->type.minval) )->common.type) = sizetype;
|
|||
|
((itype)->type.maxval) = convert (sizetype, maxval);
|
|||
|
((itype)->type.mode) = ((sizetype)->type.mode) ;
|
|||
|
((itype)->type.size) = ((sizetype)->type.size) ;
|
|||
|
((itype)->type.align) = ((sizetype)->type.align) ;
|
|||
|
if (((enum tree_code) (maxval)->common.code) == INTEGER_CST)
|
|||
|
{
|
|||
|
int maxint = (int) ((maxval)->int_cst.int_cst_low) ;
|
|||
|
|
|||
|
|
|||
|
if ((((maxval)->int_cst.int_cst_high) < (( integer_zero_node)->int_cst.int_cst_high) || (((maxval)->int_cst.int_cst_high) == (( integer_zero_node)->int_cst.int_cst_high) && ((unsigned int ) ((maxval)->int_cst.int_cst_low) < (unsigned int ) (( integer_zero_node)->int_cst.int_cst_low) ))) )
|
|||
|
{
|
|||
|
((itype)->type.maxval) = build_int_2_wide ((int ) (-1), (int ) ( -1)) ;
|
|||
|
((((itype)->type.maxval) )->common.type) = sizetype;
|
|||
|
}
|
|||
|
return type_hash_canon (maxint < 0 ? ~maxint : maxint, itype);
|
|||
|
}
|
|||
|
else
|
|||
|
return itype;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
tree
|
|||
|
build_range_type (type, lowval, highval)
|
|||
|
tree type, lowval, highval;
|
|||
|
{
|
|||
|
register tree itype = make_node (INTEGER_TYPE);
|
|||
|
((itype)->common.type) = type;
|
|||
|
if (type == (tree) 0 )
|
|||
|
type = sizetype;
|
|||
|
((itype)->type.precision) = ((type)->type.precision) ;
|
|||
|
((itype)->type.minval) = convert (type, lowval);
|
|||
|
((itype)->type.maxval) = convert (type, highval);
|
|||
|
((itype)->type.mode) = ((type)->type.mode) ;
|
|||
|
((itype)->type.size) = ((type)->type.size) ;
|
|||
|
((itype)->type.align) = ((type)->type.align) ;
|
|||
|
if ((((enum tree_code) (lowval)->common.code) == INTEGER_CST)
|
|||
|
&& (((enum tree_code) (highval)->common.code) == INTEGER_CST))
|
|||
|
{
|
|||
|
int highint = ((highval)->int_cst.int_cst_low) ;
|
|||
|
int lowint = ((lowval)->int_cst.int_cst_low) ;
|
|||
|
int maxint = (int) (highint - lowint);
|
|||
|
return type_hash_canon (maxint < 0 ? ~maxint : maxint, itype);
|
|||
|
}
|
|||
|
else
|
|||
|
return itype;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
tree
|
|||
|
build_index_2_type (lowval,highval)
|
|||
|
tree lowval, highval;
|
|||
|
{
|
|||
|
return build_range_type ((tree) 0 , lowval, highval);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
int
|
|||
|
index_type_equal (itype1, itype2)
|
|||
|
tree itype1, itype2;
|
|||
|
{
|
|||
|
if (((enum tree_code) (itype1)->common.code) != ((enum tree_code) (itype2)->common.code) )
|
|||
|
return 0;
|
|||
|
if (((enum tree_code) (itype1)->common.code) == INTEGER_TYPE)
|
|||
|
{
|
|||
|
if (((itype1)->type.precision) != ((itype2)->type.precision)
|
|||
|
|| ((itype1)->type.mode) != ((itype2)->type.mode)
|
|||
|
|| ! simple_cst_equal (((itype1)->type.size) , ((itype2)->type.size) )
|
|||
|
|| ((itype1)->type.align) != ((itype2)->type.align) )
|
|||
|
return 0;
|
|||
|
if (simple_cst_equal (((itype1)->type.minval) , ((itype2)->type.minval) )
|
|||
|
&& simple_cst_equal (((itype1)->type.maxval) , ((itype2)->type.maxval) ))
|
|||
|
return 1;
|
|||
|
}
|
|||
|
return 0;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
tree
|
|||
|
build_array_type (elt_type, index_type)
|
|||
|
tree elt_type, index_type;
|
|||
|
{
|
|||
|
register tree t;
|
|||
|
int hashcode;
|
|||
|
|
|||
|
if (((enum tree_code) (elt_type)->common.code) == FUNCTION_TYPE)
|
|||
|
{
|
|||
|
error ("arrays of functions are not meaningful");
|
|||
|
elt_type = integer_type_node;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
build_pointer_type (elt_type);
|
|||
|
|
|||
|
|
|||
|
|
|||
|
t = make_node (ARRAY_TYPE);
|
|||
|
((t)->common.type) = elt_type;
|
|||
|
((t)->type.values) = index_type;
|
|||
|
|
|||
|
if (index_type == 0)
|
|||
|
{
|
|||
|
return t;
|
|||
|
}
|
|||
|
|
|||
|
hashcode = ((int ) (elt_type) & 0777777) + ((int ) (index_type) & 0777777) ;
|
|||
|
t = type_hash_canon (hashcode, t);
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
if (((t)->type.size) == 0)
|
|||
|
layout_type (t);
|
|||
|
return t;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
tree
|
|||
|
build_function_type (value_type, arg_types)
|
|||
|
tree value_type, arg_types;
|
|||
|
{
|
|||
|
register tree t;
|
|||
|
int hashcode;
|
|||
|
|
|||
|
if (((enum tree_code) (value_type)->common.code) == FUNCTION_TYPE
|
|||
|
|| ((enum tree_code) (value_type)->common.code) == ARRAY_TYPE)
|
|||
|
{
|
|||
|
error ("function return type cannot be function or array");
|
|||
|
value_type = integer_type_node;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
t = make_node (FUNCTION_TYPE);
|
|||
|
((t)->common.type) = value_type;
|
|||
|
((t)->type.values) = arg_types;
|
|||
|
|
|||
|
|
|||
|
hashcode = ((int ) (value_type) & 0777777) + type_hash_list (arg_types);
|
|||
|
t = type_hash_canon (hashcode, t);
|
|||
|
|
|||
|
if (((t)->type.size) == 0)
|
|||
|
layout_type (t);
|
|||
|
return t;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
tree
|
|||
|
build_reference_type (to_type)
|
|||
|
tree to_type;
|
|||
|
{
|
|||
|
register tree t = ((to_type)->type.reference_to) ;
|
|||
|
register struct obstack *ambient_obstack = current_obstack;
|
|||
|
register struct obstack *ambient_saveable_obstack = saveable_obstack;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
if (t)
|
|||
|
return t;
|
|||
|
|
|||
|
|
|||
|
if (((to_type)->common.permanent_flag) )
|
|||
|
{
|
|||
|
current_obstack = &permanent_obstack;
|
|||
|
saveable_obstack = &permanent_obstack;
|
|||
|
}
|
|||
|
|
|||
|
t = make_node (REFERENCE_TYPE);
|
|||
|
((t)->common.type) = to_type;
|
|||
|
|
|||
|
|
|||
|
((to_type)->type.reference_to) = t;
|
|||
|
|
|||
|
layout_type (t);
|
|||
|
|
|||
|
current_obstack = ambient_obstack;
|
|||
|
saveable_obstack = ambient_saveable_obstack;
|
|||
|
return t;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
tree
|
|||
|
build_method_type (basetype, type)
|
|||
|
tree basetype, type;
|
|||
|
{
|
|||
|
register tree t;
|
|||
|
int hashcode;
|
|||
|
|
|||
|
|
|||
|
t = make_node (METHOD_TYPE);
|
|||
|
|
|||
|
if (((enum tree_code) (type)->common.code) != FUNCTION_TYPE)
|
|||
|
abort ();
|
|||
|
|
|||
|
((t)->type.maxval) = ((basetype)->type.main_variant) ;
|
|||
|
((t)->common.type) = ((type)->common.type) ;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
((t)->type.values)
|
|||
|
= tree_cons ((tree) 0 ,
|
|||
|
build_pointer_type (basetype), ((type)->type.values) );
|
|||
|
|
|||
|
|
|||
|
hashcode = ((int ) (basetype) & 0777777) + ((int ) (type) & 0777777) ;
|
|||
|
t = type_hash_canon (hashcode, t);
|
|||
|
|
|||
|
if (((t)->type.size) == 0)
|
|||
|
layout_type (t);
|
|||
|
|
|||
|
return t;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
tree
|
|||
|
build_offset_type (basetype, type)
|
|||
|
tree basetype, type;
|
|||
|
{
|
|||
|
register tree t;
|
|||
|
int hashcode;
|
|||
|
|
|||
|
|
|||
|
t = make_node (OFFSET_TYPE);
|
|||
|
|
|||
|
((t)->type.maxval) = ((basetype)->type.main_variant) ;
|
|||
|
((t)->common.type) = type;
|
|||
|
|
|||
|
|
|||
|
hashcode = ((int ) (basetype) & 0777777) + ((int ) (type) & 0777777) ;
|
|||
|
t = type_hash_canon (hashcode, t);
|
|||
|
|
|||
|
if (((t)->type.size) == 0)
|
|||
|
layout_type (t);
|
|||
|
|
|||
|
return t;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
tree
|
|||
|
build_complex_type (component_type)
|
|||
|
tree component_type;
|
|||
|
{
|
|||
|
register tree t;
|
|||
|
int hashcode;
|
|||
|
|
|||
|
|
|||
|
t = make_node (COMPLEX_TYPE);
|
|||
|
|
|||
|
((t)->common.type) = ((component_type)->type.main_variant) ;
|
|||
|
((t)->common.volatile_flag) = ((component_type)->common.volatile_flag) ;
|
|||
|
((t)->common.readonly_flag) = ((component_type)->common.readonly_flag) ;
|
|||
|
|
|||
|
|
|||
|
hashcode = ((int ) (component_type) & 0777777) ;
|
|||
|
t = type_hash_canon (hashcode, t);
|
|||
|
|
|||
|
if (((t)->type.size) == 0)
|
|||
|
layout_type (t);
|
|||
|
|
|||
|
return t;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
tree
|
|||
|
get_unwidened (op, for_type)
|
|||
|
register tree op;
|
|||
|
tree for_type;
|
|||
|
{
|
|||
|
|
|||
|
|
|||
|
|
|||
|
register tree type = ((op)->common.type) ;
|
|||
|
register unsigned final_prec
|
|||
|
= ((for_type != 0 ? for_type : type)->type.precision) ;
|
|||
|
register int uns
|
|||
|
= (for_type != 0 && for_type != type
|
|||
|
&& final_prec > ((type)->type.precision)
|
|||
|
&& ((type)->common.unsigned_flag) );
|
|||
|
register tree win = op;
|
|||
|
|
|||
|
while (((enum tree_code) (op)->common.code) == NOP_EXPR)
|
|||
|
{
|
|||
|
register int bitschange
|
|||
|
= ((((op)->common.type) )->type.precision)
|
|||
|
- ((((((op)->exp.operands[ 0]) )->common.type) )->type.precision) ;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
if (bitschange < 0
|
|||
|
&& final_prec > ((((op)->common.type) )->type.precision) )
|
|||
|
break;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
op = ((op)->exp.operands[ 0]) ;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
if (bitschange > 0)
|
|||
|
{
|
|||
|
if (! uns || final_prec <= ((((op)->common.type) )->type.precision) )
|
|||
|
win = op;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
if ((uns || ((enum tree_code) (op)->common.code) == NOP_EXPR)
|
|||
|
&& ((((op)->common.type) )->common.unsigned_flag) )
|
|||
|
{
|
|||
|
uns = 1;
|
|||
|
win = op;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
if (((enum tree_code) (op)->common.code) == COMPONENT_REF
|
|||
|
|
|||
|
&& ((enum tree_code) (type)->common.code) != REAL_TYPE)
|
|||
|
{
|
|||
|
unsigned innerprec = ((((((op)->exp.operands[ 1]) )->decl.size) )->int_cst.int_cst_low) ;
|
|||
|
type = type_for_size (innerprec, ((((op)->exp.operands[ 1]) )->common.unsigned_flag) );
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
if (innerprec < ((((op)->common.type) )->type.precision)
|
|||
|
&& (for_type || ! ((((op)->exp.operands[ 1]) )->decl.bit_field_flag) )
|
|||
|
&& (! uns || final_prec <= innerprec
|
|||
|
|| ((((op)->exp.operands[ 1]) )->common.unsigned_flag) )
|
|||
|
&& type != 0)
|
|||
|
{
|
|||
|
win = build (COMPONENT_REF, type, ((op)->exp.operands[ 0]) ,
|
|||
|
((op)->exp.operands[ 1]) );
|
|||
|
((win)->common.side_effects_flag) = ((op)->common.side_effects_flag) ;
|
|||
|
((win)->common.volatile_flag) = ((op)->common.volatile_flag) ;
|
|||
|
((win)->common.raises_flag) = ((op)->common.raises_flag) ;
|
|||
|
}
|
|||
|
}
|
|||
|
return win;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
tree
|
|||
|
get_narrower (op, unsignedp_ptr)
|
|||
|
register tree op;
|
|||
|
int *unsignedp_ptr;
|
|||
|
{
|
|||
|
register int uns = 0;
|
|||
|
int first = 1;
|
|||
|
register tree win = op;
|
|||
|
|
|||
|
while (((enum tree_code) (op)->common.code) == NOP_EXPR)
|
|||
|
{
|
|||
|
register int bitschange
|
|||
|
= ((((op)->common.type) )->type.precision)
|
|||
|
- ((((((op)->exp.operands[ 0]) )->common.type) )->type.precision) ;
|
|||
|
|
|||
|
|
|||
|
if (bitschange < 0)
|
|||
|
break;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
op = ((op)->exp.operands[ 0]) ;
|
|||
|
|
|||
|
if (bitschange > 0)
|
|||
|
{
|
|||
|
|
|||
|
|
|||
|
if (first)
|
|||
|
uns = ((((op)->common.type) )->common.unsigned_flag) ;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
else if (uns != ((((op)->common.type) )->common.unsigned_flag) )
|
|||
|
break;
|
|||
|
first = 0;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
win = op;
|
|||
|
}
|
|||
|
|
|||
|
if (((enum tree_code) (op)->common.code) == COMPONENT_REF
|
|||
|
|
|||
|
&& ((enum tree_code) (((op)->common.type) )->common.code) != REAL_TYPE)
|
|||
|
{
|
|||
|
unsigned innerprec = ((((((op)->exp.operands[ 1]) )->decl.size) )->int_cst.int_cst_low) ;
|
|||
|
tree type = type_for_size (innerprec, ((op)->common.unsigned_flag) );
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
if (innerprec < ((((op)->common.type) )->type.precision)
|
|||
|
&& ! ((((op)->exp.operands[ 1]) )->decl.bit_field_flag)
|
|||
|
&& (first || uns == ((((op)->exp.operands[ 1]) )->common.unsigned_flag) )
|
|||
|
&& type != 0)
|
|||
|
{
|
|||
|
if (first)
|
|||
|
uns = ((((op)->exp.operands[ 1]) )->common.unsigned_flag) ;
|
|||
|
win = build (COMPONENT_REF, type, ((op)->exp.operands[ 0]) ,
|
|||
|
((op)->exp.operands[ 1]) );
|
|||
|
((win)->common.side_effects_flag) = ((op)->common.side_effects_flag) ;
|
|||
|
((win)->common.volatile_flag) = ((op)->common.volatile_flag) ;
|
|||
|
((win)->common.raises_flag) = ((op)->common.raises_flag) ;
|
|||
|
}
|
|||
|
}
|
|||
|
*unsignedp_ptr = uns;
|
|||
|
return win;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
int
|
|||
|
type_precision (type)
|
|||
|
register tree type;
|
|||
|
{
|
|||
|
return ((((enum tree_code) (type)->common.code) == INTEGER_TYPE
|
|||
|
|| ((enum tree_code) (type)->common.code) == ENUMERAL_TYPE
|
|||
|
|| ((enum tree_code) (type)->common.code) == REAL_TYPE)
|
|||
|
? ((type)->type.precision) : 32 );
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
int
|
|||
|
int_fits_type_p (c, type)
|
|||
|
tree c, type;
|
|||
|
{
|
|||
|
if (((type)->common.unsigned_flag) )
|
|||
|
return (!(((unsigned int ) ((((type)->type.maxval) )->int_cst.int_cst_high) < (unsigned int ) (( c)->int_cst.int_cst_high) ) || (((unsigned int ) ((((type)->type.maxval) )->int_cst.int_cst_high) == (unsigned int ) (( c)->int_cst.int_cst_high) ) && (((unsigned int ) ((((type)->type.maxval) )->int_cst.int_cst_low) < (unsigned int ) (( c)->int_cst.int_cst_low) ))))
|
|||
|
&& !(((unsigned int ) ((c)->int_cst.int_cst_high) < (unsigned int ) (( ((type)->type.minval) )->int_cst.int_cst_high) ) || (((unsigned int ) ((c)->int_cst.int_cst_high) == (unsigned int ) (( ((type)->type.minval) )->int_cst.int_cst_high) ) && (((unsigned int ) ((c)->int_cst.int_cst_low) < (unsigned int ) (( ((type)->type.minval) )->int_cst.int_cst_low) ))))
|
|||
|
&& (((c)->int_cst.int_cst_high) >= 0 || ((((c)->common.type) )->common.unsigned_flag) ));
|
|||
|
else
|
|||
|
return (!(((((type)->type.maxval) )->int_cst.int_cst_high) < (( c)->int_cst.int_cst_high) || (((((type)->type.maxval) )->int_cst.int_cst_high) == (( c)->int_cst.int_cst_high) && ((unsigned int ) ((((type)->type.maxval) )->int_cst.int_cst_low) < (unsigned int ) (( c)->int_cst.int_cst_low) )))
|
|||
|
&& !(((c)->int_cst.int_cst_high) < (( ((type)->type.minval) )->int_cst.int_cst_high) || (((c)->int_cst.int_cst_high) == (( ((type)->type.minval) )->int_cst.int_cst_high) && ((unsigned int ) ((c)->int_cst.int_cst_low) < (unsigned int ) (( ((type)->type.minval) )->int_cst.int_cst_low) )))
|
|||
|
&& (((c)->int_cst.int_cst_high) >= 0 || !((((c)->common.type) )->common.unsigned_flag) ));
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
tree
|
|||
|
decl_function_context (decl)
|
|||
|
tree decl;
|
|||
|
{
|
|||
|
tree context;
|
|||
|
|
|||
|
if (((enum tree_code) (decl)->common.code) == ERROR_MARK)
|
|||
|
return 0;
|
|||
|
|
|||
|
if (((enum tree_code) (decl)->common.code) == SAVE_EXPR)
|
|||
|
context = ((decl)->exp.operands[ 1]) ;
|
|||
|
else
|
|||
|
context = ((decl)->decl.context) ;
|
|||
|
|
|||
|
while (context && ((enum tree_code) (context)->common.code) != FUNCTION_DECL)
|
|||
|
{
|
|||
|
if (((enum tree_code) (context)->common.code) == RECORD_TYPE
|
|||
|
|| ((enum tree_code) (context)->common.code) == UNION_TYPE)
|
|||
|
context = ((context)->type.context) ;
|
|||
|
else if (((enum tree_code) (context)->common.code) == TYPE_DECL)
|
|||
|
context = ((context)->decl.context) ;
|
|||
|
else if (((enum tree_code) (context)->common.code) == BLOCK)
|
|||
|
context = ((context)->block.supercontext) ;
|
|||
|
else
|
|||
|
|
|||
|
abort ();
|
|||
|
}
|
|||
|
|
|||
|
return context;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
tree
|
|||
|
decl_type_context (decl)
|
|||
|
tree decl;
|
|||
|
{
|
|||
|
tree context = ((decl)->decl.context) ;
|
|||
|
|
|||
|
while (context)
|
|||
|
{
|
|||
|
if (((enum tree_code) (context)->common.code) == RECORD_TYPE
|
|||
|
|| ((enum tree_code) (context)->common.code) == UNION_TYPE)
|
|||
|
return context;
|
|||
|
if (((enum tree_code) (context)->common.code) == TYPE_DECL
|
|||
|
|| ((enum tree_code) (context)->common.code) == FUNCTION_DECL)
|
|||
|
context = ((context)->decl.context) ;
|
|||
|
else if (((enum tree_code) (context)->common.code) == BLOCK)
|
|||
|
context = ((context)->block.supercontext) ;
|
|||
|
else
|
|||
|
|
|||
|
abort ();
|
|||
|
}
|
|||
|
return (tree) 0 ;
|
|||
|
}
|
|||
|
|
|||
|
void
|
|||
|
print_obstack_statistics (str, o)
|
|||
|
char *str;
|
|||
|
struct obstack *o;
|
|||
|
{
|
|||
|
struct _obstack_chunk *chunk = o->chunk;
|
|||
|
int n_chunks = 0;
|
|||
|
int n_alloc = 0;
|
|||
|
|
|||
|
while (chunk)
|
|||
|
{
|
|||
|
n_chunks += 1;
|
|||
|
n_alloc += chunk->limit - &chunk->contents[0];
|
|||
|
chunk = chunk->prev;
|
|||
|
}
|
|||
|
fprintf ((&__sF[2]) , "obstack %s: %d bytes, %d chunks\n",
|
|||
|
str, n_alloc, n_chunks);
|
|||
|
}
|
|||
|
void
|
|||
|
dump_tree_statistics ()
|
|||
|
{
|
|||
|
int i;
|
|||
|
int total_nodes, total_bytes;
|
|||
|
|
|||
|
fprintf ((&__sF[2]) , "\n??? tree nodes created\n\n");
|
|||
|
# 3337 "/a/users/paul/gcc2/cc1/../common/tree.c"
|
|||
|
|
|||
|
fprintf ((&__sF[2]) , "(No per-node statistics)\n");
|
|||
|
|
|||
|
print_lang_statistics ();
|
|||
|
}
|