c-common.def 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. /* This file contains the definitions and documentation for the
  2. additional tree codes used in the GNU C compiler (see tree.def
  3. for the standard codes).
  4. Copyright (C) 1987-2015 Free Software Foundation, Inc.
  5. Written by Benjamin Chelf <chelf@codesourcery.com>
  6. This file is part of GCC.
  7. GCC is free software; you can redistribute it and/or modify it under
  8. the terms of the GNU General Public License as published by the Free
  9. Software Foundation; either version 3, or (at your option) any later
  10. version.
  11. GCC is distributed in the hope that it will be useful, but WITHOUT ANY
  12. WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13. FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
  14. for more details.
  15. You should have received a copy of the GNU General Public License
  16. along with GCC; see the file COPYING3. If not see
  17. <http://www.gnu.org/licenses/>. */
  18. /* Tree nodes used in the C frontend. These are also shared with the
  19. C++ and Objective C frontends. */
  20. /* A C_MAYBE_CONST_EXPR, currently only used for C and Objective C,
  21. tracks information about constancy of an expression and VLA type
  22. sizes or VM expressions from typeof that need to be evaluated
  23. before the main expression. It is used during parsing and removed
  24. in c_fully_fold. C_MAYBE_CONST_EXPR_PRE is the expression to
  25. evaluate first, if not NULL; C_MAYBE_CONST_EXPR_EXPR is the main
  26. expression. If C_MAYBE_CONST_EXPR_INT_OPERANDS is set then the
  27. expression may be used in an unevaluated part of an integer
  28. constant expression, but not in an evaluated part. If
  29. C_MAYBE_CONST_EXPR_NON_CONST is set then the expression contains
  30. something that cannot occur in an evaluated part of a constant
  31. expression (or outside of sizeof in C90 mode); otherwise it does
  32. not. */
  33. DEFTREECODE (C_MAYBE_CONST_EXPR, "c_maybe_const_expr", tcc_expression, 2)
  34. /* An EXCESS_PRECISION_EXPR, currently only used for C and Objective
  35. C, represents an expression evaluated in greater range or precision
  36. than its type. The type of the EXCESS_PRECISION_EXPR is the
  37. semantic type while the operand represents what is actually being
  38. evaluated. */
  39. DEFTREECODE (EXCESS_PRECISION_EXPR, "excess_precision_expr", tcc_expression, 1)
  40. /* Used to represent a user-defined literal.
  41. The operands are an IDENTIFIER for the suffix, the VALUE of the literal,
  42. and for numeric literals the original string representation of the
  43. number. */
  44. DEFTREECODE (USERDEF_LITERAL, "userdef_literal", tcc_exceptional, 3)
  45. /* Represents a 'sizeof' expression during C++ template expansion,
  46. or for the purpose of -Wsizeof-pointer-memaccess warning. */
  47. DEFTREECODE (SIZEOF_EXPR, "sizeof_expr", tcc_expression, 1)
  48. /* Array Notation expression.
  49. Operand 0 is the array.
  50. Operand 1 is the starting array index.
  51. Operand 2 contains the number of elements you need to access.
  52. Operand 3 is the stride. */
  53. DEFTREECODE (ARRAY_NOTATION_REF, "array_notation_ref", tcc_reference, 4)
  54. /*
  55. Local variables:
  56. mode:c
  57. End:
  58. */