Subversion Repositories QNX 8.QNX8 LLVM/Clang compiler suite

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
14 pmbaty 1
//===-- SVals.def - Metadata about SVal kinds -------------------*- C++ -*-===//
2
//
3
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
// See https://llvm.org/LICENSE.txt for license information.
5
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
//
7
//===----------------------------------------------------------------------===//
8
//
9
// The list of symbolic values (SVal kinds and sub-kinds) used in the Static
10
// Analyzer. The distinction between loc:: and nonloc:: SVal namespaces is
11
// currently hardcoded, because it is too peculiar and explicit to be handled
12
// uniformly. In order to use this information, users of this file must define
13
// one or more of the following macros:
14
//
15
// BASIC_SVAL(Id, Parent) - for specific SVal sub-kinds, which are
16
// neither in loc:: nor in nonloc:: namespace; these classes occupy
17
// their own base kind IdKind.
18
//
19
// ABSTRACT_SVAL(Id, Parent) - for abstract SVal classes which are
20
// neither in loc:: nor in nonloc:: namespace,
21
//
22
// ABSTRACT_SVAL_WITH_KIND(Id, Parent) - for SVal classes which are also
23
// neither in loc:: nor in nonloc:: namespace, but occupy a whole base kind
24
// identifier IdKind, much like BASIC_SVALs.
25
//
26
// LOC_SVAL(Id, Parent) - for values in loc:: namespace, which occupy a sub-kind
27
// loc::IdKind.
28
//
29
// NONLOC_SVAL(Id, Parent) - for values in nonloc:: namespace, which occupy a
30
// sub-kind nonloc::IdKind.
31
//
32
//===----------------------------------------------------------------------===//
33
 
34
#ifndef BASIC_SVAL
35
#define BASIC_SVAL(Id, Parent)
36
#endif
37
 
38
#ifndef ABSTRACT_SVAL
39
#define ABSTRACT_SVAL(Id, Parent)
40
#endif
41
 
42
#ifndef ABSTRACT_SVAL_WITH_KIND
43
#define ABSTRACT_SVAL_WITH_KIND(Id, Parent) ABSTRACT_SVAL(Id, Parent)
44
#endif
45
 
46
#ifndef LOC_SVAL
47
#define LOC_SVAL(Id, Parent)
48
#endif
49
 
50
#ifndef NONLOC_SVAL
51
#define NONLOC_SVAL(Id, Parent)
52
#endif
53
 
54
BASIC_SVAL(UndefinedVal, SVal)
55
ABSTRACT_SVAL(DefinedOrUnknownSVal, SVal)
56
  BASIC_SVAL(UnknownVal, DefinedOrUnknownSVal)
57
  ABSTRACT_SVAL(DefinedSVal, DefinedOrUnknownSVal)
58
    ABSTRACT_SVAL_WITH_KIND(Loc, DefinedSVal)
59
      LOC_SVAL(ConcreteInt, Loc)
60
      LOC_SVAL(GotoLabel, Loc)
61
      LOC_SVAL(MemRegionVal, Loc)
62
    ABSTRACT_SVAL_WITH_KIND(NonLoc, DefinedSVal)
63
      NONLOC_SVAL(CompoundVal, NonLoc)
64
      NONLOC_SVAL(ConcreteInt, NonLoc)
65
      NONLOC_SVAL(LazyCompoundVal, NonLoc)
66
      NONLOC_SVAL(LocAsInteger, NonLoc)
67
      NONLOC_SVAL(SymbolVal, NonLoc)
68
      NONLOC_SVAL(PointerToMember, NonLoc)
69
 
70
#undef NONLOC_SVAL
71
#undef LOC_SVAL
72
#undef ABSTRACT_SVAL_WITH_KIND
73
#undef ABSTRACT_SVAL
74
#undef BASIC_SVAL