1 //===-- Symbols.def - Metadata about SymExpr kinds --------------*- C++ -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
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:
14 // SYMBOL(Id, Parent) - for specific SymExpr sub-classes, reserving the
15 // IdKind identifier for its kind enumeration value.
17 // ABSTRACT_SYMBOL(Id, Parent) - for abstract symbol classes,
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.
23 //===----------------------------------------------------------------------===//
26 #define SYMBOL(Id, Parent)
29 #ifndef ABSTRACT_SYMBOL
30 #define ABSTRACT_SYMBOL(Id, Parent)
34 #define SYMBOL_RANGE(Id, First, Last)
37 ABSTRACT_SYMBOL(BinarySymExpr, SymExpr)
38 SYMBOL(IntSymExpr, BinarySymExpr)
39 SYMBOL(SymIntExpr, BinarySymExpr)
40 SYMBOL(SymSymExpr, BinarySymExpr)
41 SYMBOL_RANGE(BINARYSYMEXPRS, IntSymExprKind, SymSymExprKind)
43 SYMBOL(SymbolCast, SymExpr)
45 ABSTRACT_SYMBOL(SymbolData, SymExpr)
46 SYMBOL(SymbolConjured, SymbolData)
47 SYMBOL(SymbolDerived, SymbolData)
48 SYMBOL(SymbolExtent, SymbolData)
49 SYMBOL(SymbolMetadata, SymbolData)
50 SYMBOL(SymbolRegionValue, SymbolData)
51 SYMBOL_RANGE(SYMBOLS, SymbolConjuredKind, SymbolRegionValueKind)
54 #undef ABSTRACT_SYMBOL