• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1//===-- Symbols.def - Metadata about SymExpr kinds --------------*- C++ -*-===//
2//
3//                     The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9//
10// The list of symbols (SymExpr sub-classes) used in the Static Analyzer.
11// In order to use this information, users of this file must define
12// one or more of the three macros:
13//
14// SYMBOL(Id, Parent) - for specific SymExpr sub-classes, reserving the
15// IdKind identifier for its kind enumeration value.
16//
17// ABSTRACT_SYMBOL(Id, Parent) - for abstract symbol classes,
18//
19// SYMBOL_RANGE(Id, First, Last) - for ranges of kind-enums,
20// allowing to determine abstract class of a symbol
21// based on the kind enumeration value.
22//
23//===----------------------------------------------------------------------===//
24
25#ifndef SYMBOL
26#define SYMBOL(Id, Parent)
27#endif
28
29#ifndef ABSTRACT_SYMBOL
30#define ABSTRACT_SYMBOL(Id, Parent)
31#endif
32
33#ifndef SYMBOL_RANGE
34#define SYMBOL_RANGE(Id, First, Last)
35#endif
36
37ABSTRACT_SYMBOL(BinarySymExpr, SymExpr)
38  SYMBOL(IntSymExpr, BinarySymExpr)
39  SYMBOL(SymIntExpr, BinarySymExpr)
40  SYMBOL(SymSymExpr, BinarySymExpr)
41SYMBOL_RANGE(BINARYSYMEXPRS, IntSymExprKind, SymSymExprKind)
42
43SYMBOL(SymbolCast, SymExpr)
44
45ABSTRACT_SYMBOL(SymbolData, SymExpr)
46  SYMBOL(SymbolConjured, SymbolData)
47  SYMBOL(SymbolDerived, SymbolData)
48  SYMBOL(SymbolExtent, SymbolData)
49  SYMBOL(SymbolMetadata, SymbolData)
50  SYMBOL(SymbolRegionValue, SymbolData)
51SYMBOL_RANGE(SYMBOLS, SymbolConjuredKind, SymbolRegionValueKind)
52
53#undef SYMBOL
54#undef ABSTRACT_SYMBOL
55#undef SYMBOL_RANGE
56