1303233Sdim//===-- Symbols.def - Metadata about SymExpr kinds --------------*- C++ -*-===// 2303233Sdim// 3353358Sdim// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4353358Sdim// See https://llvm.org/LICENSE.txt for license information. 5353358Sdim// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6303233Sdim// 7303233Sdim//===----------------------------------------------------------------------===// 8303233Sdim// 9303233Sdim// The list of symbols (SymExpr sub-classes) used in the Static Analyzer. 10303233Sdim// In order to use this information, users of this file must define 11303233Sdim// one or more of the three macros: 12303233Sdim// 13303233Sdim// SYMBOL(Id, Parent) - for specific SymExpr sub-classes, reserving the 14303233Sdim// IdKind identifier for its kind enumeration value. 15303233Sdim// 16303233Sdim// ABSTRACT_SYMBOL(Id, Parent) - for abstract symbol classes, 17303233Sdim// 18303233Sdim// SYMBOL_RANGE(Id, First, Last) - for ranges of kind-enums, 19303233Sdim// allowing to determine abstract class of a symbol 20303233Sdim// based on the kind enumeration value. 21303233Sdim// 22303233Sdim//===----------------------------------------------------------------------===// 23303233Sdim 24303233Sdim#ifndef SYMBOL 25303233Sdim#define SYMBOL(Id, Parent) 26303233Sdim#endif 27303233Sdim 28303233Sdim#ifndef ABSTRACT_SYMBOL 29303233Sdim#define ABSTRACT_SYMBOL(Id, Parent) 30303233Sdim#endif 31303233Sdim 32303233Sdim#ifndef SYMBOL_RANGE 33303233Sdim#define SYMBOL_RANGE(Id, First, Last) 34303233Sdim#endif 35303233Sdim 36303233SdimABSTRACT_SYMBOL(BinarySymExpr, SymExpr) 37303233Sdim SYMBOL(IntSymExpr, BinarySymExpr) 38303233Sdim SYMBOL(SymIntExpr, BinarySymExpr) 39303233Sdim SYMBOL(SymSymExpr, BinarySymExpr) 40303233SdimSYMBOL_RANGE(BINARYSYMEXPRS, IntSymExprKind, SymSymExprKind) 41303233Sdim 42303233SdimSYMBOL(SymbolCast, SymExpr) 43303233Sdim 44303233SdimABSTRACT_SYMBOL(SymbolData, SymExpr) 45303233Sdim SYMBOL(SymbolConjured, SymbolData) 46303233Sdim SYMBOL(SymbolDerived, SymbolData) 47303233Sdim SYMBOL(SymbolExtent, SymbolData) 48303233Sdim SYMBOL(SymbolMetadata, SymbolData) 49303233Sdim SYMBOL(SymbolRegionValue, SymbolData) 50303233SdimSYMBOL_RANGE(SYMBOLS, SymbolConjuredKind, SymbolRegionValueKind) 51303233Sdim 52303233Sdim#undef SYMBOL 53303233Sdim#undef ABSTRACT_SYMBOL 54303233Sdim#undef SYMBOL_RANGE 55