expr.h 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. /*
  2. * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
  3. * See the copyright notice in the ACK home directory, in the file "Copyright".
  4. */
  5. /* $Id$ */
  6. #ifndef UTIL_NCGG_EXPR_H
  7. #define UTIL_NCGG_EXPR_H
  8. typedef struct expr {
  9. int ex_typ;
  10. short ex_regset[SZOFSET(MAXREGS)];
  11. int ex_index;
  12. } expr_t,*expr_p;
  13. #define TYPINT 1
  14. #define TYPBOOL 2
  15. #define TYPADDR 3
  16. #define TYPREG 4
  17. /* When the type is register the regset contains the set of
  18. possible registers for checking purposes only.
  19. */
  20. /* util/ncgg/expr.c */
  21. int i_expr(expr_t e);
  22. int b_expr(expr_t e);
  23. expr_t make_expr(int type, int operator, int op1, int op2);
  24. expr_t regno_expr(int regno);
  25. expr_t ident_expr(char *name);
  26. expr_t subreg_expr(int tokarg, int subreg);
  27. void subregset(short *sp, int subreg, short *regset);
  28. int membset(int setno, char *name, short *regset, char *appearance, int restyp, int *typp);
  29. expr_t memb_expr(int setno, char *name, char *appearance, int tokarg);
  30. expr_t tokm_expr(int tokarg, char *name);
  31. expr_t perc_ident_expr(char *name);
  32. expr_t all_expr(int all_no, int subreg);
  33. int eq2expr(expr_t e1, expr_t e2);
  34. int ne2expr(expr_t e1, expr_t e2);
  35. expr_t sum_expr(expr_t e1, expr_t e2);
  36. expr_t iextoaddr(expr_t e);
  37. expr_t regvar_expr(expr_t e, int regtyp);
  38. void initnodes(void);
  39. int ex_lookup(int operator, int lnode, int rnode);
  40. #endif /* UTIL_NCGG_EXPR_H */