You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

80 lines
4.7KB

  1. /****************************************************************************
  2. * *
  3. * GNAT COMPILER COMPONENTS *
  4. * *
  5. * GNAT-SPECIFIC GCC TREE CODES *
  6. * *
  7. * Specification *
  8. * *
  9. * Copyright (C) 1992-2009, Free Software Foundation, Inc. *
  10. * *
  11. * GNAT is free software; you can redistribute it and/or modify it under *
  12. * terms of the GNU General Public License as published by the Free Soft- *
  13. * ware Foundation; either version 3, or (at your option) any later ver- *
  14. * sion. GNAT is distributed in the hope that it will be useful, but WITH- *
  15. * OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY *
  16. * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License *
  17. * for more details. You should have received a copy of the GNU General *
  18. * Public License along with GCC; see the file COPYING3. If not see *
  19. * <http://www.gnu.org/licenses/>. *
  20. * *
  21. * GNAT was originally developed by the GNAT team at New York University. *
  22. * Extensive contributions were provided by Ada Core Technologies Inc. *
  23. * *
  24. ****************************************************************************/
  25. /* A type that is an unconstrained array. This node is never passed to GCC.
  26. TREE_TYPE is the type of the fat pointer and TYPE_OBJECT_RECORD_TYPE is
  27. the type of a record containing the template and data. */
  28. DEFTREECODE (UNCONSTRAINED_ARRAY_TYPE, "unconstrained_array_type", tcc_type, 0)
  29. /* A reference to an unconstrained array. This node only exists as an
  30. intermediate node during the translation of a GNAT tree to a GCC tree;
  31. it is never passed to GCC. The only field used is operand 0, which
  32. is the fat pointer object. */
  33. DEFTREECODE (UNCONSTRAINED_ARRAY_REF, "unconstrained_array_ref",
  34. tcc_reference, 1)
  35. /* An expression that returns an RTL suitable for its type. Operand 0
  36. is an expression to be evaluated for side effects only. */
  37. DEFTREECODE (NULL_EXPR, "null_expr", tcc_expression, 1)
  38. /* Same as PLUS_EXPR, except that no modulo reduction is applied.
  39. This is used for loops and never shows up in the tree. */
  40. DEFTREECODE (PLUS_NOMOD_EXPR, "plus_nomod_expr", tcc_binary, 2)
  41. /* Same as MINUS_EXPR, except that no modulo reduction is applied.
  42. This is used for loops and never shows up in the tree. */
  43. DEFTREECODE (MINUS_NOMOD_EXPR, "minus_nomod_expr", tcc_binary, 2)
  44. /* An expression that computes an exponentiation. Operand 0 is the base and
  45. Operand 1 is the exponent. This node is never passed to GCC: it is only
  46. used internally to describe fixed point types scale factors. */
  47. DEFTREECODE (POWER_EXPR, "power_expr", tcc_binary, 2)
  48. /* Same as ADDR_EXPR, except that if the operand represents a bit field,
  49. return the address of the byte containing the bit. This is used
  50. for the Address attribute and never shows up in the tree. */
  51. DEFTREECODE (ATTR_ADDR_EXPR, "attr_addr_expr", tcc_reference, 1)
  52. /* Here are the tree codes for the statement types known to Ada. These
  53. must be at the end of this file to allow IS_ADA_STMT to work. */
  54. /* This is how record_code_position and insert_code_for work. The former
  55. makes this tree node, whose operand is a statement. The latter inserts
  56. the actual statements into this node. Gimplification consists of
  57. just returning the inner statement. */
  58. DEFTREECODE (STMT_STMT, "stmt_stmt", tcc_statement, 1)
  59. /* A loop. LOOP_STMT_COND is the test to exit the loop. LOOP_STMT_UPDATE
  60. is the statement to update the loop iteration variable at the continue
  61. point. LOOP_STMT_BODY are the statements in the body of the loop. And
  62. LOOP_STMT_LABEL points to the LABEL_DECL of the end label of the loop. */
  63. DEFTREECODE (LOOP_STMT, "loop_stmt", tcc_statement, 4)
  64. /* Conditionally exit a loop. EXIT_STMT_COND is the condition, which, if
  65. true, will cause the loop to be exited. If no condition is specified,
  66. the loop is unconditionally exited. EXIT_STMT_LABEL is the end label
  67. corresponding to the loop to exit. */
  68. DEFTREECODE (EXIT_STMT, "exit_stmt", tcc_statement, 2)