Home | History | Annotate | Download | only in PathSensitive
      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 
     37 ABSTRACT_SYMBOL(BinarySymExpr, SymExpr)
     38   SYMBOL(IntSymExpr, BinarySymExpr)
     39   SYMBOL(SymIntExpr, BinarySymExpr)
     40   SYMBOL(SymSymExpr, BinarySymExpr)
     41 SYMBOL_RANGE(BINARYSYMEXPRS, IntSymExprKind, SymSymExprKind)
     42 
     43 SYMBOL(SymbolCast, SymExpr)
     44 
     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)
     52 
     53 #undef SYMBOL
     54 #undef ABSTRACT_SYMBOL
     55 #undef SYMBOL_RANGE
     56